预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。
28.2. 数据校验和 #
默认情况下,数据页受校验和保护,但也可以选择为集簇禁用。启用后,每个数据页都包含一个校验和,在页面写入时更新,并在页面每次被读取时进行验证。只有数据页受校验和保护;内部数据结构和临时文件不受保护。
可以在使用 initdb 初始化集簇时禁用校验和。之后也可以通过离线操作启用或禁用。数据校验和是在整个集簇级别启用或禁用的,不能为单个数据库、表或复制的集簇成员分别指定。
可以通过查看只读配置变量 data_checksums 的值来确认集簇当前的校验和状态,执行命令 SHOW data_checksums 即可。pg_control_init
也可以用来检查集簇初始化时的数据校验和状态。
在尝试从页面损坏中恢复时,可能需要绕过校验和保护。为此,请临时设置配置参数 ignore_checksum_failure。
28.2.1. 离线启用校验和 #
pg_checksums 程序可用于在离线集簇上启用或禁用数据校验和,也可以用来验证校验和。在重新启动集簇之前,必须在复制集簇的每个节点上执行相同的操作。