我想将windows服务器的postgresql数据复制到linux服务器,我知道如何在相同的操作系统之间进行复制,但该方法不适用于windows和linux。如果是,那么更好的方法是什么?
答案 0 :(得分:1)
您不能在不同的操作系统之间使用流式复制。
查看at the PostgreSQL Wiki以获取复制解决方案列表。其中一些应该适合你。
从PostgreSQL v10开始,您可以考虑logical replication。
答案 1 :(得分:1)
使用Postgresql 9.5.21作为Windows 2012 R2
上的主服务器和Ubuntu 14.04
上的从机来完成此操作。
您必须注意以下几点:
最相似的CPU(页面大小,体系结构,寄存器)。因此,您不能混合使用64/32位或使用具有不同字节序或页面大小的CPU;
因此,我发现Windows Server上已经安装了PG。编辑postgresql.conf
以启用副本和PITR,并编辑pg_hba.conf
以允许连接。
然后在Ubuntu上移动,并且在PG停止的情况下,我通过以下方式从主服务器获取了
: pg_basebackup -D /tmp/db/ -X stream -R -U postgres -h ip-master
然后修改配置,并用/tmp/db
替换数据目录。
启动从属服务器,并且已启动并正在运行,但请注意以下内容:
2020-03-18 21:05:31.598 CET [44640]日志:数据库系统已准备好接受读取 仅连接
2020-03-18 21:05:31.631 CET [44645]日志:开始在时间轴1上以36 / C2000000从主要流传输WAL
2020-03-18 21:05:31.905 CET [44646] [未知] @ [未知]日志:不完整的启动数据包
2020-03-18 21:05:32.416 CET [44649] postgres @ postgres致命:数据库语言环境与操作系统不兼容
2020-03-18 21:05:32.416 CET [44649] postgres @ postgres详细信息:数据库已使用LC_COLLATE“ Italian_Italy.1252”初始化,setlocale()无法识别该数据库。
2020-03-18 21:05:32.416 CET [44649] postgres @ postgres提示:使用其他语言环境重新创建数据库或安装缺少的语言环境。
有趣的是:复制有效,但是您无法连接到数据库。
无论如何,如果您在Windows上原始复制数据目录,它的工作就像一个超级按钮。
当然,如果您使用UTF-8重新创建集群,则完全没有问题。
n.b .:非常感谢官方IRC PG频道上的incognito
和ilmari
的提示。