1

目前我正在研究如何为 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从属数据目录。
  2. 然后我必须将一些符号链接修复到表空间文件上,因为它们指向的是 Windows 路径而不是 Linux 文件系统。
  3. 接下来我创建了 recovery.conf 文件standby_mode = on和 connectioninfo
  4. 我验证了,服务器被配置为hot_standby = on并启动了守护进程

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

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

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

1 回答 1

3

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

在这种情况下也不可能进行流式复制。

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

于 2017-06-28T07:46:02.123 回答