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"

Если вы укажете ид_резервной_копии, относящийся к инкрементальной копии, будут проверены все нужные ей родительские копии, начиная с полной.

Если вы опустите все параметры, будут проверены все резервные копии.