我正在设置一个 Postgres 9.1 主服务器和一个热备用服务器。我阅读了文档,但我不太确定我应该如何处理我的 WAL 文件。
每次提交都在返回到应用程序之前在两个服务器上完成,因此将 WAL 归档到某些第三方系统接缝上是无用的。但是想象一下我的热备份服务器出现故障,那么我将不得不手动重新配置主实例而不使用任何备用服务器。只有这样才激活 WAL 存档是否明智?
我想不会,因为新创建的 WAL 对任何新设置的热备份都是无用的。我是否应该始终让 WAL 存档处于活动状态,并且不时对正在运行的系统进行完整的快照备份,然后根据时间戳手动删除旧的存档 WAL?那么如果当前的热备实例发生故障,我可以快速建立一个新的热备实例吗?或者让一个新的热备用服务器赶上每个 TCP 连接是否更好,因为它对数据库进行一些高吞吐量的批量传输,并且只在它接近最新时才切换到重放流 WAL?这会很棒,因为那样我就根本不必关心 WAL 归档了?
如果写入数据库在几个小时内不起作用我不在乎,只有读取必须具有高可用性。
编辑:我还对有关新的热备用如何赶上主数据库的一些细节感兴趣。是在交易中完成所有事情还是涉及一些高速 TCP 追赶,这类似于(在运行时复杂性方面)仅复制磁盘。
Wal archive 可用于备份目的。例如 - 你每天都进行完整备份,并保留自上次 abckup 以来的 wal 段,因此你始终可以将数据库恢复到白天的任何状态(例如 - 在有人运行之前:drop table users cascade; ).