pg_verifybackup
Эта страница переведена при помощи нейросети GigaChat.
pg_verifybackup
— проверяет целостность резервной копии базы данных кластера PostgreSQL.
Синтаксис
pg_verifybackup [option...]
Описание
pg_verifybackup
предназначена для проверки целостности резервной копии кластера базы данных PostgreSQL, сделанной с помощью pg_basebackup
, по манифесту backup_manifest
, созданного сервером во время резервного копирования. Поддерживается только резервная копия в формате plain
, архив в формате tar
необходимо предварительно распаковать.
Проверка, выполняемая pg_verifybackup
, не охватывает все возможные ошибки, которые могут возникнуть при использовании резервной копии на работающем сервере. Даже при использовании этой утилиты рекомендуется выполнить пробное восстановление и убедиться, что базы данных запускаются и содержат ожидаемые данные. Тем не менее, pg_verifybackup
позволяет обнаружить множество типичных проблем, например, вызванных сбоями хранилища или ошибками пользователя.
Проверка резервной копии выполняется в четыре этапа:
-
Чтение файла
backup_manifest
.pg_verifybackup
сначала считывает файлbackup_manifest
. Если этот файл отсутствует, его невозможно прочитать, он имеет неправильный формат, не соответствует идентификатору системы сpg_control
каталога резервного копирования или не прошел проверку контрольной суммы,pg_verifybackup
завершится фатальной ошибкой. -
Проверка структуры файлов.
Сравнивается фактический набор файлов резервной копии с ожидаемым — на основе манифеста. Будут выявлены отсутствующие и дополнительные файлы (за некоторыми исключениями).
Игнорируются файлы
postgresql.auto.conf
,standby.signal
иrecovery.signal
. Эти файлы могут появляться или изменяться в процессе создания резервной копии. Также не проверяютсяbackup_manifest
, содержимое каталогаpg_wal
.Проверяются только файлы. наличие или отсутствие каталогов контролируется только косвенно: если каталог отсутствует, будут отсутствовать и все файлы, которые должны в нем содержаться.
-
Сравнение контрольных сумм.
Для всех файлов, успешно прошедших предыдущий этап, вычисляются контрольные суммы и сравниваются с теми, что указаны в манифесте. Если контрольные суммы не совпадают, выдается ошибка. Файлы, которые были проигнорированы на предыдущем этапе, также игнорируются.
-
Проверка журналов WAL (
write-ahead log
).pg_verifybackup
использует манифест, чтобы убедиться, что в журнале WAL присутствуют все записи, необходимые для восстановления, и что их можно успешно прочитать (файлbackup_manifest
содержит информацию о требуемых записях).pg_verifybackup
вызываетpg_waldump
с параметром--quiet
(сообщает только об ошибках) для анализа этих журналов. Утилита обнаружит только очевидные ошибки (отсутствующие или поврежденные файлы). Сложные ошибки, например, если из-за сбоя сервера в журнал WAL будут попадать записи с корректными контрольными суммами, но с некорректным содержимым,pg_verifybackup
их не распознает.
Дополнительные WAL-файлы, не требующихся для восстановления копии (не указанные в манифесте), не проверяются, но можно их проверить с помощью pg_waldump
.
Проверка WAL-файлов зависит от версии PostgreSQL: используйте pg_verifybackup
и pg_waldump
той же версии, что и сервер, сделавший резервную копию. В отличие от WAL, проверки целостности файлов работают с данными любой версии сервера, сформировавшего файл 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
- Отключает попытки разобрать записи журнала предзаписи (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