Подключение и переиндексация базы данных 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.