PHP实战中知识总结 / PgSQL - pg_checksums(bin目录文件)

一、pg_checksums

pg_checksums在PostgreSQL集簇中检查、启用或禁用数据校验和。运行pg_checksums之前,必须彻底关闭服务器。验证校验和时,如果没有校验和错误,则退出状态为零,如果检测到至少一个校验和失败,则退出状态为非零。启用或禁用校验和时,如果操作失败,则退出状态为非零。

验证校验和时,集簇中的每个文件都要被扫描。启用校验和时,集簇中的每个文件都会被原地重写。禁用校验和时,仅更新pg_control文件

PostgreSQL允许用户开启block checksum功能,使用pg_checksums工具(12.0版本之前为pg_verify_checkums),可以对整个数据库或指定的数据文件进行checksum校验,确保数据文件逻辑上一致。

使用注意:

(1)对于大型的数据库操作可能需要比较长的时间, 系统需要在关闭的状态下进行

(2)对于正在复制的系统,不要轻易启动或者关闭这个参数,如果要关闭,需要将所有的复制的机器全部关闭,否则会造成在切换的过程中,数据损坏导致整体数据库无法在使用.

二、命令格式

pg_checksums [OPTION]... [DATADIR]

option

参数说明
[-D, --pgdata=]DATADIR指定数据目录
-c, --check检查校验和,默认参数
-d, --disable禁止校验和
-e, --enable启用校验和
-f, --filenode=FILENODE仅验证文件节点为*filenode*的关系中的校验和
-N, --no-sync默认情况下,pg_checksums会等待所有文件安全地写到磁盘上,该选项使得pg_checksums不等待就返回,这样更快,但意味着后续如果操作系统崩溃会让更新的数据目录损坏。一般地,该选项对测试有用,但不应用在生产安装上。当使用--check时,该选项无效
-P, --progress启用进度报告。在检查或启用校验和时,打开该选项,会提供进度报告
-v, --verbose启用详细输出。列出所有检查的文件
-V, --version打印pg_checksums版本并退出
-?, --help显示关于pg_checksums命令行参数的帮助并退出。

[postgres@izwz91quxhnlkan8kjak5hz bin]$ pg_checksums -e -D /www/server/data/postgres
Checksum operation completed
Files scanned: 1246
Blocks scanned: 72383
pg_checksums: syncing data directory
pg_checksums: updating control file
Data checksum version: 1
Checksums enabled in cluster

PHP实战中知识总结