1.1 集群的概念
集群是由数据节点,管理节点,HA组件构成的一套7*24小时不间断访问数据的管理系统。
金仓数据库管理系统中一套集群只有一个数据节点为primary,其余为standby。
管理节点:金仓数据库为集群提供了管理。V8R3是watchdog,V8R6是repmgr。
读写分离:金仓数据库提供了读写分离槽做,实现了负载均衡,写操作在primary节点上,读的操作在standby节点,由驱动JDBC实现。
1.2 集群同步原理
流复制是实现集群同步的关键。
- 实现
当用户连接进行数据操作,产生对应的WAL日志记录后,walwriter会周期性地把产生的WALpage刷新到磁盘中,如果配置了备库,则walsender会不断将WAL page发给备库的walreceiver进程,walreceiver进程会把对应WAL page直接写到本地磁盘,同时slave上的startup辅助进程会不断地应用xlog日志,改变本地数据,实现与主库之间的数据同步。而且,通过配置,备库是可以接受用户的只读请求。
2. 基于流复制协议的wal日志从主节点到备节点实时复制与复用。为了实现数据库的高可用性,需要搭建主库和备库。
3. 这两套数据库之间的数据,通过wal日志,后台自动同步。
1.3 集群的脚本部署
1.3.1 部署信息说明
主节点:192.168.0.240
备节点:192.168.0.241
网关:192.168.0.2
浮动IP:192.168.0.245
部署位置:/opt/Kingbase/ES/V8
集群部署工具文件目录:/home/kingbase/cluster_install
db文件位置:/home/kingbase/cluster_db
集群data目录:/home/kingbase/install/kingbase/data
1.3.2 部署集群前的准备
- 按照文档步骤部署V8R6 071集群版数据库
- 检查防火墙是否关闭
主机:systemctl status firewalld
Systemctl stop firewalld
备机:systemctl statusfirewalld
Systemctl stop firewalld
1.3.3 部署配置
- 安装一个V8R6单机版
- 创建集群部署文件目录/home/kingbase/cluster_install和集群db目录
- 创建集群db目录:/home/kingabase/cluster_db
- 从单机版的 /安装目录/ES/V8/Server/bin下将install.conf,trust_cluster.sh和V8R6_cluster_install.sh文件复制到集群部署文件目录,并授予775权限:chmod 775 /home/kingbase/cluster_install/* 将授权文件也放在此目录下
- 从集群版安装目录/opt/Kingbase/ES/V8/DeployTools/zip/Lin64下,将db.zip复制到/home/kingbase/cluster_db/目录下
- 修改install.conf文件
on_bmj=0
all_ip=(192.168.0.240 192.168.0.241)
install_dir="/home/kingbase/cluster"
zip_package="/home/kingbase/cluster_db/db.zip"
license_file=(license.dat)
db_user=“system”
db_password=“123456”
db_port=“54321”
db_mode=“oracle”
db_auth=“scram-sha-256”
data_directory="/home/kingbase/cluster/kingbase/data"
virtual_ip=“192.168.0.245/24”
net_device=(eno16777728 eno16777728)
ipaddr_path="/usr/sbin"
arping_path="/usr/sbin"
ping_path="/bin"
super_user=“root”
execute_user=“kingbase”
reconnect_attempts=“6”
reconnect_interval=“10”
recovery=“standby”
ssh_port=“22” - 用root用户执行免密脚本
cd /home/kingbase/cluster_install
sh trust_cluster_cluster.sh
- 执行V8R6_cluster_install.sh
./V8R6_cluster_install.sh
2.1 集群高可用性测试
2.1.1 结束主库进程
在主库进程结束时,集群会自动识别,并进行切机操作,保证系统正常运行。
备库会升级成主库。
-
查看集群状态
-
查看主库进程
ps -ef | grep kingbase
-
Kill 进程10792
Kill -9 10792
-
查看集群状态
主节点查看:
备节点查看:
可以看到集群备节点已经升级为主节点,主节点挂掉。 -
重启主机服务
-
再次查看集群状态
集群恢复正常
2.1.2 主机断电
- 查看状态
- 主机关机
- 查看状态
刚开始集群会尝试连接主机,此时主备未曾改变,当过了时间未能连接到主库,备机升为主节点。
- 主机恢复供电
集群恢复正常。
2.1.3 主机断网
- 断网
- 备机查询状态
可以看到主机一经宕机,备机升为主机 - 恢复主机网络
- 查看集群状态
集群恢复正常
2.1.4 主机reboot
- reboot
- 查看集群状态
可以看到主机已经宕机 - 当主机重启成功后,查看集群状态
集群恢复正常
2.1.5 修改主机配置文件名称
- 修改主机kingbase.conf文件名称
- 查看集群状态
集群正常
2.2 故障修复
当集群备机出现出现standby as primary 时:
操作步骤:
- 停止备机服务
- 克隆主机
- 启动备机
- 注册备机
- 查看状态
集群恢复成功
3.1 高可用性总结
集群的高可用性在生产环境中十分重要,为数据库的容灾提供了平台。在日常使用的故障,集群都可以快速的恢复正常,足以应对日常生活中的各种问题。
高可用解决方案有如下几个特性:可靠性,可恢复性,自动故障检测,和连续服务。
• 可靠性:高可用解决方案应该包括可靠的硬件,以及可靠的软件(包括数据库,应用服务器,和客户 端等)。
• 可恢复性:确定在系统中可能发生什么种类的故障,以及如何尽快从这些故障中恢复对于满足业务对 于可用性的需求非常重要。
• 实时故障检测和处理:如果系统中有某个关键组件无法正常工作,系统应能够及时发现并采取相应的 补救措施。
• 连续运转:当进行系统维护且不允许暂停应用时,系统应能够提供持续的服务能力。
高可用系统应具备以下特征:
• 能够在故障发生的情况下,不间断或者极少中断对外提供的服务。
• 能够对用户透明的支持对系统,数据,或者应用的变更。
• 提供监控能力可以快速发现故障
• 提供快速的恢复能力
• 支持自动的检测和恢复操作
• 实施最佳实践来管理环境
• 最大限度减少数据丢失或避免数据丢失
【本文正在参与炫“库”行动-人大金仓有奖征文】
活动链接