kon*_*ify 2 postgresql replication backup write-ahead-logging
我希望将 PostgreSQL 10 集群从server1克隆到server2,它在相同的硬件上运行相同的 Postgres 版本。目的是负载平衡和 HA。要记住的事情:
我考虑过的选项:
pg_dump | psql 当然,但这需要重新创建索引,并且对于相同系统之间的完整副本来说似乎非常缓慢且效率低下。rsync所有 Postgres 文件夹和文件。有这么多数据存在数据损坏的风险,我需要确保我得到了所有东西(大概只有数据目录是不够的)。pg_basebackup直接通过管道以pg_receivewal某种方式完成这项工作吗?找不到我的用例的说明。做到这一点的最佳方法是什么?好像是很常见的情况。
您的选项 1pg_dump | psql确实有您描述的限制。
您的选项 2 没有多大意义。您需要从克隆开始以设置流式传输,当您拥有克隆时,您就不需要流式传输了,因为您已经有了克隆。此外,您不必“重新配置两者以再次禁用复制”。当您提升备用数据库时,它不再是备用数据库,不再需要重新配置。如果你在 master 上使用了一个命名插槽,你只需要删除它。如果您使用了临时插槽,则甚至不需要这样做。如果你想为自己创造额外的工作,你可以将“wal_level”降为“minimal”,如果你想为自己创造额外的工作,你可以将“max_wal_senders”设置为 0。所以不要做这些事情。以允许未来流式复制的方式保留主配置。
您在选项 3 中的担忧也没有任何意义。为什么 rsync'ing 数据比您可以对 TB 数据执行的任何其他操作(例如普通备份,甚至只是运行数据库)更容易受到损坏?Rsync 不会特意破坏您的数据。如果您需要的不仅仅是数据目录,那么首先取决于系统的配置方式。你有表空间吗?数据目录中的配置文件,还是其他地方。如果你做了这些事情,那么是的,你必须处理它们。当您决定放弃最简单的配置时,这就是您注册的内容。
在选项 4 中,“pg_basebackup”的输出不会通过管道传送到“pg_receivewal”。它们并非旨在以这种方式协同工作。“pg_basebackup”已经可以创建一个独立的目录,这是你想要的,所以你可以直接使用它。我想你想在你想要新服务器所在的主机上执行,pg_basebackup -D newdir -F plain -h prod_host.example.com
您目前如何备份您的数据库?进行克隆的最佳方法可能是利用您当前的备份策略。如果需要,您将如何从备份中恢复?对此的小改动应该可以让您获得克隆(以及测试您当前的备份策略是否有效)
正确的方法是采用纯格式pg_basebackup。
只需确保--wal-method=stream备份将包含所有必需的 WAL 文件。
然后在备份目录上启动服务器,它将执行恢复并启动。
没必要去乱搞pg_receivewal。
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |