当我加载postgres服务器(v9.0.1)时,我感到恐慌,无法启动它:
PANIC:找不到有效的检查点记录
我怎样才能解决这个问题?
当我加载postgres服务器(v9.0.1)时,我感到恐慌,无法启动它:
PANIC:找不到有效的检查点记录
我怎样才能解决这个问题?
Answers:
它正在事务日志中寻找可能不存在或已损坏的检查点记录。您可以通过运行以下命令确定是否是这种情况:
# Postgres >= 10
pg_resetwal DATADIR
# Postgres < 10
pg_resetxlog DATADIR
如果事务日志已损坏,您将看到类似以下的消息:
没有完全关闭数据库服务器。重置事务日志可能会导致数据丢失。如果仍要继续,请使用
-f
强制重置。
然后,您可以按照说明进行操作并-f
强制执行更新:
# Postgres >= 10
pg_resetwal -f DATADIR
# Postgres < 10
pg_resetxlog -f DATADIR
那应该重置事务日志,但是它可能使数据库处于不确定状态,如PostgreSQL文档中有关的说明pg_resetwal
:
如果
pg_resetwal
抱怨无法确定的有效数据pg_control
,则可以通过指定-f
(force)选项强制其继续进行 。在这种情况下,将用合理的值代替丢失的数据。可以预期大多数字段都将匹配,但是下一个OID,下一个事务ID和纪元,下一个多事务ID和偏移量以及WAL起始位置字段可能需要手动协助。可以使用下面讨论的选项设置这些字段。如果您无法为所有这些字段确定正确的值,-f
仍然可以使用,但是必须比平时更加怀疑已恢复的数据库:必须立即进行转储和重新加载。转储之前,请不要在数据库中执行任何数据修改操作,因为任何此类操作都可能使损坏更加严重。
pg_resetwal /usr/local/var/postgres/
然后运行像postgres -D /usr/local/var/postgres
我一样的postgres进行重置。