Настройка архивирования журналов транзакций
СУБД на основе PostgreSQL хранят журналы транзакций. Эти журналы позволяют восстановить БД к консистентному состоянию путем последовательного применения сохраненных транзакций. Архивирование и резервное копирование этих журналов позволит восстановить БД как из любого неконсистентного состояния, так и восстановить БД на любой заданный момент времени (point-in-time recovery, PITR).
Чтобы включить режим архивирования журналов транзакций (ARCHIVE):
-
Установите на ведущем сервере параметру
wal_level
значениеreplica
. -
Установите параметру
archive_mode
значениеyes
илиalways
(на ведомом сервере — всегдаalways
). -
Задайте команды сохранения (
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'
-
Выдайте пользователю
postgres
права на чтение и запись в каталог, в котором хранятся архивные журналы транзакций (WAL-файлы).Пример 4. Выдача прав доступа пользователюpostgres
на каталог/opt/rubackup/mnt/postgresql_archives/
sudo chown postgres:postgres /opt/rubackup/mnt/postgresql_archives/
Каталог также должен быть доступен для записи и чтения пользователю, под контролем которого работает клиент RuBackup.
На папку, хранящую архив журналов транзакций, необходимо указать
в файле настроек модуля (параметр
archive_catalog
).