Подключение и переиндексация базы данных Postgres с ошибками системных таблиц

У меня есть база данных Postgres, которая потерпела крах (так же как и диск) и перенесла некоторые ошибки в данных ( после сбоя диска БД теперь "поиск кэша для индекса не удался").

Первоначальная проблема, по-видимому, связана с системными таблицами, как предполагает ответ на этот вопрос. Однако было невозможно даже попытаться переиндексировать базу данных.

Попытка postgres -P -D datadir dbname выдает ту же ошибку, FATAL: cache lookup failed for index 2662 - разве это не то, что флаг -P должен обойти?

Как подключиться к базе данных, чтобы переиндексировать базу данных, если вы не можете игнорировать системные таблицы? Или что-то еще происходит?

1 ответ

Решение

В этом случае, когда флаг -P по-прежнему приводит к ошибкам, база данных почти наверняка не подлежит (разумному) восстановлению.

Это:

postgres -O -P -D /data/dir -c log_error_verbosity=verbose dbname

дает дополнительную информацию. В данном случае это означало повреждение за пределами таблицы pg_class.

Больше информации в списке pgsql-admin.

Другие вопросы по тегам