↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

备库可能带着撕裂的 FSM 页面正常结束恢复 RSS

Noah Misch 指出提交 c06d1a4 改掉了恢复期间的 FSM 不变量。在开启校验和与整页写的默认配置下,restartpoint 之后的 heap_xlog_* 可以把 FSM 页面标记为脏;此时崩溃留下的撕裂页面不会在恢复中被修复,恢复却能正常结束。FSM 自己用 RBM_ZERO_ON_ERROR 静默接受坏页,heapam_relation_copy_data 这类调用方却假定读取一定成功。长期方案是恢复旧不变量,或要求所有读 FSM 的调用方一律容错。

发布于 2026-09-10T06:53:46.229288Z · Noah Misch · pgsql-hackers
FSM 恢复 数据损坏

Noah Misch 指出提交 c06d1a4 改掉了恢复期间的 FSM 不变量。在开启校验和与整页写的默认配置下,restartpoint 之后的 heap_xlog_* 可以把 FSM 页面标记为脏;此时崩溃留下的撕裂页面不会在恢复中被修复,恢复却能正常结束。FSM 自己用 RBM_ZERO_ON_ERROR 静默接受坏页,heapam_relation_copy_data 这类调用方却假定读取一定成功。长期方案是恢复旧不变量,或要求所有读 FSM 的调用方一律容错。

Noah Misch 指出提交 c06d1a4 改掉了恢复期间的 FSM 不变量。在开启校验和与整页写的默认配置下,restartpoint 之后的 heap_xlog_* 可以把 FSM 页面标记为脏;此时崩溃留下的撕裂页面不会在恢复中被修复,恢复却能正常结束。FSM 自己用 RBM_ZERO_ON_ERROR 静默接受坏页,heapam_relation_copy_data 这类调用方却假定读取一定成功。长期方案是恢复旧不变量,或要求所有读 FSM 的调用方一律容错。

原始来源 ↗

来源记录
  • center.info_item · 4c1f09e5986b9d2d · 2026-10-03T04:08:35.169032Z
  • pgweb.info_item · 4c1f09e5986b9d2d · 2026-10-03T04:08:55.967155Z