PostgreSQL настройка непрерывного архивирования WAL
Для включения архивирования в конфигурационном файле postgresql.conf установим параметр wal_level в значение archive, параметр archive_mode в on и укажем в archive_command директорию для архивирования. Для задания частоты архивирования, используется параметр archive_timeout.
Пример archive_command
archive_command = 'test ! -f /var/lib/pgsql/start_backup || (test ! -f /var/lib/pgsql/wal_archive/%f && cp %p /var/lib/pgsql/wal_archive/%f)'
/var/lib/pgsql/wal_archive/ - директория куда будут копироваться архивные файлы
%f - замещается номером архивного файла
Создадим необходимую директорию и файл
# su - postgres
$ mkdir -p /var/lib/pgsql/wal_archive
$ touch /var/lib/pgsql/start_backup
Перезапустим сервер БД
# /etc/init.d/postgresql-9.2 restart
Запуск архивирования
$ psql -c "select pg_start_backup('test');"
pg_start_backup
-----------------
0/29000020
(1 row)
test - идентификатор резервного копирования в виде любой строки.
/var/lib/pgsql/start_backup - файл переключатель, archive_command будет выполняться пока будет существовать этот файл. Файл необходимо создавать до запуска процесса архивирования.
Остановка архивирования
$ psql -c "select pg_stop_backup();"
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
pg_stop_backup
----------------
0/34000098
(1 row)
Удалим файл переключатель
$ rm /var/lib/pgsql/start_backup
Для автоматизации включения/остановки непрерывного копирования, следует последовательно поместить команды архивирования в скрипт.