Postgres 9.1.6 Индекс ошибки содержит неожиданную нулевую страницу в блоке 0

8

У меня настроена потоковая репликация на Postgres 9.1.6, работающей на сервере Debian, и все идет нормально.

Когда я пытаюсь выполнить запрос к базе данных реплики, я получаю сообщение об ошибке ниже:

ERROR:  index "tbl_cust_id_idx" contains unexpected zero page at block 0
HINT:  Please REINDEX it.

Что может быть причиной этой ошибки?

Вопрос также размещен в /programming/17865135/postgres-9-1-6-error-index-contains-unexpected-zero-page-at-block-0

McKibet
источник
Можете ли вы выполнить какие-либо другие запросы: SELECT version()или SELECT now()?
1
Вы получаете эту ошибку при подключении к базе данных? Вы можете подключиться вообще? Если да, можете ли вы успешно выдавать запросы? В противном случае это выглядит не очень хорошо. Каковы ваши настройки fsync на реплике? Что мы знаем о системе хранения там?
Дезсо

Ответы:

7

Я только что столкнулся с той же проблемой на Postgres 8.3.11. Хотя я не мог определить основную причину, исправление было достаточно простым:

REINDEX INDEX tbl_cust_id_idx;

Эта страница содержит подсказки относительно того, что, возможно, вызвало ошибку, хотя они расплывчаты:

Указанный индекс таблицы был поврежден (это может быть результатом недавних ошибок postgres или системы, нехватки свободного места на устройстве и т. Д.).

В идеале было бы полезно, если бы было что-то, что можно было бы предпринять для упреждающего предотвращения или исправления этих ошибок. С другой стороны, мы впервые увидели эту проблему за несколько лет на сотнях машин.

Джастин этир
источник