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

磐维分布式数据库备份部署

原创 飞天 2025-03-28
332

一、背景

在当今数智化、AI时代,数据已成为企业、组织乃至个人的核心资产,而数据库备份,恰似守护这些关键资产的“安全锁”,其重要性不言而喻。磐维集中式数据库备份和分布式备份命令不太相同。本文主要在测试环境进行演示磐维分布式数据库备份部署过程,希望对大家有所帮助!
磐维集中式备份部署过程请参考:
磐维集中式数据库备份部署

二、环境说明

主机名 ip地址 OS版本 内存、CPU 数据库版本
node1 192.*.*.60 Centos7.9 4G 、 1个双核 PanWeiDB_V2.0(openGauss)-distributed version-3.0.1_B01
node2 192.*.*.62 Centos7.9 4G 、 1个双核 PanWeiDB_V2.0(openGauss)-distributed version-3.0.1_B01
node3 192.*.*.64 Centos7.9 4G 、 1个双核 PanWeiDB_V2.0(openGauss)-distributed version-3.0.1_B01

集群状态如下:

[omm@node1 ~]$ ha_ctl monitor all -l http://192.*.*.60:2379 -HI +----+------------+----------------+-------+---------+--------+ | No | name | host | port | state | leader | +----+------------+----------------+-------+---------+--------+ | 0 | ha_server1 | 192.*.*.60 | 20001 | running | True | +----+------------+----------------+-------+---------+--------+ +----+------+----------------+------+----------------+---------+---------+ | No | name | host | port | work_dir | state | role | +----+------+----------------+------+----------------+---------+---------+ | 0 | gtm1 | 192.*.*.60 | 6666 | /data/gtm/gtm1 | running | standby | | 1 | gtm2 | 192.*.*.62 | 6666 | /data/gtm/gtm2 | running | primary | +----+------+----------------+------+----------------+---------+---------+ +----+------+----------------+------+-----------------+---------+---------+ | No | name | host | port | work_dir | state | role | +----+------+----------------+------+-----------------+---------+---------+ | 0 | cn1 | 192.*.*.62 | 5432 | /data/coord/cn1 | running | primary | | 1 | cn2 | 192.*.*.64 | 5432 | /data/coord/cn2 | running | primary | +----+------+----------------+------+-----------------+---------+---------+ +----+-------+-------+----------------+-------+-----------------+---------+---------+ | No | group | name | host | port | work_dir | state | role | +----+-------+-------+----------------+-------+-----------------+---------+---------+ | 0 | dn1 | dn1_1 | 192.*.*.62 | 15432 | /data/dn1/dn1_1 | running | primary | | 1 | dn1 | dn1_2 | 192.*.*.64 | 15432 | /data/dn1/dn1_2 | running | standby | | 2 | dn1 | dn1_3 | 192.*.*.60 | 15432 | /data/dn1/dn1_3 | running | standby | | 3 | dn2 | dn2_1 | 192.*.*.64 | 20010 | /data/dn2/dn2_1 | running | primary | | 4 | dn2 | dn2_2 | 192.*.*.60 | 20010 | /data/dn2/dn2_2 | running | standby | | 5 | dn2 | dn2_3 | 192.*.*.62 | 20010 | /data/dn2/dn2_3 | running | standby | +----+-------+-------+----------------+-------+-----------------+---------+---------+ +----+----------------------------+--------+---------+----------+ | No | url | name | state | isLeader | +----+----------------------------+--------+---------+----------+ | 0 | http://192.*.*.64:2379 | node_2 | healthy | False | | 1 | http://192.*.*.62:2379 | node_1 | healthy | False | | 2 | http://192.*.*.60:2379 | node_0 | healthy | True | +----+----------------------------+--------+---------+----------+

三、备份前准备

1、规划备份路径

本文中备份目录设置为/backup。生产环境中备份目录最好单独挂盘,以防磁盘损坏等原因影响到备份数据,从而降低数据丢失的风险。

2、制定备份策略

  • 每周六 00:30:00 执行数据库全备份,备份成功后删除过期全备份。
  • 每周日到周五 00:30:00 执行数据库增量备份。
  • 每天删除2*7天前的归档。
  • 编写完backup.yml文件必须进行一次全量备份

3、创建备份用户

在node2主机上使用gsql登录cn节点,创建备份用户,并授予sysadmin权限。

gsql -d postgres -p 5432 create user bkuser identified by "xxxxxxxx" sysadmin;

操作截图如下:
image.png
注意:备份用户必须具有sysadmin权限。

4、设置备份目录,开启wal日志归档,设置wal日志归档

-- 远程备份设置

ha_ctl deploy 192.*.*.200 -l http://192.*.*.60:2379 说明:192.*.*.200是远程备份机的ip。

4.1 备份机(或者一般选用gtm的主 10.xx.xx.62)上创建备份目录backup,用于存放基础备份wal日志归档

mkdir /backup cd /backup/ mkdir gtm_wal dn1_wal dn2_wal dn3_wal

操作截图如下:
image.png

4.2、在各DN所在节点创建对应的/backup目录并且赋权

mkdir /backup chown -R omm:dbgrp /backup chmod -R 755 /backup

操作截图如下:
image.png
image.png
image.png
4.3、数据库开启wal日志归档,设置wal日志归档

su - omm gs_guc reload -N all -I all -Z datanode -c "archive_mode=on" gs_guc reload -N all -I all -Z gtm -c "archive_mode=on" gs_guc reload -N all -I all -Z datanode -c "enable_cbm_tracking=on" gs_guc reload -N all -I all -Z gtm -c "enable_cbm_tracking=on" ha_ctl set gtm gtm1 -p archive_command="'scp %p 192.*.*.62:/backup/gtm_wal/%f'" -c panwei -l http://192.*.*.60:2379 ha_ctl set gtm gtm2 -p archive_command="'scp %p 192.*.*.62:/backup/gtm_wal/%f'" -c panwei -l http://192.*.*.60:2379 ha_ctl set datanode dn1_1 -p archive_command="'scp %p 192.*.*.62:/backup/dn1_wal/%f'" -c panwei -l http://192.*.*.60:2379 ha_ctl set datanode dn1_2 -p archive_command="'scp %p 192.*.*.62:/backup/dn1_wal/%f'" -c panwei -l http://192.*.*.60:2379 ha_ctl set datanode dn1_3 -p archive_command="'scp %p 192.*.*.62:/backup/dn1_wal/%f'" -c panwei -l http://192.*.*.60:2379 ha_ctl set datanode dn2_1 -p archive_command="'scp %p 192.*.*.62:/backup/dn2_wal/%f'" -c panwei -l http://192.*.*.60:2379 ha_ctl set datanode dn2_2 -p archive_command="'scp %p 192.*.*.62:/backup/dn2_wal/%f'" -c panwei -l http://192.*.*.60:2379 ha_ctl set datanode dn2_3 -p archive_command="'scp %p 192.*.*.62:/backup/dn2_wal/%f'" -c panwei -l http://192.*.*.60:2379

操作截图如下:
image.png
image.png

5、创建备份配置文件

使用omm用户登录gtm主节点创建备份配置文件/backup/backup.yml:
vi /backup/backup.yml

#if set backup_host and backup_dir #1) nodes parameter not need set #2) will set archive wal log dir as backup_dir/nodes/wal,such as:backup_dir/gtm/wal #backup_host: 100.0.1.61 #or local #backup_dir: /home/omm/backup1 # parallel: 1 gtm: backup_host: 192.*.*.62 backup_dir: /backup/gtm tbs_dir: /backup/gtm_tbs datanode: - dn1: backup_host: 192.*.*.62 backup_dir: /backup/dn1 tbs_dir: /backup/dn1_tbs - dn2: backup_host: 192.*.*.62 backup_dir: /backup/dn2 tbs_dir: /backup/dn2_tbs

注意:gtm和datanode各节点的backup_dir、tbs_dir对应的目录都不需要提前创建,备份命令执行后会自动创建。

四、备份部署

1、执行全量备份

ha_ctl backup all -p /backup -c panwei -U bkuser -W '******' -l http://192.*.*.60:2379

截图如下:
image.png

2、查看备份集

ha_ctl backup show -p /backup -l http://192.*.*.60:2379

截图如下:
image.png

3、执行增量备份

ha_ctl backup all -p /backup -c panwei -U bkuser -W '******' -a '-b PTRACK' -l http://192.*.*.60:2379

截图如下:
image.png

4、查看备份集

ha_ctl backup show -p /backup -l http://192.*.*.60:2379

截图如下:
image.png

5、删除单个备份:

ha_ctl backup delete -a '-i 备份id' -p /backup -l http://192.*.*.60:2379

6、查看备份参数:

ha_ctl backup show-config -l http://192.*.*.60:2379 -p /backup

截图如下:
image.png

7、 配置备份定时任务

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

  • 每周六 00:30:00 执行数据库全备份,备份成功后删除过期全备份。
  • 每周日到周五 00:30:00 执行数据库增量备份。
  • 每天删除2*7天前的归档。

注意:
1、编写完backup.yml文件必须进行一次全量备份
2、保留备份周期(一次全备加N个增备到下一次全备代表一个完整的周期,需要先进行全量备份才可以设置set-config):

ha_ctl backup set-config -a '--retention-redundancy=2' -l http://192.*.*.60:2379 -p /backup

image.png

在备份机或者gtm主节点添加:
crontab -e

30 0 * * 6 source /home/omm/.bashrc;ha_ctl backup all -p /backup -c panwei -U bkuser -W '******' -a '--delete-expired' -l http://192.*.*.60:2379 & 30 0 * * * source /home/omm/.bashrc;ha_ctl backup all -a '-b PTRACK --delete-expired' -p /backup -c panwei -U bkuser -W '******' -l http://192.*.*.60:2379 & 0 */2 * * * sh /home/omm/move_and_clear_archive.sh

清理归档脚本:

vi /home/omm/move_and_clear_archive.sh #!/bin/bash fnum=$1 echo "begin to clear archive log..." find /backup/gtm_wal -mtime +${fnum} -type f -name "0000*" | xargs rm -f find /backup/dn1_wal -mtime +${fnum} -type f -name "0000*" | xargs rm -f find /backup/dn2_wal -mtime +${fnum} -type f -name "0000*" | xargs rm -f echo "archive files clean successfully"

五、总结

数据库备份至关重要,在生产系统业务上线前务必部署好备份任务。

关于作者:
网名:飞天,墨天轮2024年度优秀原创作者,拥有 Oracle 10g OCM 认证、PGCE认证以及OBCA、KCP、ACP、磐维等众多国产数据库认证证书,目前从事Oracle、Mysql、PostgresSQL、磐维数据库管理运维工作,喜欢结交更多志同道合的朋友,热衷于研究、分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同探讨~~~

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

评论