守护进程支持两种守护类型:
本地守护
提供最基本的守护进程功能,监控本地数据库服务。如果实例使用Mount方式启动,守护进程会通知实例自动Open,如果连续一段时间没有收到来自其监控数据库的消息,即认定数据库出现故障,根据配置(INST_AUTO_RESTART)确定是否使用配置的启动明星重启数据库服务。异步备库也是采用这种方式配置。
全局守护
实时主备、MPP主备和读写分离集群系统中,需要将守护进程配置为全局守护类型;DMDSC数据守护除了配置异步备库,也需要将守护进程配置为全局守护类型。守护进程根据数据库服务器配置的归档类型以及MPP_INI参数情况,自动识别具体的集群类型,全局守护类型在本地守护类型的基础上,通过和远程守护进程的交互,增加了主备库切换、主备库故障检测、备库接管、数据库故障重加入等功能。
实时主备、MPP主备和读写分离集群系统中,需要将守护进程配置为全局守护类型;DMDSC数据守护除了配置异步备库,也需要将守护进程配置为全局守护类型。守护进程根据数据库服务器配置的归档类型以及MPP_INI参数情况,自动识别具体的集群类型,全局守护类型在本地守护类型的基础上,通过和远程守护进程的交互,增加了主备库切换、主备库故障检测、备库接管、数据库故障重加入等功能。
守护进程支持两种故障切换模式:
故障自动切换
主库发生故障时,确认监视器自动选择一个备库,切换为主库对外提供服务。故障自动切换模式,要求必须且只能配置一个确认监视器。
故障手动切换
主库发生故障时,由用户根据实际情况,通过监视器命令将备库切换为主库。在用户干预之前,备库可以继续提供只读服务和临时表的操作。
实时主备、MPP主备、读写分离集群都可以配置为故障自动切换或者故障手动切换模式,这两种模式下守护系统的启动流程、数据同步和故障处理机制存在一定的差异。
主库发生故障时,由用户根据实际情况,通过监视器命令将备库切换为主库。在用户干预之前,备库可以继续提供只读服务和临时表的操作。
实时主备、MPP主备、读写分离集群都可以配置为故障自动切换或者故障手动切换模式,这两种模式下守护系统的启动流程、数据同步和故障处理机制存在一定的差异。
守护进程包括以下一些状态:
Startup:守护进程启动状态,需要根据远程守护进程发送的状态信息,结合本地数据库的初始模式、状态、和数据同步情况,确定本地数据库的启动模式和状态后,进入Open状态。
Open:守护进程正常工作,监控数据库,并定时发送数据库的状态信息,接收其他守护进程发送的信息,接收监视器发送的用户请求。
Shutdown:守护进程停止监控数据库状态,也不提供主备库切换功能。
Switchover:主备库正常情况下,手动主备切换过程中设置为switchover状态。
Failover:远程备库故障后,本地主库执行故障处理时,守护进程设置为Failover。
Recovery:故障恢复同步历史数据过程中设置为recovery状态。
Confirm:通过监视器确认远程主备库是否活动的过程中,守护进程设置为Confirm状态。
Takeover:主库确认故障后,备库手工接管或监视器通知自动接管的过程中
Open force:借助监视器命令强制Open主库或备库实例时,守护进程设置为Open force状态。
Error:超过一段时间DW_ERROE_TIME没有接收到远程守护进程消息,本地守护进程或监视器认定远程守护进程故障,修改远程守护进程为Error状态。
Login check:监视器执行登录命令时,守护进程所处的状态。
Mppctl update:修改主库MPP控制文件dmmpp.ctl时,守护进程所处的状态,只在MPP主备系统出现。
Change arch:监视器执行set arch invalid命令时,守护进程的状态。
Standby check:主库守护进程监控到备库异常后,切换到此状态下通知主库修改此备库归档无效。
Clear send info:清理主库上的归档发送信息时
Clear rapply stat:清理备库上的重演信息时
Unify ep:统一DMDSC集群各节点实例状态,或者个实例状态已经一致时,守护进程在Startup或Open状态下通知实例执行相关操作。
Css process:监视器发起的对DMDSC集群的部分命令,比如启动、关闭、强杀DMDSC库,或者打开、关闭节点实例的自动拉起功能等命令,需要借助dmcss执行时。
守护进程所有状态变换和它监控的数据库的状态变换都会生成相应的 LOG 信息,写入 到../log 目录中以’dm_dmwatcher_实例名_当前年月.log’方式命名的日志文件中。用 户可以通过查看日志文件,分析数据库和守护进程的运行状态、监控故障处理过程。
控制文件
数据守护V4.0对守护进程控制文件dmwatcher.ctl进行了简化,仅用于记录本地数据库的分裂状态和分裂描述信息。守护进程在检测到本地库分裂时,自动创建dmwatcher.ctl文件,保存在本地库的SYSTEM_PATH路径下,并且文件中记录的状态一定是Split分裂状态。如果dmwacher加载到dmwatcher.ctl文件,则认为对应的库一定是分裂状态。如果需要对分裂库进行重建。则需要手动将dmwatcher.ctl文件删除,否则守护进程仍然会认定本地库为分裂库。
守护进程控制文件仅包含版本号、状态及分分裂描述信息这三项内容。
有效VALID 正常运行时状态
分裂SPLIT 数据和有效主库的数据不一致时设置。