PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

pg_checksums

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

Synopsis

pg_checksums [option...] [[ -D | --pgdata ]datadir]

描述

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

在验证校验和时,集群中的每一个文件都会被扫描。在启用校验和时,每一个校验和发生了改变的关系文件块都会被就地重写。禁用校验和只会更新文件 pg_control。

选项

下列命令行选项可用:

-D directory
--pgdata=directory

指定数据库集群所在的目录。

-c
--check

检查校验和。如果没有指定其他选项,这就是默认模式。

-d
--disable

Disables checksums.

-e
--enable

Enables checksums.

-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 文件以及每一个表空间的整个文件系统。请参见 recovery_init_sync_method,了解使用 syncfs 时需要留意的注意事项。

当使用 --no-sync 时,此选项没有效果。

-v
--verbose

启用详细输出。列出所有被检查的文件。

-V
--version

打印 pg_checksums 的版本并退出。

-?
--help

显示关于 pg_checksums 命令行参数的帮助,然后退出。

环境

PGDATA

指定数据库集群所在的目录;可以使用 -D 选项覆盖。

PG_COLOR

指定是否在诊断消息中使用颜色。可能的值是 always、auto 和 never。

注记

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

当使用的复制设置中包含会直接拷贝关系文件块的工具(例如 pg_rewind)时,如果该操作未在所有节点上以一致的方式执行,启用或者禁用校验和可能会导致表现为不正确校验和的页面损坏。因此,在复制设置中启用或者禁用校验和时,建议先停止所有集群,然后再以一致的方式将它们全部切换。销毁所有后备服务器、在主服务器上执行该操作、最后从头开始重建后备服务器,这样做也是安全的。

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