Вежливый PostgreSQL

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

Previous post Next post
Up