在Linux上恢复从Windows托管数据库集群创建的pg_basebackup

时间:2017-06-28 07:31:10

标签: linux windows postgresql high-availability backup-strategies

目前我正在研究如何为HA postgresql架构设置流复制。但是这个问题对于我们在混合环境中的备份/恢复和维护也很重要。

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

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

  1. 使用pg_basebackup -h <main host> -D <datadirectory> --xlog-method=stream我初始化了slave datadirectory。
  2. 然后我不得不修改一些符号链接到表空间文件,因为它们指向Windows路径而不是Linux文件系统。
  3. 接下来,我使用standby_mode = on和connectioninfo
  4. 创建了recovery.conf文件
  5. 我验证了服务器配置为hot_standby = on并启动了守护程序
  6. 现在我遇到了问题,因为postgres告诉我,&#34;数据库区域设置(English_United_States.1252,显然是Windows特定的)与操作系统&#34;

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

    • 使用en_US.UTF8语言环境在Windows上启动我们的主数据库?
    • 这甚至可能吗?
    • 为什么pg_basebackup格式特定于操作系统,或者是否存在备份格式?
    • 是否有任何命令行标志设置为翻译?
    • 我也很感激它只使用Linux(甚至只使用Windows),但我担心我们的客户会依赖这两种操作系统。

1 个答案:

答案 0 :(得分:2)

您无法恢复pg_basebackup在其他架构上创建的文件系统备份,例如从Linux上的Windows还原备份。

在这种情况下也无法进行流媒体复制。

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