Когда в кластере БД включены контрольные суммы, pg_probackup3 использует их для проверки целостности файлов данных в процессе резервного копирования. При чтении каждой страницы pg_probackup3 проверяет, совпадает ли вычисленная сумма с контрольной суммой, хранящейся в заголовке страницы. Это гарантирует, что в кластере Postgres Pro и самой резервной копии не содержатся испорченные страницы. Заметьте, что pg_probackup3 читает файлы данных непосредственно из файловой системы, поэтому при активной записи в момент копирования возможны ложные выявления некорректных контрольных сумм из-за частичной записи. В случае несовпадения контрольной суммы страница считывается повторно, и контрольная сумма проверяется ещё раз.
Страница признаётся испорченной, если проверка контрольной суммы не проходит более 300 раз. В этом случае резервное копирование прерывается.
Даже если контрольные суммы не включены, pg_probackup3 всегда проверяет целостность заголовков страниц.
pg_probackup3 вычисляет контрольные суммы для всех файлов копии в ходе резервного копирования. Процесс проверки контрольных сумм файлов называется проверкой целостности копии. По умолчанию проверка выполняется сразу после создания резервной копии и непосредственно перед восстановлением для выявления возможных повреждений резервных копий.
Примечание
При проверке резервной копии также проверяются контрольные суммы файлов CFS.
Если вы хотите пропустить проверку резервной копии, вы можете передать командам backup и restore флаг --no-validate
.
Например, чтобы убедиться, что вы можете восстановить кластер баз данных из резервной копии, остановившись на транзакции с идентификатором 4242, выполните команду:
pg_probackup3 validate -Bкаталог_копий
--instance=имя_экземпляра
--recovery-target-xid=4242
Если проверка проходит успешно, pg_probackup3 выдаёт сообщение об этом. В случае же неудачи вы получите сообщение об ошибке с указанием точного времени, идентификатора транзакции и значения LSN, до которого возможно восстановление.
Если вы укажете идентификатор копии в ключе -i/--backup-id
, будет проверена только резервная копия с указанным идентификатором. Если идентификатор копии указывается вместе с параметрами точки восстановления, команда validate проверит, возможно ли восстановить указанную резервную копию до заданной точки.
Например, чтобы убедиться, что можно восстановить кластер баз данных из резервной копии с идентификатором SBOL6P
до заданного момента времени, выполните команду:
pg_probackup3 validate -Bкаталог_копий
--instance=имя_экземпляра
-i SBOL6P --recovery-target-time="2024-04-10 18:18:26+03"
Если вы укажете ид_резервной_копии
, относящийся к инкрементальной копии, будут проверены все нужные ей родительские копии, начиная с полной.
Если вы опустите все параметры, будут проверены все резервные копии.