目录
第1章 概述
1.1 环境介绍
节点数量:1主1备
归档类型:实时归档
主库实例名:GRP1_RT_01
备库实例名:GRP1_RT_02
守护模式:故障自动切换
数据库版本:DM_20240712
操作系统版本:CentOS7.6
数据守护集群版本:V4.0
1.2 主要内容
本文第2章介绍主库故障、备库接管的执行流程,介绍了接管需要满足哪些条件;第3章模拟了达梦数据守护集群的主库故障,记录了故障分析过程。
第2章 守护进程处理流程
2.1 主库故障、备库接管执行流程
案例:故障自动切换模式,主库主机宕机,2分钟后主机重新启动。主库停机时间超过故障认定时间DW_ERROR_TIME(20S),启动备库接管流程。
备库接管执行流程:
1、守护进程切换到TAKEOVER状态
2、修改数据库状态为MOUNT
3、修改数据库模式修改为PRIMARY
4、修改所有归档状态为INVALID
5、数据库切换到OPEN状态
6、守护进程切换到OPEN状态
如下图:
参数DW_ERROR_TIME:
守护进程故障认定时间,单位秒,取值范围为 3~32767,缺省 15 秒没有收到远程守护进程消息,即认定远程守护进程故障,对本地守护无效。另外此参数也是监视器认定守护进程的故障时间,超过设置的时间间隔仍没有收到守护进程消息,监视器认为守护进程出现故障
2.2 主库故障、备库接管需满足的条件
为了避免备库接管后,造成守护进程组分裂,执行 Takeover 必须满足下列条件:
1、主库是 Primary 模式、Open 状态时,发生故障
2、主库守护进程故障,故障前是 Open/Recovery 状态;或者主库守护进程正常
3、主库故障前到接管备库的归档状态为 Valid
4、接管备库是 Standby 模式、Open 状态
5、接管备库的守护进程控制文件状态为 Valid(内存值)
6、故障主库和接管备库的 Open 记录项内容相同
第3章 主库故障分析
3.1 案例
问题:故障自动切换模式,主库宕机或异常掉电切换,如何分析故障原因?
案例:登录监视器,发现原备库GRP1_RT_02成为了主库,原主库GRP1_RT_01成为了备库。如下图:
接下来,我们尝试分析下故障原因
3.2 故障分析
首先,要确定故障发生时间。知道了故障发生时间,可以查看这个时间点的守护进程日志、实例日志、系统日志、HISTORY日志,大概率就可以分析出故障发生的原因。
1)确定故障发生时间
我的方法是查找确认监视器日志中的TAKEOVER关键字。
在TAKEOVER之前大概20秒(DW_ERROR_TIME=20)左右,我们看到数据库GRP1_RT_01的报错信息。故障发生时间是2024-09-11 10:47:24。
2)查看原主库(GRP1_RT_01)守护进程日志
日志中可以看到,守护进程在10:50再次启动。结合故障发生时间是10:47,守护进程在10:47-10:50有3分钟左右的时间处于宕机状态。
3)查看原主库(GRP1_RT_01)实例日志
分析数据库实例日志,数据库同样在10:47-10:50有3分钟左右的时间处于宕机状态。
4)主机启动日志
last reboot
服务器在10:47关机,10:49再次重启。
到这里,我们找到了发生主备切换的原因是由于操作系统关机、重启导致的。接下来可以通过history日志判断是人为关机,还是硬件故障导致的关机。也可以请系统管理员协助排查系统故障原因。
3.3 主备库切换
为了方便管理,我们将主备库手工切换到原来的位置。
登录非确认监视器
选择可切换备库
choose switchover
执行切换命令
switchover GRP1_RT_01
手动切换完成
本文结束!
20240911
参考文档:《DM8数据守护与读写分离集群V4.0》