Feb 15, 2024 14:39
На старости лет узнал, что у PostgreSQL есть три режима выключения: smart, fast и immediate. Первый из них почему-то перевели на русский как "вежливый". Это когда база ждёт пока все клиенты завершат текущую сессию, делает checkpoint, и только после этого выключается.
Fast - не ждать клиентов, обрубить сессии принудительно, сделать checkpoint, выключиться.
Immediate - не делать даже checkpoint, выключиться сразу.
Так вот, единственный способ сделать "вежливое" выключение - послать SIGTERM мастер-процессу Postgres-а. Даже те утилиты, в которых вроде бы предусмотрена опция "-m smart", всё равно инициируют "быстрый" shutdown. Равно как и "systemctl stop".
Интересно почему? Типа, как показала практика, вежливый режим всё равно никому не нужен в реальной жизни?
UPDATE
Оказывается, таки есть способ выбрать способ выключения через утилиты из комплекта поставки Postgres. Просто их надо запускать с дополнительным ключиком "--skip-systemctl-redirect". О как. Типа вот такого: "sudo -u postgres pg_ctlcluster 15 main stop -m smart --skip-systemctl-redirect".
дазыбанных,
postgresql,
it