Я использую pg_dump для своей основной резервной копии каждые три часа. Еще пользуюсь monit. Когда monit проверяет, жив ли PostgreSQL во время запуска pg_dump, он иногда выходит из строя и перезапускает postgres. Это приводит к сбою резервного копирования.
Что делать? Перейти к журналам упреждающей записи? Отключить мониторинг во время резервного копирования? В это время база данных обслуживает активный веб-сайт.
Конфигурация монитора:
check process postgres with pidfile /usr/local/pgsql/data/postmaster.pid
group database
start program = "/etc/init.d/postgresql start"
stop program = "/etc/init.d/postgresql stop"
if failed unixsocket /tmp/.s.PGSQL.5432 protocol pgsql then restart
if failed host 127.0.0.1 port 5432 protocol pgsql then restart
if 5 restarts within 5 cycles then timeout
Так что-то вроде этого?
if failed unixsocket /tmp/.s.PGSQL.5432 protocol pgsql for 5 cycles then restart
if failed host 127.0.0.1 port 5432 protocol pgsql for 5 cycles then restart
if 5 restarts within 25 cycles then timeout
Таким образом, проверка монитора должна быть недоступна в течение 15 минут перед перезапуском. Предполагая интервал цикла 180 секунд. Очевидно, вы можете приспособиться к своим вкусам, но сброс после единственной неудачной проверки может привести к ложным срабатываниям, если ваш сервер занят или занят иным образом.