PostgreSQL时间点恢复获取错误,没有有效的检查点记录



我正在尝试使用WAL_ARCHIVE进程执行时间点恢复。archive命令被添加到postgresql.conf文件中,我可以看到WAL被归档在备份归档目录中。当我尝试启动服务时,我会得到PANIC: could not locate a valid checkpoint record

我正在使用以下分步过程。

  1. 基于api的低级别备份SELECT pg_start_backup('label', true, false);
  2. 复制集群的数据目录tar -zcvpf basebkPostgres20230110New.tgz /PostgreSQL/13/data
  3. 关闭我的基本备份SELECT * FROM pg_stop_backup(false, true);
  4. 正在停止postgres服务
  5. 正在删除当前的群集数据目录
  6. 恢复备份的数据目录
  7. 删除pg_wal目录的内容
  8. 在postgresql.conf文件中设置restore_command
  9. 启动postgres服务

您忘记了backup_label文件和recovery.signal。您必须捕获pg_stop_backup(或v15上的pg_backup_stop)的结果,并根据内容创建backup_label。该文件必须位于还原的数据目录中。此外,您必须在数据目录中创建recovery.signal,以便PostgreSQL以归档恢复模式启动并读取您的restore_command

在没有restore_command的情况下,PostgreSQL使用pg_wal中的WAL,它是空的。如果没有backup_label,PostgreSQL认为它可以从控制文件pg_control指示的检查点恢复。即使这样做有效,结果也会导致数据库损坏,因为您必须从备份开始就进行恢复。

此处记录recovery.signal(步骤7),此处记录backup_label(步骤4)。

相关内容

  • 没有找到相关文章

最新更新