PostgreSQL教程(11)第三方物理备份工具pg_rman使用教程
pg_rman是一款PostgreSQL第三方物理备份工具,支持对整个数据库集群、归档日志和服务器日志进行在线备份。由于pg_rman是基于本地数据拷贝的方式,而不是流式备份,所以要求 pg_rman 与 PostgreSQL 在同一服务器。
一、安装 pg_rman
1、配置环境变量
安装前确保已经配置好数据库环境变量,这样编译安装的时候会将pg_man存放在正确的目录中
vi ~/.bashrc export PATH=/usr/local/postgersql_16_10/bin:$PATH export LD_LIBRARY_PATH=/usr/local/postgersql_16_10/lib:$LD_LIBRARY_PATH
2、下载pg_rman
通过Github(https://github.com/ossc-db/pg_rman)下载pg_rman,需要注意pg_rman的版本要和数据库相对应,这里以16版本进行演示
wget https://github.com/ossc-db/pg_rman/releases/download/V1.3.16/pg_rman-1.3.16-pg16.tar.gz
3、编译安装pg_rman
由于环境变量里已经配置,所以编译完成后,pg_rman应该在数据库bin目录下
tar zxf pg_rman-1.3.16-pg16.tar.gz make make install

二、pg_rman 选项说明
1、数据库连接选项
-d,--dbname=DBNAME:指定数据库名
-h,--host=HOSTNAME:指定数据库地址
-p,--port=PORT:指定数据库端口
-U,--username=USERNAME:指定数据库用户名
-W,--no-password:不提示密码
2、备份策略配置
pg_rman的备份策略配置配置在$BACKUP_PATH/pg_rman.ini文件中,包含备份保留时间、保留个数等
KEEP_ARCLOG_FILES:保存归档文件个数
KEEP_ARCLOG_DAYS:保存归档的天数
KEEP_DATA_DAYS:保存备份集时间
KEEP_SRVLOG_FILES:保存日志文件个数
KEEP_SRVLOG_DAYS:保存日志文件天数
3、备份选项
-D,--pgdata=PATH:指定数据目录
-A,--arclog-path=PATH:指定归档日志目录
-S,--srvlog-path=PATH:指定数据库日志路径
-B,--backup-path=PATH:指定备份文件路径
-V,--verbose:显示备份详情
-P,--progress:显示备份进度
-b,--backup-mode=MODE:备份模式,full为全备,incremental为增量备份
-Z,--compress-data:压缩备份
4、还原选项
--recovery-target-time:恢复到指定时间戳
--recovery-target-xid:恢复到指定事务ID
--recovery-target-inclusive:是否包含恢复目标
--recovery-target-timeline:恢复到特定的时间线
--hard-copy:恢复的时候采用复制归档日志的方式,而不是通过软连接,建议加上该选项
三、pg_rman 备份与还原
1、初始化备份目录
在初次使用 pg_rman进行备份时,必须先执行初始化,生成元信息文件,比如记录数据库集群的唯一标识的system_identifier文件,如果没有该文件备份将无法执行并出现类似 ERROR: could not open system identifier file "/data/pg_rman/system_identifier" 这样的报错
pg_rman init -D /data/postgresql_16_10/data -B /data/pg_rman/ INFO: ARCLOG_PATH is set to '/data/postgresql_16_10/archive' INFO: SRVLOG_PATH is set to '/data/postgresql_16_10/data/log'
初始化完成后生成目录结构

2、执行全量备份
pg_rman backup --backup-mode=full -D /data/postgresql_16_10/data -B /data/pg_rman/ -A /data/postgresql_16_10/archive/ --progress INFO: copying database files Processed 1311 of 1311 files, skipped 0 INFO: copying archived WAL files Processed 22 of 22 files, skipped 0 INFO: backup complete INFO: Please execute 'pg_rman validate' to verify the files are correctly copied
3、校验备份文件
pg_rman validate -B /data/pg_rman/ INFO: validate: "2025-09-18 04:25:10" backup and archive log files by CRC INFO: backup "2025-09-18 04:25:10" is valid
4、执行增量备份
执行增量备份后,备份数据存放路径和原全量备份目录同级
pg_rman backup --backup-mode=incremental -D /data/postgresql_16_10/data -B /data/pg_rman/ -A /data/postgresql_16_10/archive/ --progress
5、查看可用备份集
如果status为ok表示备份是可以直接使用,如果为done表示备份完成了但是还没有经过validate校验
#如果加上--detail可以详细更详细的信息,比如日志多大、数据多大、是否压缩等 pg_rman show -B /data/pg_rman/ ===================================================================== StartTime EndTime Mode Size TLI Status ===================================================================== 2025-09-18 10:44:10 2025-09-18 10:44:14 INCR 134MB 2 DONE 2025-09-18 10:41:08 2025-09-18 10:41:11 INCR 134MB 2 OK 2025-09-18 04:25:10 2025-09-18 04:25:19 FULL 1095MB 2 OK
6、使用pg_rman恢复数据
恢复pg_rman备份前需要先停止PostgreSQL数据库,恢复时将直接覆盖之前的数据库目录。通过recovery-target-time参数指定一个需要恢复的备份时间点,如果指定了时间点恢复,数据库在启动后将进入恢复状态,需要登录数据库手动调整状态才可以写入数据。如果不指定recovery-target-time,则默认为恢复到最新时间,并且为正常读写的状态。
由于 pg_rman 的增量备份会依赖原有的全量备份以及 WAL 序列,而在基于时间点恢复后,数据库会产生一个新的时间线,此时建议立即进行一次全量备份,这样后续的增量备份才会采用新的时间线,避免增量备份还会基于旧的 timeline,从而导致 恢复链断裂而无法使用。
#1、停止数据库 pg_ctl -D /data/postgresql_16_10/data stop -m fast #2、不指定 --recovery-target-time将会恢复到 FULL + 所有增量的最新状态 pg_rman restore -B /data/pg_rman/ -D /data/postgresql_16_10/data --hard-copy
7、删除pg_rman备份集
删除备份集时需要指定备份的Endtime,如果删除的是增量备份,会自动删除之前被依赖的其他增量和全量备份
#将备份集删除,备份集status被标记为deleted状态 pg_rman delete 2025-09-18 10:44:14 #将备份完全删除,无法再查看到被删除的备份信息 pg_rman purge
猜你喜欢
MySQL | Oracle Oracle教程(4)快照与AWR报告
一、Oracle 快照Oracle中的快照(Snapshot)是指数据库在某个时间点对性能相关的数据做的一次全量采集。包括:系统资源使用情况、Top SQL、IO 性能指标、SGA、PGA 使用情况。...
MySQL | Oracle Oracle教程(3)Schema、用户与表空间
在完成 Oracle安装后,登录数据库实例可以看到有很多的模式(Schema),这些模式都是为了支持数据库核心组件、特性扩展、管理任务或者示例而创建,对于这部分默认模式,通常不需要进行操作。在生产规范...
MySQL | Oracle Oracle教程(2)Oracle19C命令行静默安装教程
在部分生产环境下可能并不支持通过图形化方式来安装Oracle数据库(比如需要脚本一键安装的场景),所以还需要了解通过命令行静默安装的方式来完整数据库的安装,以下是详细步骤一、系统环境配置部分1、确定内...
MySQL | Oracle Oracle教程(1)Oracle19C图形化安装详细教程
一、Oracle数据库版本说明Oracle作为最出名的商业数据库,其特点是可用性强、扩展性强、安全性强、稳定性强。相比MySQL,更适合高并发的业务。从18c版本开始,Oracle采用年份来对版本进行...
PostgreSQL PostgreSQL教程(13)使用pgbench进行基准测试
pgbench是一款 PostgreSQL 官方自带的数据库性能基准测试工具,可以模拟多用户并发事务,用于评估数据库在不同并发度、数据量和硬件环境下的性能表现。一、pgbench常用选项 ...
文章评论