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

Для автоматизации включения/остановки непрерывного копирования, следует последовательно поместить команды архивирования в скрипт.

Дополнительная информация