Путём появления битого "железа", чаще всего. ;) Ну или неправильных настроек OS, т.е. таких, что FS теряет те данные, о которых она уже сообщила PostgreSQL, что надёжно их записала на диск — это случается при выключении питания сервера (или аварийной остановке VM). Далее, в некоторых OS реализация надёжной записи в некоторых ситуациях (при использовании дисковых подсистем, способных к самовосстановлению после отказа, в основном — к счастью, его не так много) просто дефектна, см.: https://wiki.postgresql.org/wiki/Fsync_Errors Ну и некоторые [дистрибутивы] OS (иногда — "без предупреждения") могут менять работу библиотечных вызовов (при обновлении библиотек, например), стабильное поведение которых критически важно для работы некоторых индексов, см., например: https://wiki.postgresql.org/wiki/Locale_data_changes И ошибки в коде работы PostgreSQL с индексами тоже возможны... но это не то, о чём стоит думать в первую очередь.
Большое спасибо, Ярослав! Пойду курить статьи в добавок.
Обсуждают сегодня