可以在数据页中添加校验和,以帮助检测由存储系统错误引起的数据损坏。它们只能在 initdb 时期为整个数据库集群设置;之后无法将集群或单个数据库转换为使用校验和。
校验和引入于 PostgreSQL 9.3。从 PostgreSQL 18 开始,在新创建的数据库上默认启用。
确定校验和是否已启用
要确定 PostgreSQL 实例上是否启用了校验和,请查询预设的 GUC data_checksums。
从 PostgreSQL 9.6 开始,执行例如“SELECT data_page_checksum_version FROM pg_control_init()”。
对于所有版本,此值由 pg_controldata 报告为“Data page checksum version”。“0”表示未启用。
验证校验和
从 PostgreSQL 12 开始,实用程序 pg_checksums 使所有数据页校验和的验证成为可能。
在 PostgreSQL 11 中,可以使用实用程序 pg_verify_checksums 来实现相同目的。
变更历史
- PostgreSQL 9.3
- 添加(初始提交:96ef3b8f)
参考资料
- PostgreSQL 文档: initdb:checksums 选项
