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