我有一个postgres数据库(版本9.4)与流复制(主,从配置)。让我们调用master db A和slave db B.
运行A的服务器出现故障,我们不得不进行切换,我们将B升级为新的主服务器。 到目前为止,这一切都很好,工作正常。
现在我已经恢复了损坏的服务器并希望再次设置复制,因此A可以成为新的从属服务器。 所以,我从B中获取备份,将其放入服务器A,设置恢复文件并启动它。这里的问题是它不再真正起作用,因为它说它们分为两个不同的时间线。
以下是来自A(新奴隶)的消息:
2015-10-30 14:28:04 LOG: database system was shut down in recovery at 2015-10-30 14:27:28 CET
2015-10-30 14:28:04 LOG: entering standby mode
2015-10-30 14:28:04 LOG: redo starts at 1A/5802B1A8
2015-10-30 14:28:04 LOG: consistent recovery state reached at 1A/581FA248
2015-10-30 14:28:04 LOG: record with zero length at 1A/581FA248
2015-10-30 14:28:04 LOG: database system is ready to accept read only connections
2015-10-30 14:28:05 LOG: started streaming WAL from primary at 1A/58000000 on timeline 2
2015-10-30 14:28:07 ERROR: requested starting point 19/FE000000 on timeline 1 is not in this server's history
2015-10-30 14:28:07 DETAIL: This server's history forked from timeline 1 at 19/FDCF9BA0.
2015-10-30 14:28:12 ERROR: requested starting point 19/FE000000 on timeline 1 is not in this server's history
2015-10-30 14:28:12 DETAIL: This server's history forked from timeline 1 at 19/FDCF9BA0.
我的恢复文件如下:
standby_mode = 'on'
primary_conninfo = 'host=serverB port=5432 user=replication-user'
restore_command = 'copy "Z:\\pg_xlog\\%f" "%p"'
archive_cleanup_command = '"C:\\Program Files\\PostgreSQL\\9.4\\bin\\pg_archivecleanup" "Z:\\pg_xlog" "%r"'
trigger_file = 'Z:\\trigger\\pgsql.trigger.sekasto021'
recovery_target_timeline = 'latest'
谷歌搜索我发现几乎相同的问题 这里 但没有答案。 找到了一个页面 迈克尔帕奎尔 谁确实描述了发生在我身上的事情(虽然他说从版本9.3开始没有问题)。他说:
FATAL: timeline 2 of the primary does not match recovery target timeline 1
这只能通过从主站复制WAL段来解决 节点或使用WAL归档。
但遗憾的是,我不知道他的意思是通过使用墙存档从主人那里复制wal段。
欢迎任何帮助/指导。 谢谢
更新:我发布了 这个问题 在stackoverflow上被要求把它放在这里