达梦数据库守护进程脑裂问题处理
脑裂是同一个守护进程组中同时出现两个或者多个活动主库,并且这些主库都接收用户请求,提供完整数据库服务。一旦发生脑裂,将无法保证数据一致性,对数据安全造成严重
后果。造成脑裂的主要原因有两个:网络不稳定或错误的人工干预。为了避免出现脑裂,
1. 设置 dm.ini 参数 ALTER_MODE_STATUS=0,限制用户进行直接通过 SQL 修改数据库模式、状态以及 OGUID。
2. 提供稳定、可靠的网络环境。
3. 配置自动切换数据守护时,将确认监视器部署在独立的第三方机器上,不要与某一个数据库实例部署在一起,避免由于网络问题触发自动故障切换,导致脑裂发生。
4. 通过人工干预,将备库切换为主库之前,一定要确认主库已经发生故障,避免主库活动情况下,备库强制接管,人为造成脑裂。
如下图所示出现两个主库
将守护进程关闭及实例服务都关闭,以正常的主库全量备份,其他两个数据库使用该备份文件还原,并以mount方式启动,将有问题的那个主库改为备库模式,重启守护进程
如上图所示,备份还原之后,主备库lsn还是不一致,两备库还是mount状态,输入tip查看
提示发生分裂,需要手工干预,但实际上都已处理,需要将备库的dmwatcher.ctl 文件删除,重启守护进程ok