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