在从 Windows 托管数据库集群创建的 Linux 上还原 pg_basebackup
Restore pg_basebackup on Linux which was created from a Windows hosted database cluster
目前我正在研究如何为 HA postgresql 架构设置流复制。但是这个问题对于我们 backup/restore 和一般混合环境中的维护也很重要。
我们的 "main" 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 文件系统。
- 接下来,我使用
standby_mode = on
和连接信息 创建了 recovery.conf 文件
- 我验证了服务器配置为
hot_standby = on
并启动了守护进程
现在我 运行 遇到了 postgres 告诉我的问题,"database locale (English_United_States.1252 which is obviously Windows specific) is incompatible with operating System"
嗯,我知道,1252 是 Windows 特定的语言环境,我应该在 Linux 上使用 en_US.UTF8,但是在这样的混合环境中,应该我:
- 在 Windows 上也使用 en_US.UTF8 语言环境初始化我们的主数据库?
- 这可能吗?
- 为什么 pg_basebackup 格式是操作系统特定的,或者是否有备份格式不是?
- 是否有任何命令行标志可以设置来翻译这个?
- 如果只使用 Linux(或者甚至只使用 Windows),我也会很感激,但我担心我们的客户会在相当长的一段时间内依赖这两种操作系统。
您无法像 pg_basebackup
在不同架构上创建的那样恢复文件系统备份,例如在 Linux 上从 Windows 恢复备份。
这种场景也不可能有流式复制。
从 PostgreSQL v10 开始,您可以考虑逻辑复制。
目前我正在研究如何为 HA postgresql 架构设置流复制。但是这个问题对于我们 backup/restore 和一般混合环境中的维护也很重要。
我们的 "main" 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 文件系统。
- 接下来,我使用
standby_mode = on
和连接信息 创建了 recovery.conf 文件
- 我验证了服务器配置为
hot_standby = on
并启动了守护进程
现在我 运行 遇到了 postgres 告诉我的问题,"database locale (English_United_States.1252 which is obviously Windows specific) is incompatible with operating System"
嗯,我知道,1252 是 Windows 特定的语言环境,我应该在 Linux 上使用 en_US.UTF8,但是在这样的混合环境中,应该我:
- 在 Windows 上也使用 en_US.UTF8 语言环境初始化我们的主数据库?
- 这可能吗?
- 为什么 pg_basebackup 格式是操作系统特定的,或者是否有备份格式不是?
- 是否有任何命令行标志可以设置来翻译这个?
- 如果只使用 Linux(或者甚至只使用 Windows),我也会很感激,但我担心我们的客户会在相当长的一段时间内依赖这两种操作系统。
您无法像 pg_basebackup
在不同架构上创建的那样恢复文件系统备份,例如在 Linux 上从 Windows 恢复备份。
这种场景也不可能有流式复制。
从 PostgreSQL v10 开始,您可以考虑逻辑复制。