Перейти к основному содержимому

Отложенная доставка WAL-файлов в удаленное хранилище

Шаги сценария​

  1. Пользователь определяет локальную директорию для хранения 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)
  2. Пользователь включает архивирование WAL-файлов в настройках СУБД (postgresql.conf) путем установки значений archive_mode=on и archive_command='copywala archive-wal %f %p'.

  3. При создании нового WAL-файла СУБД запускает команду, указанную в archive_command, утилита copywala сохраняет WAL-файл в локальную директорию wal_local_destination_uri с суффиксом .upload-ready.

  4. Пользователь или внешний процесс (cron, таймеры systemd, внешняя СРК) запускает команду copywala archive-wal upload-wals для выгрузки накопленных WAL-файлов в удаленное хранилище, которое задается в параметре wal_destination_uri файла copywala.yaml.

  5. После успешной выгрузки локальные файлы с суффиксом .upload-ready удаляются.

Исключительные сценарии​

В CLI выводится сообщение об ошибке для случаев:

  • параллельный процесс выгрузки уже запущен;
  • параметр wal_local_destination_uri не задан;
  • включена архивация WAL-файлов в CWL-архив (несовместимо с отложенной доставкой);
  • недостаточно места на диске для накопления WAL-файлов;
  • отсутствие прав на запись в локальную директорию wal_local_destination_uri;
  • отсутствие прав на запись в удаленное хранилище wal_destination_uri.