# 皮克_验证备份
皮克_verifybackup — 验证 PostgreSQL 集群基础备份的完整性
# 概要
pg_verifybackup
[选项
...]
# 描述
皮克_verifybackup 用于检查使用的数据库集群备份的完整性pg_basebackup
反对备份清单
备份时由服务器生成。备份必须以“纯”格式存储;解压后可以检查“tar”格式的备份。
重要的是要注意 pg 执行的验证_verifybackup 没有也不能包含正在运行的服务器在尝试使用备份时将执行的所有检查。即使您使用此工具,您仍应执行测试还原并验证生成的数据库是否按预期工作并且它们似乎包含正确的数据。然而,pg_verifybackup 可以检测出许多通常由于存储问题或用户错误而发生的问题。
备份验证分四个阶段进行。第一的,pg_verifybackup
读取备份清单
文件。如果该文件不存在、无法读取、格式错误或未能针对其自身的内部校验和进行验证,pg_verifybackup
将因致命错误而终止。
第二,pg_verifybackup
将尝试验证当前存储在磁盘上的数据文件是否与服务器打算发送的数据文件完全相同,下面将描述一些例外情况。将检测额外和丢失的文件,但有少数例外。此步骤将忽略是否存在或任何修改,postgresql.auto.conf
,待机信号
, 和恢复信号
,因为预计这些文件可能已作为备份过程的一部分创建或修改。它也不会抱怨备份清单
目标目录中的文件或里面的任何东西pg_wal
,即使这些文件不会在备份清单中列出。只检查文件;目录的存在与否未经验证,除非是间接验证:如果目录丢失,则它应该包含的任何文件也必然会丢失。
下一个,pg_verifybackup
将对所有文件进行校验和,将校验和与清单中的值进行比较,并对计算出的校验和与清单中存储的校验和不匹配的任何文件发出错误。不会对在上一步中产生错误的任何文件执行此步骤,因为已知它们存在问题。在上一步中忽略的文件在此步骤中也将被忽略。
最后,pg_verifybackup
将使用清单来验证恢复备份所需的预写日志记录是否存在,并且它们可以被读取和解析。这备份清单
包含有关需要哪些预写日志记录的信息,以及pg_verifybackup
将使用该信息来调用pg_waldump
解析那些预写日志记录。这- 安静的
标志将被使用,因此pg_waldump
只会报告错误,不会产生任何其他输出。虽然这种级别的验证足以检测明显的问题,例如丢失文件或内部校验和不匹配的问题,但它们的范围还不足以检测尝试恢复时可能出现的所有问题。例如,生成具有正确校验和但指定无意义操作的预写日志记录的服务器错误无法通过此方法检测到。
请注意,如果存在不需要恢复备份的额外 WAL 文件,则此工具不会检查它们,尽管单独调用pg_waldump
可用于此目的。另请注意,WAL 验证是特定于版本的:您必须使用pg_verifybackup
,因此pg_waldump
,这与正在检查的备份有关。相反,数据文件完整性检查应该适用于生成备份清单
文件。
# 选项
皮克_verifybackup 接受以下命令行参数:
-e
--exit-on-error
检测到备份问题后立即退出。如果未指定此选项,pg_verifybackup
即使在检测到问题后仍将继续检查备份,并将检测到的所有问题报告为错误。
-一世 *
小路*
--忽略=*
小路*
在将备份中实际存在的数据文件列表与备份清单
文件。如果指定了目录,则此选项会影响以该位置为根的整个子树。如果相对路径名与指定的路径名匹配,则有关额外文件、丢失文件、文件大小差异或校验和不匹配的投诉将被禁止。可以多次指定此选项。
-m *
小路*
--清单路径=*
小路*
使用指定路径中的清单文件,而不是位于备份目录根目录中的清单文件。
-n
--no-parse-wal
不要尝试解析从该备份中恢复所需的预写日志数据。
-q
- 安静的
成功验证备份后不要打印任何内容。
-s
--skip-checksums
不验证数据文件校验和。仍然会检查文件的存在与否以及这些文件的大小。这要快得多,因为文件本身不需要读取。
-w *
小路*
--wal-目录=*
小路*
尝试解析存储在指定目录中的 WAL 文件,而不是在pg_wal
.如果备份存储在与 WAL 存档不同的位置,这可能很有用。
其他选项也可用:
-V
- 版本
打印 pg_验证备份版本并退出。
-?
- 帮助
显示关于 pg 的帮助_verifybackup 命令行参数,然后退出。
# 例子
在以下位置创建服务器的基本备份数据库服务器
并验证备份的完整性:
$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data
$ pg_verifybackup /usr/local/pgsql/data
在以下位置创建服务器的基本备份数据库服务器
,将清单移动到备份目录之外的某个位置,并验证备份:
$ pg_basebackup -h mydbserver -D /usr/local/pgsql/backup1234
$ mv /usr/local/pgsql/backup1234/backup_manifest /my/secure/location/backup_manifest.1234
$ pg_verifybackup -m /my/secure/location/backup_manifest.1234 /usr/local/pgsql/backup1234
要验证备份,同时忽略手动添加到备份目录的文件,并跳过校验和验证:
$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data
$ edit /usr/local/pgsql/data/note.to.self
$ pg_verifybackup --ignore=note.to.self --skip-checksums /usr/local/pgsql/data