金仓数据库KingbaseES高可用集群single-pro模式物理备份的流程与感悟
关键字:
KingbaseES、物理备份、人大金仓
测试前提:
- 已部署一主一备集群
- 修改share目录下的sys_backup.conf配置文件,实例如下:
_target_db_style="single-pro"
# one kingbase node IP/hostname
# just provide one IP/hostname, script will use 'repmgr cluster show' get other node IP/hostname
_one_db_ip="10.12.2.49"
# 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
_repo_ip="10.12.2.49"
# label of this cluster
_stanza_name="kingbase"
# OS user name of database
_os_user_name="xieyp"
# !!!! dir to store the backup files
# should be accessable for the OS user
_repo_path="/home/xieyp/kbbr_repo"
… …
# !!! these follow 4 parameter ONLY for single style
# data dir of single
_single_data_dir="/home/xieyp/cluster/projectName/test1/kingbase/data"
# bin dir of single
_single_bin_dir="/home/xieyp/cluster/projectName/test1/kingbase/bin"
# database user of single
_single_db_user="system"
# database port of single
_single_db_port="50820"
- 修改data目录下的kingbase.conf配置文件:
配置完成后,重启集群./sys_monitor.sh restart
操作过程:
创建表test,插入部分数据:
create table test(a int ,b text);
insert into test values(generate_series(1,1000),now());
集群备节点bin目录下执行:
./sys_backup.sh init
在初始化过程中,sys_backup.sh会告警提示是否确认修改集群archive_mode参数值为always,选择Y确认修改。
往表test再次插入部分数据,并在备节点进行逻辑备份
insert into test values(generate_series(1001,2000),now());
./sys_dumpall -Usystem -p33333 -f dump.sql
集群备节点bin目录下执行增量备份:
集群主节点bin目录下执行增量备份
查看备份集信息:
停止集群,将备节点数据库目录备份,创建新的空data目录
./sys_monitor stop
mv ./data ./data_bak
mkdir data
集群备节点,进行最新备份集还原:
启动备节点数据库,并进行逻辑备份,对比还原前,还原后的sql文件
此时,集群的状态如下:
备节点执行提升备节点为主节点操作:
./repmgr standby promote
备节点执行注册为主机操作:
./repmgr primary register -F
原主节点执行重做备机操作,再启动数据库:
原主节点执行注册备机到集群操作:
./repmgr standby register –force
手动启动kbha:
./kbha -A daemon -f ../etc/repmgr.conf
查看集群状态,已恢复正常:
./repmgr cluster show
感悟:
- 关于物理备份还原的几种场景,需要注意的是,备份服务器是一个单独的物理设备,相对独立,具有较高的冗余度,备份不会随着数据库节点故障而失效。
- 工具初始配置时、备份时,数据库服务必须处于运行状态、读写功能正常、集群在线。工具的初始配置、备份,必须在REPO仓库节点上执行。工具的还原,必须在DB数据库节点上执行。
- 一般在还原操作、主备切换、手动promote时RWC集群的时间线都会发生变化,对于不同的情况,需要不同的方式进行集群的恢复。一般采用克隆备机、重做备机、重新注册等操作来恢复集群。