前言:本文模拟了主备集群出现某些故障时监视器状态。
一、模拟确认监视器开启时主库节点故障
(1)杀死主库进程
查看主库的dmserver进程id,kill -9 杀死进程
监视器可以看见如下信息,自动接管,将DM1启动,并将原来的备库DM2切换为主库,切换后正常运行
(2)杀死DM2主库的守护进程和数据库进程
ps -ef|grep dmserver ps -ef|grep dmwatcher kill -9 10663 kill -9 13240
从监视器可以看见DM2主库状态为ERROR状态,且由于守护进程也被杀死,因此DM2无法启动 自动接管后,DM1又变为了主库,可供正常使用
手动启动DM2的数据库实例和守护进程 ./DmServiceDM2 start ./DmWatcherServiceDM2 start
从监视器输出信息可以观察到,DM2被切换为了备库状态,集群状态变正常
(3)备库数据库进程被杀死
查看备库dmserver进程 ps -ef|grep dmserver kill -9 13537
检测到备库异常,自动拉起DM2,拉起成功后,DM2仍然是备库
(4)杀死DM2备库数据库进程和守护进程
ps -ef|grep dmserver ps -ef|grep dmwatcher kill -9 13910 kill -9 13870
监视器可以看见,DM2实例不会被自动拉起,因为DM2的守护进程被杀死
手动启动DM2的守护进程和数据库实例,监视器查看到状态正常
(5)关闭监视器情况下,杀死DM1主库进程
ps -ef|grep dmserver kill -9 杀死后等待一段时间,发现数据库进程又有了,说明守护进程将DM1自动拉起,但是由于监视器是 关闭状态,因此主备库不会切换,DM1仍然为主库
(5)关闭监视器情况下,杀死DM1主库数据库进程和守护进程
ps -ef|grep dmserver ps -ef|grep dmwatcher kill -9 10540 kill -9 9326
打开监视器查看集群状态 cd /home/dmdba/dmdbms/bin ./dmmonitor path=/home/dmdba/dmdbms/monitor/dmmonitor.ini 可以看见备库DM2并未在主库故障时切换未主库,仍然是备库,因为故障时监视器是关闭状态,无法实现自动接管。
二、主备库网络异常
主库上的所有网卡被禁用
ifconfig 网卡名 down
确认监视器无法检测到主备库,且主备集群无法对外服务
恢复: 重新启用网卡: ifconfig 网卡名 up 登录监视器查看状态,集群状态正常
更多学习内容请移步达梦数据库官方地址: https://eco.dameng.com