PostgreSQL的错误惊慌:无法找到一个有效的检查点记录
它正在查找事务日志中可能不存在或已损坏的检查点记录。你能确定这是否是通过运行情况:
pg_resetxlog DATADIR
如果事务日志已损坏,你会看到这样的消息:
数据库服务器没有干净地关闭。重置 事务日志可能会导致数据丢失。无论如何,如果您想继续使用 ,请使用-f强制重置。
然后,您可以按照指示,并-f
运行强制更新:
pg_resetxlog -f DATADIR
这应该重置事务日志,但是作为PostgreSQL documentation on pg_resetxlog
解释它可以让你的数据库处于不确定状态:
如果pg_resetxlog抱怨说它无法判断用于pg_control的有效数据,你可以迫使它通过指定
-f
(力)仍要继续小号巫婆。在这种情况下,可能的值将被替换为缺失的数据。大多数字段都可以匹配,但下一个OID,下一个事务ID和时期,下一个多事务ID和偏移以及WAL起始地址字段可能需要手动帮助。这些字段可以使用下面讨论的开关进行设置。如果您无法为所有这些字段确定正确的值,则-f
仍可以使用,但恢复的数据库必须比平时更加怀疑:立即转储和重新加载是必不可少的。在转储之前,不要在数据库中执行任何数据修改操作,因为任何此类操作都可能导致恶化。
你做连续存档吗?如果您当时正在备份,则可能会发现删除backup_label更为谨慎。 pg_resetxlog
是一件很严重的事情。
就像日志所说:无法找到有效的检查点记录.Postgres无法在$ PGDATA/pg_xlog /目录下找到正确的WAL。 尝试使用在pg_resetxlog
我运行9.1.7和我发现跑成功如下:
/usr/lib/postgresql/9.1/bin/pg_resetxlog -f /var/lib/postgresql/9.1/main
你的最后一个参数的pg_resetxlog
命令应该是一个Postgres的存储您的数据库中的数据在磁盘上的位置。
As indicated here pg_resetxlog不应该运行。引用这个的答案是不好的建议。假设错误发生在复制/复制实例的环境中,该链接提供了一种更简洁的方式来执行复制/复制pg_basebackup
请不要在问题本身中发布解决方案。回答自己的问题并不气馁,但您应该将解决方案作为答案发布。我这次编辑了这个问题的解决方案。随意发布它作为您方便的答案。 – 2012-01-10 06:53:12
我真的很好奇安娜编辑它之前的答案是什么:-) – filiprem 2012-01-10 09:49:41
如果这是在从属/读取服务器上,并且在复制基础备份后启动,请确保您有标签文件是在本地数据文件夹中创建基础备份时创建的。 – 2015-11-17 06:09:32