qhb_verifybackup

qhb_verifybackup — проверить целостность базовой резервной копии кластера QHB


Синтаксис

qhb_verifybackup [параметр...]

Описание

Утилита qhb_verifybackup используется для проверки целостности резервной копии кластера баз данных, сделанной утилитой qhb_basebackup по манифесту backup_manifest, сгенерированному сервером во время резервного копирования. Эта копия должна храниться в формате «plain»; копию в формате «tar» можно проверить, разархивировав ее.

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

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

На втором этапе qhb_verifybackup попытается проверить, что файлы данных, в настоящий момент хранящиеся на диске, в точности совпадают с файлами данных, которые собирается передать сервер, за некоторыми исключениями, описанными ниже. При этом будут выявлены все лишние и отсутствующие файлы, за некоторыми исключениями. На этом этапе будет игнорироваться наличие, отсутствие или какое-либо изменение файлов qhb.auto.conf, standby.signal и recovery.signal, поскольку ожидается, что эти файлы могут создаваться или меняться в процессе создания резервной копии. Также не будет учитываться файл backup_manifest в целевом каталоге и все содержимое каталога pg_wal, несмотря на то что эти файлы не будут перечислены в манифесте резервной копии. Проверяются только файлы; наличие или отсутствие каталогов контролируется только косвенно: если каталог отсутствует, все файлы, которые он должен содержать, тоже безусловно будут отсутствовать.

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

В конце qhb_verifybackup воспользуется манифестом для проверки наличия в журнале упреждающей записи всех записей, необходимых для восстановления из резервной копии, а также того, можно ли их прочитать и проанализировать. В файле backup_manifest содержится информация о том, какие записи WAL понадобятся, и qhb_verifybackup воспользуется этой информацией для утилиты qhb_waldump, чтобы синтаксически проанализировать эти записи. При этом будет передан флаг --quiet, так что qhb_waldump будет сообщать только об ошибках, не выводя каких-либо других сообщений. Хотя этот уровень проверки достаточен для выявления очевидных проблем, таких как отсутствие файла или несоответствие внутренних контрольных сумм, он недостаточно масштабен для выявления всех возможных проблем, которые могут возникнуть при попытке восстановления базы данных. К примеру, этим методом нельзя обнаружить ошибку сервера, приводящую к появлению записей WAL с правильными контрольными суммами, но при этом задающих бессмысленные действия.

Обратите внимание, что при наличии дополнительных файлов WAL, не требующихся для восстановления из резервной копии, они не будут проверяться этим инструментом, хотя для этой цели можно отдельно вызвать qhb_waldump. Также обратите внимание, что проверка WAL зависит от версии: следует использовать версию qhb_verifybackup и, как следствие, qhb_waldump, соответствующую проверяемой копии. И наоборот, проверки целостности файлов данных должны работать с любой версией сервера, сгенерировавшего файл backup_manifest.


Параметры

Утилита qhb_verifybackup принимает следующие аргументы командной строки:

-e
--exit-on-error
Завершиться сразу после обнаружения проблемы с резервной копией. Если этот параметр не задан, qhb_verifybackup продолжит проверять копию даже после обнаружения первой проблемы и будет сообщать обо всех проблемах как об ошибках.

-i путь
--ignore=путь
Игнорировать указанный файл или каталог, который должен быть задан относительным путем, при сравнении списка файлов данных, фактически присутствующих в резервной копии, со списком в файле backup_manifest. Если указывается каталог, этот параметр действует на все дерево подкаталогов с корнем в заданном расположении. Если относительный путь файла совпадает с указанным, предупреждения о лишних или отсутствующих файлах, разницах в размерах файлов или несоответствиях контрольных сумм выдаваться не будут. Этот параметр можно задать несколько раз.

-m путь
--manifest-path=путь
Использовать файл манифеста по указанному пути, а не тот, который расположен в корневом каталоге резервной копии.

-n
--no-parse-wal
Не пытаться проанализировать данные журнала упреждающей записи, которые понадобятся для восстановления из этой резервной копии.

-q
--quiet
Не выводить ничего, когда резервная копия успешно проходит проверку.

-s
--skip-checksums
Не проверять контрольные суммы файлов данных. При этом все равно будет проверяться наличие или отсутствие этих файлов и их размеры. С этим параметром проверка выполняется гораздо быстрее, так как нет необходимости читать сами файлы.

-w путь
--wal-directory=путь
Попытаться проанализировать файлы WAL, хранящиеся в указанном каталоге, а не в pg_wal. Это может быть полезно, если резервная копия сохраняется отдельно от архива WAL.

Также доступны и другие параметры:

-V
--version
Вывести версию qhb_verifybackup и завершиться.

-?
--help
Показать справку об аргументах командной строки qhb_verifybackup и завершиться.


Примеры

Создать базовую резервную копию сервера mydbserver и проверить целостность этой копии:

$ qhb_basebackup -h mydbserver -D /var/lib/qhb/data/data
$ qhb_verifybackup /var/lib/qhb/data/data

Создать базовую резервную копию сервера mydbserver, переместить файл манифеста куда-нибудь во внешний каталог и проверить эту копию:

$ qhb_basebackup -h mydbserver -D /var/lib/qhb/data/backup1234
$ mv /var/lib/qhb/data/backup1234/backup_manifest /my/secure/location/backup_manifest.1234
$ qhb_verifybackup -m /my/secure/location/backup_manifest.1234 /var/lib/qhb/data/backup1234

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

$ qhb_basebackup -h mydbserver -D /var/lib/qhb/data/data
$ edit /var/lib/qhb/data/data/note.to.self
$ qhb_verifybackup --ignore=note.to.self --skip-checksums /var/lib/qhb/data/data

См. также

qhb_basebackup