我有一个 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 管理列表。