作者
digoal
日期
2019-10-27
标签
PostgreSQL , 在线block校验
背景
PostgreSQL 9.3开始引入了数据文件数据块的checksum功能(wal,xlog的block checksum一直存在),当时只能在初始化数据库的时候指定是否开启,设置后就不能修改。
checksum 主要用来发现数据的逻辑错误。
从12的版本开始,支持了数据库停止状态下(离线)开启或关闭数据文件block checksum, 使用工具pg_checksums:
https://www.postgresql.org/docs/12/app-pgchecksums.html
pg_checksums的功能包括:
1、开启|关闭 数据文件block checksum
2、检查指定文件(或全集群)的checksum是否正确。
3、实时报告检查或开启block checksum的进度。
目前pg_checksums还需要改进的问题是:
1、限速,在线处理时担心对数据库的IO造成太大影响,有限速功能会好很多。
2、在线修改checksum,不需要停库操作。对于生产环境很重要。
3、支持9.3以上所有版本PG(9.3以上版本就支持checksum)
以上几个功能在新版pg_checksums已经完全支持.
https://github.com/credativ/pg_checksums
参考
https://github.com/credativ/pg_checksums
https://www.credativ.com/blog/pgchecksums-10-released
https://www.postgresql.org/docs/12/app-pgchecksums.html
PostgreSQL 许愿链接
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.
9.9元购买3个月阿里云RDS PostgreSQL实例
PostgreSQL 解决方案集合
德哥 / digoal's github - 公益是一辈子的事.





