【本文正在参与炫“库”行动—人大金仓有奖征文】
活动链接:https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb
KingbaseES集群的故障处理行为
KingbaseES通过高可用组件(HA组件)去监控集群的状态,并对集群的故障转移和故障恢复进行管理。
官方文档列出了对常见的故障的处理行为,常见的故障类型如下:
故障类型 | 故障场景 |
---|---|
状态变换类故障 | 集群主库停库,集群主库节点掉电,集群主库节点重启,集群备库停库、掉电或断网,进程被杀死,系统崩溃,系统时间跳变 |
网络类型故障 | 主节点防火墙误开启,集群主节点网络中断,网络丢包,网络延时,网络分区,网关失联 |
资源耗尽类故障 | 磁盘满(数据盘),磁盘IO高(数据盘),内存使用率高,CPU使用率高,连接满,主库存储故障,备库存储故障 |
KingbaseES集群的守护进程
HA组件中的核心管理进程是repmgrd,改进程存在于所有的集群节点,主备节点的分工不同,特点如下:
备机节点的守护进程
每个standby节点对应的repmgrd会建立与primary节点和本地(standby)节点的连接,用于更新、获取集群的信息;
主机节点的守护进程
primary节点对应的repmgrd就只连接本地的primary节点;
KingbaseES集群的故障转移与恢复
故障转移
备机repmgrd会会定时的不断的去连接primary节点的实例监听端口,当多次连接失败,就会认为primary节点失效,会触发选主和切换操作
实践出真知:
1、当前已部署好1主1备集群
查看集群状态,可以看到当前集群状态正常,node1为主节点
./repmgr cluster show
2、手动停止主机数据库,模拟主机故障
./sys_ctl -D ../data/ stop
3、查看备机节点的repmgrd日志(hamgr.log)
过程分析
3.1、重试检查
备机repmgrd检测到主机节点故障后,会尝试重连主机,重连机制由reconnect_attempts和reconnect_interval参数控制
参数 | 描述 |
---|---|
reconnect_attempts | 默认6次,检测失败时,重试次数,根据用户需要调整 |
reconnect_interval | 默认10s,检测失败时,重试间隔时间,根据用户需要调整 |
如图所示,在默认配置下,备机尝试了6次重连,每次间隔10s
3.2、调整walreceiver重连时长
主库故障,walreceiver会报错退出,默认每5秒启动一次尝试连接主库,将该参数改大,防止竞选过程流复制连接成功影响竞选。
3.3、开始竞选
多节点的竞选会比较复杂,对于1主1备集群,主库故障后,在满足主备数据已经完全同步的前提下,备库默认会获取升主权限。
3.3、浮动ip加载
尝试在原主机卸载浮动ip,由于集群部署了浮动ip对外提供访问接口,备机升级为主机之前会尝试连接原主节点卸载掉浮动ip,卸载完成后,会在新主机加载浮动ip。
3.4、提升备机未主机
执行promote命令,提升备机为主机,至此完成备机的升主操作
在新的主机节点查看集群状态,可以看到,备机成功提升为主机,原主机状态为failed。
至此,集群自动完成了故障转移操作
故障恢复
问题
如何将故障的原主机恢复为备机重新加入集群
为了最大限度的保护用户数据,KingbaseES默认不会自动恢复故障的原主机,此功能可以通过recovery参数进行控制
参数 | 描述 |
---|---|
recovery | standby(自动恢复故障 备节点);manual(手 动恢复);automatic (自动恢复所有故障节点) |
默认配置下,恢复故障的主机节点需要手动执行恢复命令
进入故障主机的bin目录执行手动恢复命令
./kbha -A rejoin -h 192.168.4.187
恢复后查看集群状态,故障节点恢复完成
./repmgr cluster show
【本文正在参与炫“库”行动—人大金仓有奖征文】
活动链接:https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb