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