案例说明:
在生产环境中,KingbaseES数据库如何同时支持本地和异地物理备份,在早期的版本中只能二选一;KingbaseES数据库新V9版本中增加了“多repo应用”功能,可以有效解决这一问题。
适用版本:
KingbaseES V9R1C1B3
多REPO的使用:
官方文档:https://help.kingbase.com.cn/v9/highly/backup-restore/backup/sys-rman-3.html#repo
支持同时备份或归档到多个REPO,在配置文件中输入多个REPO的IP
#file: sys_backup.conf
# local repo IP/hostname, inner-REPO, means repo located in one db node
# outer repo IP/hostname, outer-REPO, means repo located in outer node
# support MULTI repo IP/hostname, separate by space, example: "10.10.10.11 10.10.10.12"
_repo_ip="192.168.1.111[空格]192.168.1.222"
多个REPO的支持场景有以下限制:
至多支持同时配置8个REPO节点;
多个REPO节点之间需要ssh免密或scmd服务;
一、数据库备份架构
如下所示,数据库备份架构,其中数据库服务器和远程备份服务器节点之间要建立ssh或securecmdd的互信。
[root@node201 R6_C8]# cat /etc/hosts
.......
192.168.1.201 node201 # 数据库服务器
192.168.1.202 node202 # 远程备份服务器
二、环境部署
1、在数据库服务器上部署数据库软件,并创建数据库实例。
2、在远程备份服务器上,部署数据库软件。
3、远程备份服务器上的数据库软件版本和数据库服务器上必须一致,并且软件安装目录必须相同。
4、数据库软件部署版本及路径。
# 数据库服务器
[kingbase@node201 bin]$ /opt/Kingbase/ES/V9R1/Server/bin/ksql -V
ksql (Kingbase) V009R001C001B0030
# 远程备份服务器
[kingbase@node202 bin]$ /opt/Kingbase/ES/V9R1/Server/bin/ksql -V
ksql (Kingbase) V009R001C001B0030
三、数据库服务器创建备份
1、备份配置文件
如下所示,配置多个repo-ip,其中一个为本地,另一个为远程备份服务器IP:(目前只支持single和cluster模式备份)
[kingbase@node201 bin]$ cat sys_backup.conf
......
# target db style enum: single/cluster/single-pro
_target_db_style="single"
# one kingbase node IP/hostname
# just provide one IP/hostname, script will use 'repmgr cluster show' get other node IP/hostname
_one_db_ip="192.168.1.201"
# local repo IP/hostname, inner-REPO, means repo located in one db node
# outer repo IP/hostname, outer-REPO, means repo located in outer node
# support MULTI repo IP/hostname, separate by space, example: "10.10.10.11 10.10.10.12"
_repo_ip="192.168.1.201 192.168.1.202"
---其余配置和单个repo-ip配置相同。
如下所示:配置文件中有“support MULTI repo IP/hostname….”的提示:
2、执行数据库备份
[kingbase@node201 bin]$ sh -x sys_backup.sh init >init.txt 2>&1
如下所示,sys_backup.sh脚本初始化过程,通过ssh或securecmdd远程连接到异地备份服务器,创建repo-path并执行备份:
.......
# create stanza and check(192.168.1.202)...
+ ssh -n -o ConnectTimeout=30 -o StrictHostKeyChecking=no -o PreferredAuthentications=publickey -- kingbase@192.168.1.202 '/bin/rm -rf /home/kingbase/kbbr8_repo/archive'
+ ssh -n -o ConnectTimeout=30 -o StrictHostKeyChecking=no -o PreferredAuthentications=publickey -- kingbase@192.168.1.202 '/bin/rm -rf /home/kingbase/kbbr8_repo/backup'
+ ssh -n -o ConnectTimeout=30 -o StrictHostKeyChecking=no -o PreferredAuthentications=publickey -- kingbase@192.168.1.202 /opt/Kingbase/ES/V9R1/Server/bin/sys_rman --config=/home/kingbase/kbbr8_repo/sys_rman.conf --stanza=kingbase --log-level-console=info stanza-create
.......
# initial first full backup...(192.168.1.202)
+ ssh -n -o ConnectTimeout=30 -o StrictHostKeyChecking=no -o PreferredAuthentications=publickey -- kingbase@192.168.1.202 /opt/Kingbase/ES/V9R1/Server/bin/sys_rman --config=/home/kingbase/kbbr8_repo/sys_rman.conf --stanza=kingbase --type=full backup
.....
三、查看备份信息
1、备份配置文件
本地:
[kingbase@node201 kbbr8_repo]$ cat sys_rman.conf
# Genarate by script at 20240716141415, should not change manually
[kingbase]
kb1-path=/home/kingbase/db/v9/data
kb1-port=54328
kb1-user=system
[global]
repo1-path=/home/kingbase/kbbr8_repo
repo1-retention-full=5
repo2-host=192.168.1.202 #远程备份服务器节点
repo2-host-user=kingbase
repo2-host-config=/home/kingbase/kbbr8_repo/sys_rman.conf
repo2-path=/home/kingbase/kbbr8_repo
repo2-retention-full=5
......
异地:
[kingbase@node202 kbbr8_repo]$ cat sys_rman.conf
# Genarate by script at 20240716141415, should not change manually
[kingbase]
kb1-path=/home/kingbase/db/v9/data
kb1-port=54328
kb1-user=system
kb1-host=192.168.1.201 #数据库服务器节点
kb1-host-user=kingbase
[global]
repo2-path=/home/kingbase/kbbr8_repo
repo2-retention-full=5
......
2、查看备份
如下所示,在本地数据库服务器和远程备份服务器都创建了repo-path,并存储了备份数据:
本地:
[kingbase@node201 data]$ ls -lh ~/kbbr8_repo/
total 4.0K
drwxr-x--- 3 kingbase kingbase 21 Jul 16 14:14 archive
drwxr-x--- 3 kingbase kingbase 21 Jul 16 14:14 backup
-rw-rw-r-- 1 kingbase kingbase 851 Jul 16 14:14 sys_rman.conf
异地:
[kingbase@node202 bin]$ ls -lh ~/kbbr8_repo/
total 4.0K
drwxr-x--- 3 kingbase kingbase 21 Jul 16 14:14 archive
drwxr-x--- 3 kingbase kingbase 21 Jul 16 14:14 backup
-rw-rw-r-- 1 kingbase kingbase 725 Jul 16 14:14 sys_rman.conf
四、总结
sys_rman多repo的应用的备份策略,有效解决了同时支持本地和异地物理备份的问题,在生产环境中可以更好的提升备份的效率,和保护数据的安全。