Перейти к основному содержимому

pg_verifybackup

примечание

Эта страница переведена при помощи нейросети GigaChat.

pg_verifybackup — проверяет целостность резервной копии базы данных кластера PostgreSQL.

Синтаксис

pg_verifybackup [option...]

Описание

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

Внимание!

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

Проверка резервной копии выполняется в четыре этапа:

  1. Чтение файла backup_manifest.

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

  2. Проверка структуры файлов.

    Сравнивается фактический набор файлов резервной копии с ожидаемым — на основе манифеста. Будут выявлены отсутствующие и дополнительные файлы (за некоторыми исключениями).

    Игнорируются файлы postgresql.auto.conf, standby.signal и recovery.signal. Эти файлы могут появляться или изменяться в процессе создания резервной копии. Также не проверяются backup_manifest, содержимое каталога pg_wal.

    Проверяются только файлы. наличие или отсутствие каталогов контролируется только косвенно: если каталог отсутствует, будут отсутствовать и все файлы, которые должны в нем содержаться.

  3. Сравнение контрольных сумм.

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

  4. Проверка журналов 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

Смотрите также

pg_basebackup