为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8 20250506以及20250122(我猜测这个问题应该在任何版本都存在)
【操作系统】:银河麒麟v10服务器版
【CPU】:x86_64
【问题描述】*:
我搭建好了达梦数据库实时主备集群。当我在主上执行reboot或者poweroff时,发现备机无法接管。但这是个概率事件,偶尔能接管,大部分时候都不能。根据后面我自己的探索,应该是受到实例进程和守护进程的关闭顺序的影响。如果先关闭实例进程后关闭守护进程,这个问题必现;先关闭守护进程,后关闭实例进程,这个问题必无。后续我会提供证明。
msk-0 192.168.8.40 监视器
msk-1 192.168.8.41 达梦主(服务端口 32141)
msk-2 192.168.8.42 达梦备(服务端口 32142)
监视器信息如下:
在监视器上连接主备数据库都可以正常连接
以上可以确认我的主备集群搭建的没问题。
在监视器上连接测试
以上更加可以证明我的主备搭建的没有问题。
由于上面手动切换了一次,现在主是msk-2(192.168.8.42)
把主关机,(关机这个操作不是稳定复现这个问题,概率复现)监视器日志如下:
此时连接数据库
确实没有发生主备切换。
多次尝试之后,就有了我开篇的猜测,这个应该是和实例进程和守护进程关闭的关系有关,这里poweroff的时候肯定是先关了实例进程。为了证明这个结论,我又做了如下实验。
此时我先恢复一下集群状态,依旧msk-1为主,msk-2为备,下图可证明集群状态正常。
我现在在主上执行如下命令:先停实例进程再停守护进程
监视器信息(两张图拼在一起看):
反之我执行如下命令:
监视器显示如下:
由此可证明,的的确确和服务被关闭的顺序有关。而reboot和poweroff甚至直接拔线,如何控制呢?
为了寻求帮助,我在达梦e学群里面咨询了一下,有一个小伙伴现场搭建测试,也遇到了,如下:
希望尽快得到解决,生产环境急急急!!!
如需在本人环境上远程操作:请加qq:1487271018
该问题正在处理当中。
而reboot和poweroff甚至直接拔线,如何控制呢?
这个其实是因为dw同步了状态给确认监视器是吧。
拔线肯定是ok的;主要是 reboot 和power off这个,要求dmwatcher比 dmserver先关不可控,是否符合设计的问题。
这个大家确实可以讨论一下,改起来其实简单,主要是考虑安全性。 最合适的做法,是不是其实通过systemctl控制 关机的服务依赖顺序。
如果需要控制此类正常退出主库后备库也进行接管的场景,可以在确认监视器的配置dmmonitor.ini里面加入MON_TAKEOVER_SHUTDOWN=10的配置,这样你的这个场景如果10秒后主库没有重新启动,确认监视器就会进行接管,切换备库为新主控。配置如下:
这个参数可以在《DM8数据守护与读写分离集群》手册中找到说明,默认没有配置的情形下是不启用的:
请您保持电话畅通,我们与您联系