2025年9月25日: PostgreSQL 18 发布!
支持的版本:当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12

pg_checksums

pg_checksums — 在 PostgreSQL 数据库集群中启用、禁用或检查数据校验和

概要

pg_checksums [选项...] [[ -D | --pgdata ]数据目录]

描述

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

在验证校验和时,将扫描集群中的每个文件。在启用校验和时,将就地重写每个校验和已更改的关联文件块。禁用校验和仅更新 pg_control 文件。

选项

以下命令行选项可用

-D directory
--pgdata=directory

指定数据库集群存储的目录。

-c
--check

检查校验和。如果未指定其他选项,则为默认模式。

-d
--disable

禁用校验和。

-e
--enable

启用校验和。

-f 文件节点
--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

指定是否在诊断消息中使用颜色。可能的值为 alwaysautonever

注释

在大型集群中启用校验和可能会花费很长时间。在此操作期间,集群或其他写入数据目录的程序不得启动,否则可能会发生数据丢失。

当使用执行关联文件块直接复制的工具(例如 pg_rewind)的复制设置时,启用或禁用校验和可能会导致页面损坏(表现为不正确的校验和),如果操作在所有节点上不一致。因此,在复制设置中启用或禁用校验和时,建议在所有集群切换之前停止所有集群。销毁所有备用服务器,在主服务器上执行操作,然后从头开始重新创建备用服务器也是安全的。

如果在启用或禁用校验和时 pg_checksums 被中止或杀死,集群的数据校验和配置将保持不变,并且可以重新运行 pg_checksums 来执行相同的操作。

提交更正

如果您在文档中发现任何不正确、与您对特定功能的体验不符或需要进一步说明的内容,请使用 此表格 报告文档问题。