首页 > 解决方案 > Docker Postgres 12“恐慌:找不到有效的检查点记录”

问题描述

我正在使用使用 docker 部署 postgresql 12 的 caprover。现在我的 postgresql 数据库不断重新启动并每次都打印此日志:

[24] LOG: invalid resource manager ID ...
[24] LOG: invalid primary checkpoint record ...
[24] PANIC: could not locate a valid checkpoint record

问题是容器立即死亡,所以我无法docker exec尝试pg_dump或在最坏的情况下做任何事情pg_resetwal

知道为什么会这样吗?我怎么可能pg_dumppg_resetwal

标签: postgresqldockercaprover

解决方案


这意味着您丢失了 WAL 信息,也就是说,您丢失了pg_walPostgreSQL 数据目录的子目录中的至少一个文件中的一个文件或文件内容。

如果 PostgreSQL 崩溃,它将使用事务日志 (WAL) 恢复。此恢复从检查点开始,其位置位于控制文件 ( global/pg_control) 中。错误信息表明在 WAL 中的指示位置,没有找到检查点,因此 PostgreSQL 无法恢复。

您丢失了一些对数据库至关重要的数据。也许一个文件被删除了,也许你有不可靠的存储丢失了fsync请求确认在磁盘上的数据。

从备份中恢复或聘请 PostgreSQL 专家从数据库的剩余部分中抢救数据。


推荐阅读