pg_checksums — 在PostgreSQL数据库集簇中启用、禁用或检查数据校验和
pg_checksums
[option
...] [[ -D
| --pgdata
]datadir
]
pg_checksums在PostgreSQL集簇中检查、启用或禁用数据校验和。运行pg_checksums之前,必须彻底关闭服务器。验证校验和时,如果没有校验和错误,则退出状态为零,如果检测到至少一个校验和失败,则退出状态为非零。启用或禁用校验和时,如果操作失败,则退出状态为非零。
在验证校验和时,集群中的每个文件都会被扫描。启用校验和时,每个具有更改校验和的关系文件块都会被就地重写。
禁用校验和只会更新文件pg_control
。
下列命令选项可用:
-D directory
--pgdata=directory
指定存储数据库集簇的目录。
-c
--check
检查校验和。如果未指定其它任何内容,这是缺省模式。
-d
--disable
禁用校验和。
-e
--enable
启用校验和。
-f filenode
--filenode=filenode
仅验证文件节点为filenode
的关系中的校验和。
-N
--no-sync
缺省地,pg_checksums
会等待所有文件安全地写到磁盘上。该选项使得pg_checksums
不等待就返回,这样更快,但意味着后续如果操作系统崩溃会让更新的数据目录损坏。一般地,该选项对测试有用,但不应用在生产安装上。当使用--check
时,该选项无效。
-P
--progress
启用进度报告。在检查或启用校验和时,打开该选项,会提供进度报告。
-v
--verbose
启用详细输出。列出所有检查的文件 。
-V
--version
打印pg_checksums版本并退出。
-?
--help
显示关于pg_checksums命令行参数的帮助并退出。
PGDATA
指定数据库集簇存储的目录;可以用-D
选项覆盖。
PG_COLOR
指定是否在诊断消息中使用颜色。可能的值为always
, auto
, never
。
在大型集簇中启用校验和的时间可能很长。在此操作期间,写到数据目录的集簇或其它程序必须是未启动的,否则可能出现数据丢失。
当复制设置与执行关系文件块的直接拷贝的工具(例如pg_rewind)一起使用时,启用和禁用校验和会导致以不正确校验和形式出现的页面损坏,如果未在所有节点上执行一致的操作的话。故在复制设置中启用或禁用校验和时,推荐一致地切换所有集簇之前停止所有集簇。此外销毁所有备用数据库,在主数据库上执行操作,最后从头开始重建备用服务器,也是安全的。
如果在启用或禁用校验和时异常终止或杀掉pg_checksums,那么集簇的数据校验和配置保持不变,pg_checksums可以重新运行以执行相同操作。