postgresql - 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_dump
?pg_resetwal
解决方案
这意味着您丢失了 WAL 信息,也就是说,您丢失了pg_wal
PostgreSQL 数据目录的子目录中的至少一个文件中的一个文件或文件内容。
如果 PostgreSQL 崩溃,它将使用事务日志 (WAL) 恢复。此恢复从检查点开始,其位置位于控制文件 ( global/pg_control
) 中。错误信息表明在 WAL 中的指示位置,没有找到检查点,因此 PostgreSQL 无法恢复。
您丢失了一些对数据库至关重要的数据。也许一个文件被删除了,也许你有不可靠的存储丢失了fsync
请求确认在磁盘上的数据。
从备份中恢复或聘请 PostgreSQL 专家从数据库的剩余部分中抢救数据。
推荐阅读
- python - 仅在 Dataframe Pandas 中添加带有时间的新列
- javascript - 在 Sequelize 中的关联之间切换(同时一对多和多对多)
- ios - 不能只用 tableViewController 获得大标题
- c# - 带有错误的 C# 反射:公共语言运行时检测到无效程序
- .net - 在 .net 中使用 Kafka 进行 Pact 测试的任何示例
- python - 如何确定终端是否可以在 python 中显示颜色?
- swift - MailChimp PATCH 请求
- ruby-on-rails - 如何将 has_one_attached 转换为 has_many_attached 到带有 has_one attachemnts 的现有表?
- r - R脚本“找不到命令?”
- react-native - 导入/导出错误?找不到“组件”、“getComponent”或“儿童”道具