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可以重新运行以执行相同操作。