Docker Postgres 12 'PANIC: could not locate a valid checkpoint record'
Docker Postgres 12 'PANIC: could not locate a valid checkpoint record'
我正在使用 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
?
这意味着您丢失了 WAL 信息,也就是说,您丢失了 PostgreSQL 数据目录的 pg_wal
子目录中至少一个文件的文件或文件内容。
如果 PostgreSQL 崩溃,它将使用事务日志 (WAL) 进行恢复。此恢复从检查点开始,其位置可在控制文件 (global/pg_control
) 中找到。报错信息表示在WAL中指定的位置,没有找到检查点,所以PostgreSQL无法恢复。
您丢失了一些对数据库至关重要的数据。也许一个文件被删除了,也许你有不可靠的存储丢失了 fsync
请求确认在磁盘上的数据。
从备份中恢复或聘请 PostgreSQL 专家从您的数据库中抢救数据。
我正在使用 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
?
这意味着您丢失了 WAL 信息,也就是说,您丢失了 PostgreSQL 数据目录的 pg_wal
子目录中至少一个文件的文件或文件内容。
如果 PostgreSQL 崩溃,它将使用事务日志 (WAL) 进行恢复。此恢复从检查点开始,其位置可在控制文件 (global/pg_control
) 中找到。报错信息表示在WAL中指定的位置,没有找到检查点,所以PostgreSQL无法恢复。
您丢失了一些对数据库至关重要的数据。也许一个文件被删除了,也许你有不可靠的存储丢失了 fsync
请求确认在磁盘上的数据。
从备份中恢复或聘请 PostgreSQL 专家从您的数据库中抢救数据。