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

6jygbczu  于 2023-01-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(200)

我正在尝试使用WAL_ARCHIVE进程执行时间点恢复。archive命令已添加到postgresql.conf文件中,我可以看到WAL正在备份-存档目录中存档。当我尝试启动服务时,我得到PANIC: could not locate a valid checkpoint record
我正在使用下面的逐步过程。
1.低级API基础备份SELECT pg_start_backup('label', true, false);
1.正在复制我的群集tar -zcvpf basebkPostgres20230110New.tgz /PostgreSQL/13/data的数据目录
1.正在关闭我的基本备份SELECT * FROM pg_stop_backup(false, true);
1.正在停止postgres服务
1.正在删除当前的群集数据目录
1.恢复备份的数据目录
1.删除pg_wal目录的内容
1.在postgresql.conf文件中设置restore_command
1.正在启动postgres服务

brjng4g3

brjng4g31#

您忘记了backup_label文件和recovery.signal。您必须捕获pg_stop_backup(或从v15开始的pg_backup_stop)的结果并从内容创建backup_label。该文件必须位于restored data目录中。此外,您必须在data目录中创建recovery.signal,以便PostgreSQL以归档恢复模式启动并读取您的restore_command
如果没有restore_command,PostgreSQL将使用pg_wal中的WAL,它是空的。如果没有backup_label,PostgreSQL认为它可以从控制文件pg_control指示的检查点恢复。即使这样做有效,结果也会是数据库损坏,因为您必须从备份的开始恢复。
recovery.signal记录在此处(步骤7),backup_label记录在此处(步骤4)。

相关问题