2.8. Настройка непрерывного архивирования WAL #
Для восстановления на момент времени и создания резервных копий с использованием режима доставки WAL ARCHIVE должно осуществляться непрерывное архивирование WAL. Чтобы настроить непрерывное архивирование, выполните следующие действия:
Задайте для параметра wal_level значение выше
minimal.Если вы настраиваете резервное копирование на ведущем сервере, параметр archive_mode должен иметь значение
onилиalways.Установите параметр 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 должен указывать на каталог каталог. Программа pg_probackup3 принимает сжатые WAL, которые может сохранять pg_receivewal. Стратегию архивирования «без потерь» можно реализовать только с использованием pg_receivewal.каталог_копий/wal/имя_экземпляра