4

有人可以解释一下时间线和历史文件的用途以及 recovery.conf 中的“recovery_target_timeline”设置吗?

我从 postgresql 9.1 文档中得到的模糊理解是,当从属设备完成恢复时,它会切换到新的时间线以防止覆盖先前时间线的 WAL。我不清楚这在恢复方案中是如何使用的,以及 .history 文件的用途和“recovery_target_timeline”设置为“最新”。

我试图了解当我提升奴隶成为新主人时会发生什么。它在接受读/写查询之前恢复并启动新的时间线。

现在如果我设置一个新的从站,因为我将现有的从站提升为主站,它是否需要/使用前一个从站(新主站)生成的历史文件来读取(由新主站)生成的新 WAL 以进行连续归档/日志航运。

非常感谢。

4

1 回答 1

0

要了解时间线,您必须了解的是它们是为了避免 MVCC 和时间线分歧的问题。考虑这一点的一个好方法是在复制的上下文中。在主/从流复制中,您不希望有人将从属作为主插入一堆信息,然后将其转回从属。如果这样做,WAL 段的二进制日志将无法正常运行,并且您将获得 db 损坏。

当您将奴隶恢复到新的主人时,它会完成“恢复”并开始自己的时间线。从这一点开始,它现在是主人,如果没有重建,就不能再成为奴隶。这给故障转移和故障恢复带来了一些问题,但这样做的方法是定期来回故障,旧主服务器重建数据库(使用pg_basebackup)作为新的从服务器。这意味着每次故障转移/故障恢复都是一个新的时间线。

是的,这确实会影响多台服务器的故障转移,因为从属服务器必须更改时间线。

于 2013-04-03T03:47:50.383 回答