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