在 PostgreSQL 中进行故障转移后,我们可以使用旧的主数据库与备用数据库同步吗?

use*_*225 7 postgresql replication failover

如果我的备用​​ (postgres) 在故障转移前落后几秒钟。在 PostgreSQL 中进行故障转移后同步回旧主数据库的最简单方法是什么。

在 Oracle 中,如果启用了闪回,我们可以选择恢复失败的主数据库。

如果我在新的主服务器中故障转移后生成了所有 WAL 档案,我们在 postgres 中有任何这样的选项吗?还是我们需要完全重建备用?

fil*_*rem 3

在当前版本(第 9.0-9.3 页)中,没有快速“故障恢复”机制。您必须遵循官方指南,其中规定:

以前的备用数据库现在是主要数据库,但以前的主要数据库已关闭并且可能会保持关闭状态。要恢复正常操作,必须在以前的主系统启动时重新创建备用服务器,或者在第三个系统(可能是新系统)上重新创建。

所以你的第二个猜测是正确的:你需要完全重建备用数据库。

这是由 PostgreSQL 内部结构、WAL 格式和时间线产生的。每次完成故障转移时,都会创建一个新的时间线。您无法安全地使用新服务器(已升级的服务器)中的 WAL 文件在旧服务器恢复后在旧服务器上重播。

从版本 9.1 开始,您有一个用于快速克隆 postgreSQL 实例的工具:pg_basebackup。您还可以使用文件系统快照(例如 LVM2 + XFS)。

如果您有崩溃前主 postgres 集群的快照,以及从那时起的一系列 WAL 文件,您可以从该快照恢复主集群并重播其 WAL 文件。文档中对此进行了介绍。

附言。感谢您提出一个好问题 - 这在文档中并不是很清楚。