数据库运维
记录DBA学习成长历程

DM8-数据守护监视器

文章目录

监视器dmmonitor是基于监视器接口实现的一个命令行工具,是DM数据守护系统的重要组成部分。
通过监视器,可以监控数据守护系统的运行情况,获取主备库状态、守护进程状态以及主备库数据同步情况等信息,同时,监视器还提供了一些列命令来管理数据守护系统。

监视器的基本作用如下:

监控数据守护系统
接收守护进程发送的消息,显示主备数据库状态变化,以及故障切换过程中,数据库模式、状态变化的完整过程
管理数据守护系统
用户可以在监视器上输入命令,启动、停止守护进程的监控功能,执行主备库切换、备库故障接管等操作。
确认状态信息
用于故障自动切换的数据守护系统中,主备库进行故障处理之前,需要通过监视器进行信息确认,确保对应的备库或者主库是真的产生异常了,避免主备库之间网络故障引发脑裂。
发起故障自动接管命令
用于故障自动切换的数据守护系统中,主库发生故障时,挑选符合接管条件的备库,并通知备库执行接管操作。
对于实时主备和读写分离集群,监视器只允许配置一个守护进程组。MPP主备允许配置多租,并且要求这些组的主库必须是同一套MPP系统。对于本地守护类型,允许和实时主备、读写分离集群、MPP主备配置到同一组作为异步备库,如果不作为某个库的异步备库,只是普通的单节点配置为本地守护类型,则需要单独成组,并且监视器也不允许配置多组。

监视器类型

监视器支持两种运行模式,监控模式和确认模式。监视器运行模式由配置文件dmmonitor.ini的MON_DW_CONFIRM参数来确定,默认值0,表示监控模式,1时,为确认模式。为了区分监视器的两种模式,我们将运行在确认模式下的监视器称为确认监视器。

监控模式:

一个数据守护系统中,最多允许启动10个监视器,所有监视器都可以接收守护进程消息,获取守护系统状态。所有监视器都可以发起switchover等命令,但守护进程一次只能接收一个监视器的命令,在一个监视器命令执行完成之前,守护进程收到其他的监视器发起的请求,会直接报错返回。

确认模式:

和监控模式一样,确认监视器接收守护进程消息,获取守护守护系统状态,也可以执行各种监控命令。区别在于,除了具备监控模式监视器所有功能之外,确认监视器还具有状态确认和自动接管两个功能。此外,一个数据守护系统中,只能配置一个确认监视器。故障自动切换模式的数据守护系统,必须部署一个确认监视器,否则在出现数据库故障时,会导致数据库服务中断。

状态确认

故障自动切换模式数据守护系统中,主库守护进程检测到备库故障时,需要向确认监视器求证,确认备库是真的故障了,在启动故障处理流程将归档失效,避免引发脑裂。比如,主库网络故障,主库直接将归档失效继续以Primary模式提供服务;同时,确认监视器认为主库故障,将备库切花我Primary模式,守护进程组中同时出现多个主库,引发脑裂。
状态确认只对故障自动切换切换数据守护系统有效,主库守护进程在满足一定条件时,会切换到Confirm状态,向确认监视器进行求证,具体的条件要求请参考备库故障处理小节。
主库守护进程切换到Confirm之后,根据不同的场景决定是否切换为Failover状态并启动故障处理流程,具体的判断条件参考备库故障处理小节,这里列举出几种常见的场景处理,注意前提是主库的守护进程已经处于Confirm状态。
1、主库网络故障,主库到备库、主库到确认监视器的连接异常。这种情况下主库守护进程一直保持Confirm状态,不会启动故障处理流程。
2、备库故障或者备库网络故障,主库守护进程会切换为Failover状态,启动故障处理流程。
3、主备库之间网络故障,但与监视器之间的网络正常,确认监视器确认主库满足Failover执行条件,主库守护进程会切换为Failover状态,启动故障处理流程,否则主库守护进程一直保持在Confirm状态。

自动接管

故障自动切换模式下,确认监视器检测到主库故障后,根据收到的主备库LSN、归档状态、MAL链路状态等信息,确定一个接管备库,并将其切换为主库。确认监视器启动自动接管流程的主要场景有三种,任何一种都会导致备库自动接管。
1、主库数据库实例异常终止,主库守护进程正常。
2、主库硬件故障,或者数据库实例和守护进程同时故障。
3、主库网络故障,主备库之间、主库与监视器之间连接异常。

若想实现备库自动接管,主库、归档状态、备库都必须符合一定条件才行
主库:
1、主库是Primary模式,Open状态,产生故障
2、主库守护进程故障,故障前是Open/Recovery状态
3、故障主库与接管备库和确认监视器之间的MAL链路断开
归档状态:
故障主库到接管备库的归档状态为Valid
备库:
接管备库时Standby模式,Open状态

!!!!!!!!!!!
1、如果需要在主库正常退出时备库进行自动接管,需要配置MON_TAKEOVER_SHUTDOWN参数
2、如果主库故障前正在执行Switchover/Takeover等命令,则备库不会自动接管,需要手工干预
3、确认监视器要求一开始就启动,保证出现故障情况时,确认监视器已经收到了故障主库或备库的历史消息,否则会因为条件不足无法自动处理,需要通过命令方式人工干预
4、当由于一些原因导致自动接管失败时,系统可能不会再次尝试自动接管,需要人工干预。
5、确认监视器不要和主库部署在一台机器上,避免主库网络故障时,备库无法自动切换为主库
6、确认监视器不要和备库部署在一台机器上,避免主备库之间网络异常时,确认监视器误认为主库故障,将备库切换为主库,引发双主问题。

 

内容来自官方文档!

赞(0)
MySQL学习笔记 » DM8-数据守护监视器