2.8. Настройка непрерывного архивирования WAL #

Для восстановления на момент времени и создания резервных копий с использованием режима доставки WAL ARCHIVE должно осуществляться непрерывное архивирование WAL. Чтобы настроить непрерывное архивирование, выполните следующие действия:

  1. Задайте для параметра wal_level значение выше minimal.

  2. Если вы настраиваете резервное копирование на ведущем сервере, параметр archive_mode должен иметь значение on или always.

  3. Установите параметр archive_command:

    archive_command = '"путь_инсталляции/pg_probackup3" archive-push -B "каталог_копий" --instance=имя_экземпляра --wal-file-name=%f [параметры_ssh]'

Здесь путь_инсталляции — путь к каталогу установленной версии pg_probackup3, которую вы хотите использовать, каталог_копий и имя_экземпляра должны указывать на уже проинициализированный для данного кластера БД копируемый экземпляр, а параметры SSH должны задаваться только в случае расположения архива WAL в удалённой системе. Подробнее все возможные параметры archive-push рассматриваются в archive-push.

Параметр --wal-file-path задаёт путь к файлу WAL, используемому командой archive-push. Этот путь может быть абсолютным или относительным. Абсолютный путь используется как есть. Относительный путь интерпретируется относительно текущего рабочего каталога. При вызове через archive_command Postgres Pro выбирает текущим рабочим каталогом PGDATA, поэтому относительные пути вида pg_wal/... работают корректно:

archive_command = 'pg_probackup3 archive-push -B /backup --instance=main --wal-file-path=%p --wal-file-name=%f'

Если параметр --wal-file-path опущен, используется каталог pg_wal относительно текущего рабочего каталога:

archive_command = 'pg_probackup3 archive-push -B /backup --instance=main --wal-file-name=%f'

Примечание

При использовании в restore_command Postgres Pro подставляет переменную %p вместо полного пути и %f вместо имени файла перед вызовом pg_probackup3, независимо от того, является путь абсолютным или относительным.

Перед запуском сервера Postgres Pro можно проверить, что WAL корректно отправляется в архив, выполнив команду archive-push вручную из каталога PGDATA:

cd /var/lib/pgsql/data
pg_probackup3 archive-push -B /backup --instance=main --wal-file-path=pg_wal/000000010000000000000001 --wal-file-name=000000010000000000000001

После этих подготовительных действий вы сможете использовать режим доставки WAL ARCHIVE, а также выполнять восстановление на момент времени.

Вы можете просмотреть текущее состояние архива WAL, воспользовавшись командой show. За подробностями обратитесь к Подразделу 3.3.2.

Примечание

Вместо использования команды pg_probackup3 archive-push вы можете воспользоваться любым другим средством, при условии, что в процессе непрерывного архивирования сегменты WAL будут попадать в каталог каталог_копий/wal/имя_экземпляра. Для сжатия сегментов, если в нём есть потребность, должен использоваться алгоритм gzip, а сжатые файлы сегментов должны иметь расширение .gz.

Примечание

Организовать непрерывное архивирование можно не только с помощью параметров archive_mode и archive_command, но и применяя утилиту pg_receivewal. В этом случае аргумент pg_receivewal -D каталог должен указывать на каталог каталог_копий/wal/имя_экземпляра. Программа pg_probackup3 принимает сжатые WAL, которые может сохранять pg_receivewal. Стратегию архивирования «без потерь» можно реализовать только с использованием pg_receivewal.