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


11

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

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

如果复制主服务器上的校验和失败,该损坏的数据将复制到从服务器还是复制暂停。是否取决于设置ignore_checksum_failure

自述文件具有一些有用的相关信息,但不能直接回答问题。


6
很好的问题。部分取决于数据校验和是否也会影响WAL(除了WAL中的整页图像,它们不会影响IIRC)。我没有时间去研究数据校验和,因为我一直在帮助其他功能。在pgsql-general上问可能是一个好主意。如果时间允许和新宝宝允许,我将查看消息来源,但我不会屏住呼吸。
克雷格·林格2014年


4
您在StackExchange上学到的东西...“正在帮助其他功能”是“换尿布”的委婉说法。
Colin't Hart 2014年

Answers:


1

如果数据在磁盘上损坏,则除非复制副本中已经存在该损坏,否则不应复制该损坏。

当然,如果您忽略校验和失败,那么主服务器可能会开始出错,并且这种错误将被复制。

如果内存中发生损坏,则所有投注均关闭。


2
非常接近这里的标记。ignore_checksum_failure参数上的文档包含警告“此行为可能……传播……损坏”。在没有明确提及(流式)复制的情况下,这里似乎暗示了这一点。通常,校验和错误将导致事务中止,因此不会复制任何数据。忽略此错误将使您能够提交事务并写入(可能)损坏的数据,这些数据也将被复制。
Colin't Hart 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.