pg_verifybackup#

pg_verifybackup

pg_verifybackup

pg_verifybackup — проверить целостность базовой резервной копии кластера Tantor BE

Синтаксис

pg_verifybackup [option...]

Описание

pg_verifybackup используется для проверки целостности резервной копии кластера базы данных, созданной с помощью pg_basebackup, по сгенерированному сервером backup_manifest во время создания резервной копии. Резервная копия должна быть сохранена в формате "plain"; резервная копия в формате "tar" может быть проверена после ее извлечения.

Важно отметить, что проверка, выполняемая pg_verifybackup, не включает и не может включать все проверки, которые выполняет работающий сервер при попытке использовать резервную копию. Даже если вы используете этот инструмент, вы все равно должны выполнять тестовое восстановление и проверять, что полученные базы данных работают ожидаемым образом и содержат правильные данные. Однако pg_verifybackup может обнаружить множество проблем, которые часто возникают из-за проблем с хранением или ошибок пользователей.

Верификация резервной копии проходит в четыре этапа. Сначала pg_verifybackup считывает файл backup_manifest. Если этот файл не существует, не может быть прочитан, имеет неправильный формат или не проходит проверку по внутренней контрольной сумме, pg_verifybackup завершится скритической ошибкой.

Во-вторых, pg_verifybackup попытается проверить, что файлы данных, которые в настоящее время хранятся на диске, точно такие же, как файлы данных, которые сервер предполагал отправить, с некоторыми исключениями, которые описаны ниже. Будут обнаружены лишние и отсутствующие файлы, за исключением некоторых случаев. В этом шаге будет проигнорировано наличие или отсутствие, а также любые изменения в файлах postgresql.auto.conf, standby.signal и recovery.signal, поскольку ожидается, что эти файлы могут быть созданы или изменены в процессе создания резервной копии. Также не будет выдаваться ошибок из-за наличие файла backup_manifest в целевом каталоге или любого содержимого внутри pg_wal, даже если эти файлы не будут перечислены в резервной копии. Проверяются только файлы; наличие или отсутствие каталогов не проверяется, за исключением косвенной проверки: если каталог отсутствует, все файлы, которые он должен был содержать, также будут отсутствовать.

Далее, pg_verifybackup будет вычислять контрольные суммы для всех файлов, сравнивать их с значениями в манифесте и выводить ошибки для файлов, у которых вычисленная контрольная сумма не совпадает с контрольной суммой, хранящейся в манифесте. Этот шаг не выполняется для файлов, которые вызвали ошибки на предыдущем шаге, так как они уже известны как проблемные. Файлы, которые были проигнорированы на предыдущем шаге, также игнорируются на этом шаге.

Наконец, pg_verifybackup будет использовать манифест для проверки наличия и возможности чтения и разбора записей журнала предварительной записи, которые будут необходимы для восстановления резервной копии. backup_manifest содержит информацию о записях журнала предварительной записи, которые будут необходимы, и pg_verifybackup будет использовать эту информацию для вызова pg_waldump для разбора этих записей журнала предварительной записи. Будет использован флаг --quiet, чтобы pg_waldump сообщал только об ошибках, не производя другого вывода. Хотя этот уровень проверки достаточен для обнаружения очевидных проблем, таких как отсутствующий файл или файл, чьи внутренние контрольные суммы не совпадают, он недостаточно обширен для обнаружения каждой возможной проблемы, которая может возникнуть при попытке восстановления. Например, ошибку сервера, которая создает записи журнала предварительной записи с правильными контрольными суммами, но указывает нелепые действия, нельзя обнаружить этим методом.

Обратите внимание, что если имеются дополнительные файлы WAL, которые не требуются для восстановления резервной копии, они не будут проверены этим инструментом, хотя для этой цели можно использовать отдельный вызов pg_waldump. Также обратите внимание, что проверка WAL зависит от версии: вы должны использовать версию pg_verifybackup и, следовательно, pg_waldump, которая относится к проверяемой резервной копии. В отличие от этого, проверка целостности файлов данных должна работать с любой версией сервера, которая генерирует файл backup_manifest.

Опции

pg_verifybackup принимает следующие аргументы командной строки:

-e
--exit-on-error

Остановить выполнение, как только будет обнаружена проблема с резервной копией. Если этот параметр не указан, pg_verifybackup будет продолжать проверку резервной копии даже после обнаружения проблемы и будет сообщать обо всех обнаруженных проблемах как об ошибках.

-i path
--ignore=path

Игнорировать указанный файл или каталог, который должен быть указан в виде относительного пути, при сравнении списка файлов данных, фактически присутствующих в резервной копии, с теми, перечисленными в файле backup_manifest. Если указан каталог, эта опция влияет на всё поддерево, начинающееся с этого местоположения. Жалобы на дополнительные файлы, отсутствующие файлы, различия в размере файлов или несоответствия контрольных сумм будут подавлены, если относительный путь совпадает с указанным путем. Эту опцию можно указывать несколько раз.

-m path
--manifest-path=path

Используйте файл манифеста по указанному пути, а не файл, расположенный в корневом каталоге резервной копии.

-n
--no-parse-wal

Не пытайтесь анализировать данные журнала предварительной записи, которые будут необходимы для восстановления из этой резервной копии.

-P
--progress

Включить отчет о прогрессе. Включение этой опции позволит получать отчет о прогрессе при проверке контрольных сумм.

Эта опция не может использоваться вместе с опцией --quiet.

-q
--quiet

Не выводить ничего, когда резервная копия успешно проверена.

-s
--skip-checksums

Не проверять контрольные суммы файлов данных. При этом все равно будет проверяться наличие или отсутствие файлов и их размеры. Это гораздо быстрее, так как сами файлы не нужно читать.

-w path
--wal-directory=path

Попробуйте разобрать файлы WAL, хранящиеся в указанном каталоге, а не в pg_wal. Это может быть полезно, если резервная копия хранится в отдельном месте от архива WAL.

Доступны и другие варианты:

-V
--version

Выведите версию pg_verifybackup и завершите работу.

-?
--help

Показать справку о командной строке для pg_verifybackup и выйти.

Примеры

Для создания базовой резервной копии сервера на mydbserver и проверки целостности резервной копии:

$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data
$ pg_verifybackup /usr/local/pgsql/data

Для создания базовой резервной копии сервера на mydbserver, переместите манифест вне каталога резервной копии и проверьте резервную копию:

$ 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

См. также

pg_basebackup