БД, полностью очистились данные из всех секций секционированной таблицы.
При этом процесс postgres даже не останавливался.
В логах было "Управляющий процесс отдал команду этому серверному процессу откатить текущую транзакцию и завершиться, так как другой серверный процесс завершился аварийно и возможно разрушил разделяемую память"
После запустилось автоматическое восстановление, при котором было несколько ошибок вида "запись REDO начинается со смещения 1D/5387A130"
После восстановления новые данные начали записываться, но при этом все старые партиции этой секционированной таблицы (в сумме их было несколько десяткой) просто стали пустыми (размер смотрю через \dt+ ), при этом на диске освободилось около 500Гб.
Секционирование декларативное.
Как такое можно объяснить?
Вариант кривых рук не рассматривали? То есть не было случайно подозрительных логинов?
Переполнение диска постгрес часто не переживает.
Рассматривал, но не обнаружил
не переживает в смысле запущенного инстанса? но данные в 500GB он не теряет так просто)
Надысь системный каталог потерял. В результате потерялось больше 500 гб.
Есть ли реплика? Там какое состояние?
то есть при повреждении системного каталога могут физически потеряться данные на сотни Гб?
то есть corruption? в таком случаи кто мог удалить сами файлы?
"так как другой серверный процесс завершился аварийно и возможно разрушил разделяемую память" Это полное завершение всех процессов.
Судя по времени START процессов (смотрю через ps), процессы /opt/pgpro/std-12/bin/postgres -D /var/lib/pgpro/std-12/data и postgres: logger не завершались во время сбоя.
Обсуждают сегодня