Документация по перезагрузке службы PostgreSQL, не прерывающая открытые транзакции?

У меня есть рабочая база данных PostgreSQL версии 9.5 с постоянным трафиком. Мне нужно изменить значение в файле pg_hba.conf. Я подтвердил на тестовом сервере, что это можно реализовать, перезагрузив службу postgresql.

Я читал на других сообщениях и сайтах, что вызов pg_ctl reload не вызывает прерываний живых соединений в postgresql. например https://dba.stackexchange.com/questions/41517/is-it-safe-to-call-pg-ctl-reload-while-doing-heavy-writes

Но я пытаюсь найти конкретную документацию о том, что вызов pg_ctl reload или service postgresql-9.5 reload не прерывает и не влияет на какие-либо открытые транзакции или текущие запросы к базе данных.


person Jim Clam    schedule 06.01.2017    source источник


Ответы (1)


Вот это прямо из первых уст

Режим перезагрузки просто отправляет процессу postgres сигнал SIGHUP, заставляя его перечитать свои файлы конфигурации (postgresql.conf, pg_hba.conf и т. д.). Это позволяет изменять параметры конфигурационного файла, для вступления в силу которых не требуется полный перезапуск.

Этот сигнал используется многими другими серверами, включая Apache, NGINX и т. д., для повторного чтения файлов конфигурации без разрыва открытых соединений.

если вы не уверены, попробуйте это после открытия клиента psql или pgadmin или чего-то еще

START TRANSACTION;
/* open the console and do /etc/init.d/postgrsql reload or equivalent for your system */
INSERT INTO my_table(id,name) value(1,'1');
COMMIT;

Если клиент был отключен, вы будете уведомлены.

person e4c5    schedule 06.01.2017
comment
Замечательно! Но я действительно ищу что-то, что говорит о том, что соединения не будут разорваны или открытые транзакции закрыты. Если только не подразумевается, что процесс postgres просто отправляет сигнал SIGHUP... что это именно так. - person Jim Clam; 06.01.2017
comment
Хорошо, круто, и тогда отсутствие разрыва соединений также будет означать, что текущие транзакции будут безопасными, верно. - person Jim Clam; 06.01.2017