【RDS for PostgreSQL】增备文件恢复到本地库

举报
大象数据库 发表于 2023/07/28 14:34:43 2023/07/28
【摘要】 增备恢复, 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”中对应的表空间软链接信息,如图所示:
image.png

步骤 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中涉及修改的的参数或文件回退或删除。

----结束

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。