postgresql 错误 PANIC: 无法找到有效的检查点记录

2024-02-17

当我加载 postgres 服务器 (v9.0.1) 时,我会出现恐慌,导致其无法启动:

PANIC:无法找到有效的检查点记录

我怎样才能解决这个问题?


Postgres 正在事务日志中查找可能不存在或已损坏的检查点记录。

在您继续之前,你必须意识到以下情况可能会让事情变得更糟如果你不幸的话。pg_resetwal可能会使您的数据库处于不确定状态,如PostgreSQL 文档pg_resetwal https://www.postgresql.org/docs/current/app-pgresetwal.html:

If pg_resetwal抱怨它无法确定有效数据pg_control,您可以通过指定强制它继续进行-f(强制)选项。在这种情况下,合理的值将被替换 对于缺失的数据。大多数字段都可以匹配,但是 下一个 OID、下一个事务可能需要手动协助 ID 和纪元、下一个多事务 ID 和偏移量以及 WAL 起始 位置字段。可以使用讨论的选项设置这些字段 以下。如果您无法确定所有这些的正确值 领域,-f仍然可以使用,但是恢复的数据库必须是 受到比平常更多的怀疑:立即倾倒并 重新加载势在必行。不要执行任何数据修改操作 在转储之前先检查数据库,因为任何此类操作都可能会导致 腐败更严重。

您可以通过运行以下命令来确定是否属于这种情况:

# Postgres >= 10
pg_resetwal DATADIR

# Postgres < 10
pg_resetxlog DATADIR

如果事务日志已损坏,您将看到类似以下的消息:

The database server was not shut down cleanly.  
Resetting the transaction log might cause data to be lost.  
If you want to proceed anyway, use `-f` to force reset.

然后您可以按照说明并运行-f强制更新:

# Postgres >= 10
pg_resetwal -f DATADIR

# Postgres < 10
pg_resetxlog -f DATADIR 

这应该重置事务日志。然而,如上所述,这是一个有风险的操作。您最好寻求专业建议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

postgresql 错误 PANIC: 无法找到有效的检查点记录 的相关文章

随机推荐