在从Windows托pipe的数据库集群创build的Linux上还原pg_basebackup

目前我正在研究如何为HA postgresql体系结构设置stream式复制。 但是这个问题对于我们在一般的混合环境中的备份/恢复和维护也是相关的。

我们的“主”postgresql服务器运行在Windows机器上。 我每天都在使用pg_dump创build逻辑备份,并且使用pg_basebackup和WAL归档来创build一个应该提供PITR的完整备份(我还没有testing过)。

下一步是build立一个通过stream式复制保存副本的从机。 由于更好的支持postgresql生态系统,这个新的主机运行的是Ubuntu Server 16.04 LTS。

  1. pg_basebackup -h <main host> -D <datadirectory> --xlog-method=stream我初始化了从机数据目录。
  2. 然后,我不得不修复一些符号链接到表空间文件,因为这些链接指向Windowspath而不是Linux文件系统。
  3. 接下来,我使用standby_mode = on和connectioninfo创build了recovery.conf文件
  4. 我validation了,服务器被configuration为hot_standby = on并启动了守护进程

现在我遇到问题,因为postgres告诉我, “数据库语言环境(英语_United_States.1252明显是Windows特定的)是不兼容的操作系统”

那么,我知道,1252是一个Windows特定的语言环境,我应该在Linux上使用en_US.UTF8,但在像这样的混合环境中,我应该:

  • 初始化我们在Windows上的主数据库还有一个en_US.UTF8语言环境?
  • 这甚至可能吗?
  • 为什么是pg_basebackup格式的操作系统具体,还是有一个备份格式不是?
  • 有没有任何命令行标志来设置翻译?
  • 我也很感谢它只使用Linux(甚至只有Windows),但恐怕我们的客户将会相当长时间地依赖于这两个操作系统。

您不能恢复像pg_basebackup在不同架构上创建的文件系统备份,例如从Linux上的Windows恢复备份。

在这种情况下,流式响应也是不可能的。

从PostgreSQL v10开始,您可能会考虑逻辑复制。