数据校验和如何与流复制交互?

Jac*_*las 11 postgresql replication postgresql-9.3 checksum

数据校验和是 9.3 中引入的新功能,并且:

有一个新的 GUC 参数“ignore_checksum_failure”,即使检测到损坏,它也会强制 PostgreSQL 继续处理事务

如果复制主机上的校验和失败,损坏的数据会复制到从服务器还是复制停止。这取决于 的设置ignore_checksum_failure吗?

这个README 有一些有用的相关信息,但没有直接回答问题。

jja*_*nes 1

如果数据在磁盘上时被损坏,则不应复制损坏的数据,除非它已存在于创建副本的备份中。

当然,如果您忽略校验和失败,那么主设备可能会开始出错,并且该错误将被复制。

如果损坏发生在内存中,那么一切都将失败。

  • 非常接近这里的目标。有关“ignore_checksum_failure”参数的文档包含“此行为可能...传播...损坏”的警告。如果没有明确提及(流式)复制,这里似乎暗示了这一点。通常,校验和错误会导致事务中止,因此不会复制任何数据。忽略此错误将允许您提交事务并写入(可能)损坏的数据,这些数据也将被复制。 (2认同)