时间线和历史文件 PostgreSQL 9.1

ash*_*ash 6 postgresql

时间线、历史文件和 'recovery_target_timeline' 中的设置的目的是什么recovery.conf

我从 PostgreSQL 9.1 文档中得到的模糊理解是,当从服务器完成恢复时,它会切换到新的时间线,以防止覆盖先前时间线的 WAL。

我不清楚这是如何在恢复场景中使用的,以及 .history 文件和“recovery_target_timeline”设置为“最新”的目的。

gra*_*emp 2

当从机升级为新的主机时,它会创建一个新的时间线以避免 WAL 名称重叠。该.history文件包含有关数据库时间线分支的信息。恢复过程使用此信息来确定它正在使用的时间线。默认情况下,它使用与进行基本备份时相同的时间线。因此,例如,如果您将其中一个从站提升为新的主站,其他从站将无法继续从新主站恢复,因为它们使用之前的时间线。

为了让他们能够使用当前的时间线,简单地说,将他们切换到新的母版,你需要他们了解新的历史记录。只需删除pg_xlog从站目录中的所有内容并从新主站复制历史文件即可。然后设置recovery_target_timeline'latest'强制数据库使用最新找到的时间线。

请注意,冒充新主人的奴隶必须是最追赶的奴隶。否则,在将其他从站切换到新主站后,可能会导致其他从站上的数据损坏。