pg_checksums - 在 PostgreSQL 数据库集群中启用、禁用或检查数据校验和
pg_checksums
[选项
...] [[ -D
| --pgdata
]数据目录
]
pg_checksums 在 PostgreSQL 集群中检查、启用或禁用数据校验和。在运行 pg_checksums 之前,必须正确关闭服务器。校验校验和时,如果不存在校验和错误,退出状态为零;如果检测到至少一个校验和错误,退出状态为非零。启用或禁用校验和时,如果操作失败,退出状态为非零。
校验校验和时,将扫描集群中的每个文件。启用校验和时,将以原位方式重写每个具有已更改校验和的关系文件块。禁用校验和仅更新文件 pg_control
。
提供以下命令行选项
-D 目录
--pgdata=目录
指定存储数据库集群的目录。
-c
--check
检查校验和。如果未指定任何其他内容,这是默认模式。
-d
--disable
禁用校验和。
-e
--enable
启用校验和。
-f filenode
--filenode=filenode
仅验证与 filenode filenode
存在关联的校验和。
-N
--no-sync
默认情况下,pg_checksums
会等待所有文件都安全写入磁盘。此选项使 pg_checksums
返回且不等待,这会更快,但意味着随后的操作系统崩溃可能会导致更新后的数据目录损坏。通常,此选项对于测试很有用,但不要在生产安装中使用。使用 --check
时,此选项无效。
-P
--progress
启用进度报告。打开它将在检查或启用校验和时提供进度报告。
--sync-method=method
当设置为 fsync
(默认值)时,pg_checksums
将递归打开并同步数据目录中的所有文件。对文件的搜索将通过符号链接跟踪 WAL 目录和每个配置的表空间。
在 Linux 上,可以使用 syncfs
向操作系统请求同步包含数据目录、WAL 文件和每个表空间的整个文件系统。有关在使用 syncfs
时需要了解的注意事项的信息,请参见 recovery_init_sync_method。
当使用 --no-sync
时,此选项无效。
-v
--verbose
启用详细输出。列出所有已检查的文件。
-V
--version
打印 pg_checksums 版本并退出。
-?
--help
显示有关 pg_checksums 命令行参数的帮助,并退出。
PGDATA
指定存储数据库集群的目录;可以使用 -D
选项覆盖。
PG_COLOR
指定是否在诊断消息中使用颜色。可能的值有 always
、auto
和 never
。
大集群中的校验和启用可能会花费大量时间。此操作期间,不得启动集群或向数据目录写入的其他程序,否则可能会导致数据丢失。
使用通过直接复制关系文件数据块 (例如 pg_rewind) 来执行工具的复制设置时,如果操作在所有节点上未保持一致,则启用或禁用校验和可能导致校验和错误,从而导致页面损坏。因此,建议在复制设置中启用或禁用校验和时,在所有集群保持一致的情况下先停止所有集群。另外,销毁所有备用、对主数据库执行操作,最后从头重新创建备用也是安全的。
如果在启用或禁用校验和期间中止或终止 pg_checksums,则集群的数据校验和配置将保持不变,并且可以重新运行 pg_checksums 来执行相同操作。