Я недавно отлаживал проблему с повреждением базы данных PostgreSQL 9.2 (в Solaris, но я сомневаюсь, что это важно), и я обнаружил, что мы можем надежно воспроизвести ее, если клиент умер в середине транзакции, а затем я закрыл PostgreSQL, выполнив pkill postgres
(который в основном отправляет SIGTERM
каждому запуску postgres
процесс). Если бы вместо этого мы сделали pkill -QUIT postgres
, чтобы отправить SIGQUIT
, база данных будет закрыта чистой и никакой коррупции не произойдет.безопасно убивать процессы postgres с помощью SIGTERM?
Основываясь на PostgreSQL 9.2 docs, я думаю, что SIGTERM
должен быть на 100% ожидаемым сервером базы данных, так почему это не безопасно закрывать, как это? Это ошибка в PostgreSQL, или я могу что-то делать (конфигурация и т. Д.), Чтобы разрешить возникновение коррупции?
(1) это вопрос, более подходящий для dba.stackexchange.com; (2) какая именно версия, 9.2.что? (3) что такое «коррупция», о которой вы говорите? Какая ошибка, журналы, симптомы и т. Д.? (4) Любая безопасная опция, например, отключенный fync или full_page_writes? – MatheusOl