PG_RMAN 简介:
pg_rman是一款开源的备份恢复软件,支持在线和基于PITR的备份恢复方式。
pg_rman类似于 oracle的rman,可以进行全量、增量、归档日志的备份。
pg_rman特点:
- 使用简单,一个命令即可完成备份和恢复
- 支持在线全备、增量、归档日志备份支持备份压缩。
- 支持自动备份维护,自动删除过期的WAL备份文件。
- 支持备份验证。
- 支持基于PITR的配置文件生成器
PG_RMAN部署:
1.上传安装包并解压安装(要使用postgre用户安装)
![](https://i-blog.csdnimg.cn/direct/865c386bdb32485594ab20b4f744027a.png)
tar vxf pg_rman-1.3.9-pg12.tar.gz
cd pg_rman-1.3.9-pg12/
make
make install
2.初始化环境
设置备份目录
echo 'export BACKUP_PATH=/home/postgres/pg_rman_bk1' >> ~/.bash_profile
设置归档目录
vi postgresql.conf
archive_command = 'cp %p /home/postgres/archives/%f'
archive_mode = 'on'
初始化备份目录,验证归档路径,日志目录,同时在备份路径下产生跟目标数据库相关的文件
PG_RMAN命令:
语法:pg_ rman [OPTION] COMMAND
COMMAND:
init 初始化备份目录
backup 在线备份
restore 恢复
show 查看备份历史
validate 验证备份
delete 从知识库中删除备份信息
purge 从备份目录中删除已实际的备份文件
使用PG_RMAN对数据库进行备份:
全量备份
pg_rman backup --backup-mode=full -C -P
期间可能会碰到:ERROR: switched WAL could not be archived in 10 seconds
这是因为刚才设置的归档目录不存在,需要自己手动创建,创建后需要重启pg
pg_ctl restart -m fast
删除/home/postgres/pg_rman_bk1 文件重新进行初始化即可
对备份进行验证
pg_rman validate
证明该备份是有效的
查看当前数据库备份
pg_rman show
增量备份
pg_rman backup --backup-mode=incremental -C -P
归档备份
pg_rman backup --backup-mode=archive -C -P
使用PG_RMAN对数据库进行恢复:
完全恢复:
pg_rman restore
时间点恢复:
![](https://i-blog.csdnimg.cn/direct/f54387426755447297429cf76651a910.png)
![](https://i-blog.csdnimg.cn/direct/d81a4c1e23b54d57a867c85f98a59ff6.png)
可以预测,时间点恢复以后,该时间点前的t1表将会恢复,时间点后的t2表将会消失。
![](https://i-blog.csdnimg.cn/direct/30537314310c40628ba364791f7a28bc.png)
效果验证:
![](https://i-blog.csdnimg.cn/direct/939a9f8e710b4ddda493b2b6ec2718f2.png)
备份数据维护:
![](https://i-blog.csdnimg.cn/direct/0e29ebac0cbf4f22b07624622b175638.png)
最后一份full备份与incremental 不会被删除,想删除最后一份full 备份需要加-f参数
![](https://i-blog.csdnimg.cn/direct/6e08eaeec6244dcb9b74b924973cfab0.png)
可以看到已经删除掉了。
自动化维护PG备份:
修改 pg_rman.ini文件
·可以根据备份策略,制定自动维护配置,在进行备份操作时会自动检查RCLOG_PATH='/home/postgres/arch' -归档目录
SRVLOG_PATH='/home/postgres/data/log' -数据库错误日志目录
COMPRESS_DATA = YES -压缩数据
KEEP_ARCLOG_FILES = 10 -保存归档文件个数
KEEP ARCLOG DAYS = 10 -保存归档的天数
KEEP_DATA_GENERATIONS = 3 -备份冗余度
KEEP_DATA_DAYS = 10 -保存备份集时间
KEEP_SRVLOG_FILES = 10 -保存日志文件个数
KEEP_SRVLOG_DAYS = 10 -保存日志文件天数在进行备份操作的时候会自动检查