我正在尝试使用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服务
1条答案
按热度按时间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)。