【RDS for PostgreSQL】增备文件恢复到本地库
步骤 1: 准备一个本地存放备份文件的目录。
步骤 2: 停止本地数据库服务器。
步骤 3: 执行如下命令,将备份解压到步骤1中准备的目录。
tar -zxf src_file -C target_dir
参数说明如下:
“src_file”: pg全量备份文件的目录。
“target_dir”:需要恢复到的目录,即步骤1中准备的目录。注意:该目录必须是空目录,如果不存在该目录,则系统会创建该目录。
解压后会在当前目录下产生以下目录:
一个base目录,存放全量文件。
一个pg_wal目录(如果PostgreSQL版本为9.x,则为pg_xlog目录),增量文件目录。
N个以数字命名的表空间目录(如果原备份存在表空间文件)。
步骤 4(可选,若步骤3执行解压命令失败,执行该步骤) 下载解压工具(见附件pg_restore_file.zip)。
使用提供的解压脚本,执行如下命令,将备份解压到步骤1中准备的目录。
python restore_obs_file.py src_file target_dir
参数说明如下:
“src_file”: pg全量备份文件的目录。
“target_dir”:需要恢复到的目录,即步骤1中准备的目录。注意:该目录必须是空目录,如果不存在该目录,则系统会创建该目录。
解压后会在当前目录下产生以下目录:
一个base目录,存放全量文件。
一个pg_wal目录(如果PostgreSQL版本为9.x,则为pg_xlog目录),增量文件目录。
N个以数字命名的表空间目录(如果原备份存在表空间文件)。
步骤 5 将步骤3或步骤4中的文件拷贝到本地数据库指定目录下。
1. 将解压出来的base目录下的文件,全部拷贝到本地数据库data目录,然后用步骤3中保存的配置文件,覆盖本地数据库data目录下的三个文件。
2. 将解压出来的pg_wal目录下的文件,拷贝到本地数据库data下的pg_wal目录。
如果PostgreSQL的版本为9.x,则解压后的目录为pg_xlog目录。
3. 如果原备份存在表空间文件,修改“data/tablespace_map”中对应的表空间软链接信息,如图所示:
步骤 6 基于时间点恢复。
4. 基于时间点恢复,需将下载的增量备份文件保存至与全量备份相同的目录下。
5. 使用提供的脚本(见附件pg_restore_incre.zip),执行如下命令,将增量备份文件解压到一个临时目录(例如/tmp/wal)下。
python restore_wal.py src_file_dir target_dir
参数说明如下:
− src_file_dir:PostgreSQL增量备份文件的目录。
− target_dir:临时存放pg_wal日志的目录。
6. 依次执行如下操作,将步骤3中保存的postgresql.conf(PostgreSQL 11及以下版本为recovery.done或recovery.conf)修改为需要恢复到的时间点。
a. 将其中的“#recovery_target_time=’’” 更改为“recovery_target_time = ‘20YY-MM-DD HH:MM:SS’ ”。例如:recovery_target_time = ‘2020-12-22 20:00:00’。(若要恢复到最新备份,只需将时间设置为现在时间即可)
b. 将其中的“restore_command”行修改为“restore_command = ‘cp /tmp/wal/%f %p’”,其中/tmp/wal为临时存放pg_wal日志的目录。
c. 添加或修改其中的"recovery_target_action"行为"recovery_target_action = ‘promote’"
d. 将其中的“hot_standby”行修改为"hot_standby = on"
7. 配置standby模式
− 对于PostgreSQL 11及以下版本,修改postgresql.conf中的“standby_mode”为“standby_mode = on”。
− 对于PostgreSQL 12及以上版本,在本地数据库data目录创建一个standby.signal文件。
步骤 8 重新启动数据库,等待数据库恢复完成。
重启完成后,如果可以成功连接数据库,则说明恢复完成。
恢复完成后需将步骤 6和步骤7中涉及修改的的参数或文件回退或删除。
----结束
- 点赞
- 收藏
- 关注作者
评论(0)