暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

磐维数据库物理备份(全量+增量)部署

原创 飞天 2025-01-08
185

需求

今天运维同事提了个需求,需要对刚上线的生产系统执行数据库自动备份任务。具体需求是,每3天执行一次数据库全量备份,其他时间执行数据库增量备份。接下来我们就在测试环境部署一下物理备份(包括全量备份和增量备份)的定时任务和脚本,希望对大家有所帮助!

环境说明

环境信息:

主机名 ip地址 OS版本 内存、CPU 节点角色 数据库端口 数据目录
node1 192.*.*.60 Centos7.9 4G 、 1个双核 主节点 17700 /data/panweidb/data
node2 192.*.*.62 Centos7.9 4G 、 1个双核 从节点 17700 /data/panweidb/data
node3 192.*.*.64 Centos7.9 4G 、 1个双核 从节点 17700 /data/panweidb/data

登录数据库检查参数(主节点)

#检查是否开启归档 panweidb=# show archive_mode; archive_mode -------------- on (1 row) #检查归档目的地,可以根据系统实际情况更改 panweidb=# show archive_dest; archive_dest -------------- /archive (1 row) #检查wal_sender_timeout panweidb=# show wal_sender_timeout ; wal_sender_timeout -------------------- 10s (1 row) #要使用增量备份,需设置参数enable_cbm_tracking = on #注意:开启enable_cbm_tracking后,不能直接执行增量备份,需要先执行全量备份,即使在开启参数之前已经执行过全量备份。 panweidb=# show enable_cbm_tracking ; enable_cbm_tracking --------------------- on (1 row) #检查omm用户的session超时参数 panweidb=# show session_timeout ; session_timeout ----------------- 0 (1 row)
复制

数据库参数修改(主节点)

如果发现数据库中的实际参数和上面的参数对应的值不一致,需要登录到主库上,使用下面命令修改:

alter system set archive_mode=on; alter system set archive_dest = '/archive' ; alter system set wal_sender_timeout = '10s' ; #若要使用增量备份,需设置参数enable_cbm_tracking = on alter system set enable_cbm_tracking = on ; #关闭omm用户的session超时参数: alter user omm set session_timeout to 0;
复制

初始化备份路径(全部节点)

gs_probackup init -B /backup/probackup # 创建备份日志目录 mkdir /backup/probackup/log/
复制

创建备份实例(全部节点)

gs_probackup add-instance -B /backup/probackup --instance=panweidb -D /data/panweidb/data -p 17700 --retention-redundancy=3 --retention-window=0
复制

设置omm用户的crontab作业(主节点)

使用omm用户配置crontab定时任务,增加如下两条定时备份任务:

  • 每天00:30:00执行数据库备份,备份成功后删除过期全备份。
  • 每两小时删除十天前的归档。

crontab -e

# 每天0点30分执行备份脚本 30 0 * * * /home/omm/backup_script.sh # 每隔2小时清理归档 0 */2 * * * sh /home/omm/move_and_clear_archive.sh 9
复制

编写数据库备份脚本:
vi /home/omm/backup_script.sh

#!/bin/bash # 获取当前日期 current_day=$(date +%d) current_day=${current_day#0} # 计算是否是全量备份日(假设从每月1日开始做全备份,全备份日就是:1日、4日、7日、10日、13日...28日、31日) if [ $((current_day % 3)) -eq 1 ]; then # 执行全量备份 source /home/omm/.bashrc;gs_probackup backup --backup-path=/backup/probackup --instance=panweidb --backup-mode=full --delete-expired --pgdatabase=postgres > /backup/probackup/log/backup_week$(date +\%u).log 2>&1 & else # 执行增量备份 source /home/omm/.bashrc;gs_probackup backup --backup-path=/backup/probackup --instance=panweidb --backup-mode=PTRACK --delete-expired --pgdatabase=postgres> /backup/probackup/log/backup_week$(date +\%u).log 2>&1 & fi
复制

/home/omm/backup_script.sh脚本说明:
1、脚本中假设从每月1日开始做全量备份,全量备份日就是1日、4日、7日、10日、13日…28日、31日。
2、如果第一次自动执行备份脚本的日期正好不是全量备份日,那么增量备份会失败,因为增量备份成功的前提是必须有全量备份。需要先手工做一次全量备份再执行增量备份。
3、也可以根据实际情况修改备份脚本,以满足第一次自动执行备份脚本的日期正好是全量备份日。

编写清理归档的脚本:
vi /home/omm/move_and_clear_archive.sh

#!/bin/bash fnum=$1 echo "begin to clear archive log..." find /archive -mtime +${fnum} -type f -name "0000*" | xargs rm -f echo "archive files clean successfully"
复制

查看备份集

[omm@node1 log]$ gs_probackup show --backup-path=/backup/probackup --instance=panweidb =========================================================================================================================================== Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Type Status =========================================================================================================================================== panweidb 9.2 SPR44E 2025-01-08 11:53:04+08 PTRACK STREAM 1/1 5s 273MB 16MB 0.94 0/15000028 0/15000270 FILE OK panweidb 9.2 SPR407 2025-01-08 11:50:41+08 FULL STREAM 1/0 15s 782MB 16MB 0.98 0/13000028 0/13000270 FILE OK
复制

删除备份集

#删除状态是ERROR的备份集 gs_probackup delete -B /backup/probackup/ --instance=panweidb --status=ERROR #删除指定backup-id的备份集 gs_probackup delete -B /backup/probackup --instance=panweidb -i backup-id
复制

总结

备份脚本和备份策略都可以根据实际情况灵活地去调整,以满足不同的备份需求,并且需要定期检查备份的有效性,确保在数据丢失或损坏时能够快速恢复数据库。

关于作者:
专注于Oracle、MySQL、PG、OpenGauss和国产数据库的研究,热爱生活,热衷于分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同进步~~~

最后修改时间:2025-01-08 15:05:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 需求
  • 环境说明
  • 登录数据库检查参数(主节点)
  • 数据库参数修改(主节点)
  • 初始化备份路径(全部节点)
  • 创建备份实例(全部节点)
  • 设置omm用户的crontab作业(主节点)
  • 查看备份集
  • 删除备份集
  • 总结