目前我正在研究如何为 HA postgresql 架构设置流复制。但是这个问题也与我们在一般混合环境中的备份/恢复和维护有关。
我们的“主”postgresql 服务器在 Windows 机器上运行。我每天都在使用 pg_dump 创建逻辑备份,并使用 pg_basebackup 和 WAL 归档来创建应该提供 PITR 的完整备份(我还没有测试过)。
下一步是设置一个从机器,它通过流复制来保存一个副本。由于对 postgresql 生态系统的更好支持,这台新主机运行的是 Ubuntu Server 16.04 LTS。
- 我初始化了
pg_basebackup -h <main host> -D <datadirectory> --xlog-method=stream
从属数据目录。 - 然后我必须将一些符号链接修复到表空间文件上,因为它们指向的是 Windows 路径而不是 Linux 文件系统。
- 接下来我创建了 recovery.conf 文件
standby_mode = on
和 connectioninfo - 我验证了,服务器被配置为
hot_standby = on
并启动了守护进程
现在我遇到了 postgres 告诉我的问题,“数据库语言环境(English_United_States.1252,显然是 Windows 特定的)与操作系统不兼容”
好吧,我知道,1252 是 Windows 特定的语言环境,我应该在 Linux 上使用 en_US.UTF8,但是在这样的混合环境中,我应该:
- 在 Windows 上也使用 en_US.UTF8 语言环境初始化我们的主数据库?
- 这甚至可能吗?
- 为什么 pg_basebackup 格式是操作系统特定的,或者是否存在不是的备份格式?
- 是否有任何命令行标志可以设置来翻译这个?
- 我也很感激只使用 Linux(甚至只使用 Windows),但我担心我们的客户会在很长一段时间内依赖这两种操作系统。