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