pg_checksums

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

大纲

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

简介

pg_checksumsPostgreSQL集簇中检查、启用或禁用数据校验和。运行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可以重新运行以执行相同操作。