斯特凡·费尔科特:PITR和流复制环境

斯特凡·费尔科特:PITR和流复制环境

💡 原文英文,约2000词,阅读约需7分钟。
📝

内容提要

本文讨论了使用流复制进行PostgreSQL集群的时间点恢复时备用服务器的影响,介绍了重新同步备用服务器的最佳方法,包括安装、配置和执行时间点恢复的详细步骤。

🔎

延伸解读

备用服务器在PITR中的角色与常见误区

文章指出,用户常误以为需要在备用服务器上执行与主服务器相同的PITR步骤,但这会导致备用服务器无法连接主服务器。实际上,PITR仅应在主服务器上进行,备用服务器需在恢复后重新同步。这是因为PITR会改变主服务器的时间线,而备用服务器仍停留在旧时间线,造成复制中断。

重新同步备用服务器的三种方法比较

文章介绍了三种重新同步备用服务器的方法:一是使用pg_basebackup重新构建备用服务器;二是从主服务器获取新备份并恢复到备用服务器;三是使用旧备份回滚备用服务器,通过重放WAL归档到主服务器当前位置并跟随新时间线。文章重点演示了第三种方法,但结论指出,通常创建新基础备份并重新设置备用服务器是最快的方式。

使用旧备份回滚备用服务器的关键步骤

回滚备用服务器时,需在主服务器上创建物理复制槽以保留必要的WAL文件,然后在备用服务器上恢复旧备份,配置恢复参数(如recovery_target_lsn和recovery_target_timeline='latest'),并设置recovery_target_action='shutdown'使恢复完成后自动关闭。之后,将恢复配置替换为流复制配置,创建standby.signal,并启动服务以重新加入集群。

物理复制槽在重新同步中的作用

物理复制槽确保主服务器保留备用服务器追赶所需的WAL文件。在重新同步前,需在主服务器上创建复制槽(如pg_create_physical_replication_slot),并指定immediately_reserve为TRUE以立即保留WAL。这样,备用服务器在回滚过程中可以获取到所有必要的WAL归档,避免因WAL被回收而失败。

❓

Q&A

如何在PostgreSQL中进行时间点恢复?

首先停止PostgreSQL服务,备份旧数据目录,然后恢复备份并创建恢复信号,最后启动服务并监控恢复过程。

备用服务器在时间点恢复后需要重新同步吗?

是的,时间点恢复后备用服务器的流复制会中断,需要重新同步。

如何设置PostgreSQL的流复制?

需要创建专用的复制用户,配置pg_hba.conf文件,并使用pg_basebackup命令初始化备用服务器。

在进行时间点恢复时,如何处理WAL归档?

需要在节点间共享WAL归档,并确保主服务器保留必要的WAL文件以供备用服务器使用。

重新同步备用服务器的最佳方法是什么?

最佳方法是使用旧备份进行回滚,并重放WAL归档,以确保备用服务器与主服务器同步。

如何检查PostgreSQL的流复制状态?

可以使用pg_stat_replication和pg_replication_slots视图来检查流复制的状态。

🏷️

标签

➡️

继续阅读