Валидация заархивированных WAL-файлов
Исполнять сценарий необходимо от имени пользователя postgres.
Описание сценария
Валидация заархивированных WAL-файлов
Последовательность выполнения
-
В конфигурационном файле
copywala.yamlзадайте параметры:wal_destination_uri– путь к хранилищу для архивированных WAL-файлов;wal_segment_size– размер одного WAL-файла. По умолчанию – 16 МБ. Переопределите значение, если в целевой БД используются WAL-файлы другого размера. Значение необходимо задавать с указанием единиц измерения, например:16MB,16384KB,0.016GB.
-
Выполните команду:
copywala wals verify(ознакомьтесь со справкой по команде ниже).Справка по команде
copywala wals verifyОписание:
Выполняет проверку заархивированных WAL-файлов в хранилище, анализируя их целостность и корректность временных линий. Помогает выявить пропуски, поврежденные файлы и несоответствия конфигурации WAL.
Синтаксис:
copywala wals verify [flags]Обязательные параметры:
Если в целевой БД используются WAL-файлы нестандартного размера (не 16 МБ), а в конфигурационном файле
copywala.yamlне задан параметрwal_segment_size, то при выполнении командыcopywala wals verifyобязательно укажите флаг--auto-wal-segment-size.Этот флаг позволяет автоматически определить размер WAL-файла по последнему заархивированному WAL-файлу.
подсказкаЧтобы в дальнейшем не использовать флаг
--auto-wal-segment-size:-
Вызовите
copywala wals verify --auto-wal-segment-size. -
В результате вывода определите размер WAL-файла. Пример вывода:
2026-01-22 13:13:41 [756] INF auto detected WAL segment size: 32MiB -
Укажите данное значение в конфигурационном файле
copywala.yamlдля параметраwal_segment_size.
В дальнейшем, при вызове
copywala wals verify, указание флага--auto-wal-segment-sizeне требуется.Опциональные параметры:
[flags]– доступны следующие флаги:Флаг Описание -h|--helpПоказать справку по команде -c|--config <path to copywala config>Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala.yaml--auto-wal-segment-sizeАвтоматическое определение размера WAL-файла на основе последнего заархивированного файла --filter-max-lsn <max LSN value>Максимальное значение LSN для фильтрации WAL-файлов (по умолчанию – FFFFFFFF/FFFFFFFF)--filter-min-lsn <min LSN value>Минимальное значение LSN для фильтрации WAL-файлов (по умолчанию – 0/0)--filter-max-time <max time>Конечное время для фильтрации WAL-файлов (по умолчанию – текущее время) --filter-min-time <min time>Начальное время для фильтрации WAL-файлов (по умолчанию – 1970-01-01T03:00:00+03:00)--filter-max-wal <wal name>Имя WAL-файла, до которого будет выполняться фильтрация --filter-min-wal <wal name>Имя WAL-файла, начиная с которого будет выполняться фильтрация --integrityАнализ WAL-файлов с выводом их общего количества, количества невалидных сегментов и информации о возможных пропусках и проблемах с валидностью WAL-сегментов. Не проверяет контрольные суммы WAL-файлов --integrity-fullАнализ WAL-файлов аналогичный как при использовании флага --integrity, но дополнительно включая проверку контрольных сумм--timelineПроверка корректности текущей временной линии --clean-cacheОчистка текущего кеша перед выполнением проверки. Флаг работает только вместе с флагом --integrity-fullи используется совместно с--use-cache--use-cacheВключение использования кеша при проверке целостности WAL-файлов (по умолчанию кеширование выключено). Флаг работает только вместе с флагом --integrity-full. Использования кеша позволяет пропустить уже проверенные WAL-файлы и ускорить выполнение команды.примечаниеЕсли флаги
--integrityи--timelineне указаны при запуске, по умолчанию выполняются обе проверки. -
Результат
В результате выполнения команды будет выведена информация по заданным проверкам. Пример выходных данных:
$ copywala wals verify --integrity --timeline
[verify] integrity check status: OK
[verify] integrity check details:
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
| 1 | 0000000100000018000000DF | 0000000100000018000000E1 | 3 | FOUND |
| 2 | 0000000200000018000000E2 | 000000020000001D00000004 | 1059 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
[verify] timeline check status: OK
[verify] timeline check details:
Highest timeline found in storage: 2
Current cluster timeline: 2
Исключительные сценарии
Будет выведено соответствующее сообщение для случаев:
-
При запуске команды
copywala wals verifyразмер WAL-сегментов сверяется с текущим размером сегмента в БД, в случае отличия будет выведено сообщение:ERR wals verify failed err="segment size from db are not equal to auto detected from first wal file: 16777216 != 35651584" -
В хранилище для данной БД нет WAL-файлов:
No WAL files found in storage -
Отсутствие прав на просмотр хранилища:
ERR wals verify failed err="request wal files from local storage: open /backups/db0_019a02c3-6783-7e22-805d-925a2df93937/wals: permission denied" -
Неверно настроенная конфигурация:
ERR init config err="config file parsing error: uri: \"test:///backups\" | provided schema is not supported"