物理备份和在线备份工具pg_rman使用详解(九)
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,pg_rman工具是实现PostgreSQL数据库在线备份,物理备份和恢复的备份工具。可以实现全量备份,增量备份。全量: full增量: incremental归档: archiveUsage: p
千家信息网最后更新 2025年11月13日物理备份和在线备份工具pg_rman使用详解(九)
pg_rman工具是实现PostgreSQL数据库在线备份,物理备份和恢复的备份工具。可以实现全量备份,增量备份。
全量: full
增量: incremental
归档: archive
Usage: pg_rman OPTION init pg_rman OPTION backup pg_rman OPTION restore pg_rman OPTION show [DATE] pg_rman OPTION show detail [DATE] pg_rman OPTION validate [DATE] pg_rman OPTION delete DATE pg_rman OPTION purge命令选项: -D, --pgdata=PATH 数据存储目录的路径 -A, --arclog-path=PATH 归档wal (预写)日志的路径 -S, --srvlog-path=PATH 数据库服务器存储日志的路径。 -B, --backup-path=PATH 备份数据存储的路径。 -c, --check 检查 -v, --verbose 显示详细消息 -P, --progress 显示已处理文件的进度备份选项: -b, --backup-mode=MODE 全备,增备,归档 -s, --with-serverlog 备份服务器日志文件 -Z, --compress-data 使用zlib压缩数据备份 -C, --smooth-checkpoint 在备份前做平滑检查点 -F, --full-backup-on-error 切换到完全备份模式,注意:此选项仅用于--backup-mode = incremental或archive --keep-data-generations=NUM 保留NUM代完整数据备份 --keep-data-days=NUM 保持足够的数据备份以恢复到N天前 --keep-arclog-files=NUM 保留NUM个归档的WAL日志 --keep-arclog-days=DAY 保持存档的WAL在DAY天内修改 --keep-srvlog-files=NUM 保留NUM个服务器日志 --keep-srvlog-days=DAY 在DAY天内修改服务器日志 --standby-host=HOSTNAME 从待机状态进行备份时备用主机 --standby-port=PORT 从待机状态进行备份时的备用端口还原选项: --recovery-target-time 恢复将继续进行的时间戳 --recovery-target-xid 事务ID,恢复将继续进行 --recovery-target-inclusive 我们是否在恢复目标之后停止 --recovery-target-timeline 恢复到特定的时间 --hard-copy 复制archivelog而不是符号链接目录选项: -a 显示已删除的备份删除选项: -f 强制删除比规定日期更旧的备份连接选项: -d, --dbname=DBNAME 连接指定库 -h, --host=HOSTNAME 数据库主机名/IP地址 -p, --port=PORT 数据库端口 -U, --username=USERNAME 数据库用户名 -w, --no-password 从不提示密码 -W, --password 强制密码提示通用选项: -q, --quiet 不显示任何INFO或者DEBUG信息。 --debug 查看debug信息。开始使用pg_rman工具:
创建备份目录
# mkdir /database-backup/postgresql-backup/{fullbackup,walbackup,pg_srvlog} -p # chown -R postgres.postgres /database-backup/postgresql-backup/- 设置环境变量:
$ vim .profile export BACKUP_PATH=/database-backup/postgresql-backup/fullbackup export ARCLOG_PATH=/database-backup/postgresql-backup/walbackup export SRVLOG_PATH=/database-backup/postgresql-backup/pg_srvlog $ source .profile #立即生效 - 修改postgresql.conf配置文件:
$ vim data/postgresql.conf archive_mode = on archive_command = 'DATE=`date +%Y%m%d`; DIR="/database-backup/postgresql-backup/walbackup/"; (test -d $DIR || mkdir -p $DIR) && cp %p $DIR/%f' 保存并退出。 - pg_rman init 初始化
$ pg_rman init INFO: ARCLOG_PATH is set to '/database-backup/postgresql-backup/walbackup' INFO: SRVLOG_PATH is set to '/database-backup/postgresql-backup/pg_srvlog' - pg_rman全量备份
$ pg_rman backup --backup-mode=full --with-serverlog --progressINFO: copying database filesProcessed 1298 of 1298 files, skipped 0INFO: copying archived WAL filesProcessed 3 of 3 files, skipped 0INFO: copying server log filesINFO: backup completeINFO: Please execute 'pg_rman validate' to verify the files are correctly copied. - pg_rman 校验备份集
pg_rman 的备份必须都是经过验证过的,否则不能进行恢复和增量备份。$ pg_rman validateINFO: validate: "2018-10-14 14:55:34" backup, archive log files and server log files by CRCINFO: backup "2018-10-14 14:55:34" is valid
pg_rman 列出备份集
$ pg_rman show
$ ls -l /database-backup/postgresql-backup/fullbackup/ total 20 drwx------ 3 postgres postgres 4096 Oct 14 14:55 20181014 drwx------ 4 postgres postgres 4096 Oct 14 14:53 backup -rw-rw-r-- 1 postgres postgres 119 Oct 14 14:53 pg_rman.ini -rw-rw-r-- 1 postgres postgres 40 Oct 14 14:53 system_identifier drwx------ 2 postgres postgres 4096 Oct 14 14:53 timeline_history- pg_rman增量备份:
增量备份是基于文件系统的update time时间线. 增量备份必须有个对应的全库备份. $ pg_rman backup --backup-mode incremental --progress --compress-data
$ pg_rman validate INFO: validate: "2018-10-14 15:59:57" backup and archive log files by CRC INFO: backup "2018-10-14 15:59:57" is valid $ pg_rman show
pg_rman删除备份集
$ pg_rman delete -f '2018-10-14 15:59:57' INFO: delete the backup with start time: "2018-10-14 15:59:57" INFO: delete the backup with start time: "2018-10-14 14:55:34" 删除增量备份的同时,也已经把全量备份给删除了。 $ pg_rman show ===================================================================== StartTime EndTime Mode Size TLI Status =====================================================================注意: 创建增量备份之前必须先创建一个全量备份。
- pg_rman restore 还原
模拟数据库误删除: $ /etc/init.d/postgresql stop $ ps -ef | grep -i postmaster | grep -v grep $cd data $ ls -l
$ mv data data-bak # 将之间的目录作为备份。 $ mkdir data # 创建数据目录。 $ chmod 700 ./data使用pg_rman restore还原:
$ pg_rman restore$ cd $PGDATA$ ls -l
$ cat recovery.conf # recovery.conf generated by pg_rman 1.3.7 restore_command = 'cp /database-backup/postgresql-backup/walbackup/%f %p' recovery_target_timeline = '1' 启动PostgreSQL数据库服务: $ /etc/init.d/postgresql start $ ps -ef |grep -i postgres还原时,注意事项:
restore后启动会遇到下列错误: invalid primary checkpoint record invalid secondary checkpoint record could not locate a valid checkpoint record 此时只能重置wal,并取消恢复模式 $ pg_resetwal --f $PGDATA $ mv $PGDATA/recovery.conf $PGDATA/recovery.done 使用pg_rman备份时对wal的归档是通过软链接来实现。建议添加 --hard-copy。增量备份和全量备份, 备份还原已经完成。
需要注意的是:
物理备份时的全量和增量备份时可以在线备份(不停机备份).
但是还原时,需要停机进行还原。
postgres用户的环境变量配置文件内容: PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/services/install/postgresql10/bin/ export LD_LIBRARY_PATH=/services/install/postgresql10/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/services/install/python3.6/lib:$LD_LIBRARY_PATH export PGDATA PATH export BACKUP_PATH=/database-backup/postgresql-backup/fullbackup export ARCLOG_PATH=/database-backup/postgresql-backup/walbackup export SRVLOG_PATH=/database-backup/postgresql-backup/pg_srvlog参考:
https://github.com/ossc-db/pg_rman/tree/master
http://ossc-db.github.io/pg_rman/index.html
备份
数据
增量
数据库
日志
文件
目录
服务
服务器
路径
工具
数据备份
时间
存储
物理
在线
主机
信息
变量
密码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海销售开单软件开发
软件开发开始先学什么
软件开发 应用开发
网络安全防火墙设计与实现
域成员服务器登录本地账号
安卓软件开发 文章
济南软件开发怎么做
数据库为什么总是自动重启
金山区营销软件开发收费套餐
专线怎么从服务器到另一端
服务器 安装系统
网络技术提额怎么回事
杭州米达尔网络技术有限公司
移动网络安全宣传总结
卖电脑要删哪些重要数据库
与360网络安全合作的公司
苹果 解锁 数据库
应用服务器的配置与管理
互联网软件开发ppt
技校软件开发6
韩国服务器因维护而脱机
授权fido服务器失败
在jsp中调用数据库
三个以上常用的数据库
mac打开数据库
沃尔玛图形数据库应用
交互式创建数据库
网络安全在我心演讲稿100字
网络安全知识谁来讲
信息网络安全在生活中的影响