上QQ阅读APP看书,第一时间看更新
2.4.3 打开数据块的checksum功能
对于一些数据可靠性要求很高的场景,如一些金融领域,建议打开数据块的checksum校验功能。而在PostgreSQL12版本之前,需要在用initdb命令创建数据库时就把这个功能加上:
initdb -k
initdb命令中增加了“-k”参数,所创建的数据库的数据块就有了checksum功能。在PostgreSQL12版本之后提供了工具pg_checksums,可以把一个没有checksum功能的数据库转换为具有该功能的数据库。运行这个工具需要先把数据库停掉,否则会报如下错误:
pg_checksums: error: cluster must be shut down
用“pg_checksums -c”检查当前数据库是否打开了checksum功能:
[postgres@pg01 ~]$ pg_checksums -c pg_checksums: error: data checksums are not enabled in cluster
上面的提示是指没有打开checksum功能,则用下面的命令把数据库转换成具有checksum功能的数据库:
[postgres@pg01 ~]$ pg_checksums -e -P 1223/1223 MB (100%) computed Checksum operation completed Files scanned: 1325 Blocks scanned: 156566 pg_checksums: syncing data directory pg_checksums: updating control file Checksums enabled in cluster
在上面的命令中,“-P”参数是为了显示进度。
如果数据库比较大,使用pg_checksums把数据库转换成具有checksum功能的数据库需要比较长的时间,所以做这个操作要求有比较长的数据库停机时间。