Отложенная доставка WAL-файлов в удаленное хранилище
Шаги сценария
-
Пользователь определяет локальную директорию для хранения WAL-файлов и включает режим отложенной доставки WAL-файлов, для этого в конфигурационном файле
copywala.yamlзадает параметры:wal_archiving:wal_local_destination_uri: <path/to/local/wals/> # путь к локальной директории для накопления WAL-файлов, например, local-fs:///pgarclogs/copywala/force_local: true # флаг переключения на локальное накопление WAL-файлов. При значении true WAL-файлы сохраняются в локальную директорию (wal_local_destination_uri) -
Пользователь включает архивирование WAL-файлов в настройках СУБД (
postgresql.conf) путем установки значенийarchive_mode=onиarchive_command='copywala archive-wal %f %p'. -
При создании нового WAL-файла СУБД запускает команду, указанную в
archive_command, утилита copywala сохраняет WAL-файл в локальную директориюwal_local_destination_uriс суффиксом.upload-ready. -
Пользователь или внешний процесс (cron, таймеры systemd, внешняя СРК) запускает команду
copywala archive-wal upload-walsдля выгрузки накопленных WAL-файлов в удаленное хранилище, которое задается в параметреwal_destination_uriфайлаcopywala.yaml. -
После успешной выгрузки локальные файлы с суффиксом
.upload-readyудаляются.
Исключительные сценарии
В CLI выводится сообщение об ошибке для случаев:
- параллельный процесс выгрузки уже запущен;
- параметр
wal_local_destination_uriне задан; - включена архивация WAL-файлов в CWL-архив (несовместимо с отложенной доставкой);
- недостаточно места на диске для накопления WAL-файлов;
- отсутствие прав на запись в локальную директорию
wal_local_destination_uri; - отсутствие прав на запись в удаленное хранилище
wal_destination_uri.