Настройка архивирования журналов транзакций

СУБД на основе PostgreSQL хранят журналы транзакций. Эти журналы позволяют восстановить БД к консистентному состоянию путем последовательного применения сохраненных транзакций. Архивирование и резервное копирование этих журналов позволит восстановить БД как из любого неконсистентного состояния, так и восстановить БД на любой заданный момент времени (point-in-time recovery, PITR).

Чтобы включить режим архивирования журналов транзакций (ARCHIVE):

  1. Установите на ведущем сервере параметру wal_level значение replica.

  2. Установите параметру archive_mode значение yes или always (на ведомом сервере — всегда always).

  3. Задайте команды сохранения (archive_command) и восстановления (restore_command) журналов транзакций.

    Пример 1. Настройка архивирования журналов транзакций в postgresql.conf через утилиту cp
    wal_level = replica
    archive_mode = on
    archive_command = 'cp %p /opt/rubackup/mnt/postgresql_archives/%f'
    restore_command = 'cp /opt/rubackup/mnt/postgresql_archives/%f %p'
    Пример 2. Настройка архивирования журналов транзакций в postgresql.conf через утилиту rb_module_postgresql
    wal_level = replica
    archive_mode = on
    archive_command = '/opt/rubackup/modules/rb_module_postgresql pgsql-archive-push %p'
    restore_command = '/opt/rubackup/modules/rb_module_postgresql pgsql-archive-get %f %p'
    Параметр восстановления restore_command используется только для версии PostgreSQL 12 и выше.

    Допускается сжатие архивных файлов транзакций во время архивирования или восстановления из архива.

    Пример 3. Команды сжатия и распаковки архивных журналов транзакций
    archive_command = 'gzip < %p > /opt/rubackup/mnt/postgresql_archives/%f.gz'
    restore_command = 'gunzip < /opt/rubackup/mnt/postgresql_archives/%f.gz > %p'
  4. Выдайте пользователю postgres права на чтение и запись в каталог, в котором хранятся архивные журналы транзакций (WAL-файлы).

    Пример 4. Выдача прав доступа пользователю postgres на каталог /opt/rubackup/mnt/postgresql_archives/
    sudo chown postgres:postgres /opt/rubackup/mnt/postgresql_archives/
    Каталог также должен быть доступен для записи и чтения пользователю, под контролем которого работает клиент RuBackup.

На папку, хранящую архив журналов транзакций, необходимо указать в файле настроек модуля (параметр archive_catalog).