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
Для автоматизации включения/остановки непрерывного копирования, следует последовательно поместить команды архивирования в скрипт.
PostgreSQL запуск и остановка сервера БД
# su - postgres
Отображение статуса сервера БД
$ /usr/pgsql-9.2/bin/pg_ctl status
pg_ctl: no server running
Запуск с помощью утилиты pg_ctl
$ /usr/pgsql-9.2/bin/pg_ctl start
Остановка
$ /usr/pgsql-9.2/bin/pg_ctl stop
Перезапуск
$ /usr/pgsql-9.2/bin/pg_ctl restart
waiting for server to shut down.... done
server stopped
server starting
Основные ключи:
-D, --pgdata=DATADIR - расположение области хранения базы данных
-s, --silent - отображать ошибки, не информационные сообщения
-t, --timeout=SECS - ожидание в секундах при использовании -w option
-V, --version - ифнормация о версии, затем exit
-w - ждать до завершения операции
-W - не ждать завершения операции
-?, --help - отображение подсказки
Опции выключения и перезапуска: -m, --mode=MODE MODE can be "smart", "fast", or "immediate"
smart - выключение после отсоединения всех клиентов
fast - корректное выключение
immediate - выключение без остановки.
Также от пользователя root можно управлять запуском/остановкой сервера БД с помощью init скриптов
/etc/init.d/postgresql-9.2 status проверка состояния
/etc/init.d/postgresql-9.2 start запуск
/etc/init.d/postgresql-9.2 stop остановка