我使用caprover,它使用docker部署postgresql 12。现在,我的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
发布于 2021-03-09 03:38:43
这意味着您丢失了WAL信息,也就是说,您丢失了来自pg_wal数据目录的PostgreSQL子目录中至少一个文件的文件或文件内容。
如果PostgreSQL崩溃,它将使用事务日志(WAL)进行恢复。此恢复从检查点开始,检查点的位置在控制文件(global/pg_control)中找到。错误消息表明,在WAL中指定的位置,没有找到检查点,因此PostgreSQL无法恢复。
您丢失了一些对数据库至关重要的数据。也许一个文件被删除了,也许您有不可靠的存储,丢失了fsync请求确认在磁盘上的数据。
从备份中还原或聘请PostgreSQL专家从数据库的剩余部分中提取数据。
发布于 2022-11-09 22:50:04
按照此页面中的说明重置wal日志。
https://www.postgresql.r2schools.com/postgresql-panic-could-not-locate-a-valid-checkpoint-record/
本质上,您必须以su作为postgres,然后使用数据目录作为-f参数,从postgres bin目录运行pg_resetwal程序。示例:
$ ./pg_resetwal -f "/var/lib/postgresql/11/main"这应导致:
Write-ahead log reset警告:您可能会丢失一些数据或表。
https://stackoverflow.com/questions/66537747
复制相似问题