我过去在MySQL的延迟复制特性方面取得了成功,它允许您停止复制,检查bin日志以查找错误的查询,并在上述查询之前进行SLAVE UNTIL,然后跳过它。
由于Postgresql引入了min_recovery_apply_delay设置,我希望在Postgres中实现同样的目标,但是,我继续阅读文章,这些文章在停止复制时停止。现在你有了x小时的数据..。你是怎么恢复和跑步的?类似于什么我为MySQL写的是理想的指南
编辑:通过大量的搜索,我发现了随处可见的随处可见的随同恢复目标设置的统括工具和pghoard工具。特别是recovery_target_xid设置,它将允许我恢复到确切的查询。现在拼图中唯一缺失的部分是,我不知道如何告诉postgresql跳过这个糟糕的查询,然后继续恢复。
发布于 2016-10-25 11:17:39
从询问一些比我更有经验的PostgreSQL人员,再深入阅读,似乎您实际上不能像在MySQL中那样跳过查询。当您恢复后恢复新的“时间线”创建,“回到未来”样式。
也许PostgresSQL将来会想出一种节省的方法来实现这一点,但目前看来,您只限于恢复到某个时间点,但是在此之后编写的所有数据都会丢失,而无需进行大量的手工操作。
发布于 2016-12-08 17:10:02
我可能错了,但是对于postgresql流复制,您必须在主服务器上设置归档(参见docu https://www.postgresql.org/docs/current/static/continuous-archiving.html中的内容)。Master将旧的XLOGS (WAL日志)保存在给定的目录中(您需要稍后定期删除它们,因为到目前为止主目录没有自动删除它们)。这些归档的xlog是必要的,否则postgresql复制现在会在一些较长的网络问题上存活下来,所以这就是您的意思吗?
类似于MySQL,如果副本在关闭或不可访问的一段时间后启动,并且在主服务器上不再存在二进制日志,则必须重新创建副本。否则,如果二进制日志仍然可用,副本将自动同步(除非停止了从文件,或者强制不在配置文件中启动)。
https://serverfault.com/questions/810227
复制相似问题