中国移动磐维数据库(ChinaMobileDB),简称“磐维数据库”(CMDB)。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。
其产品内核能力基于华为 OpenGauss 开源软件,并进一步提升了系统稳定性。
本篇文章主要介绍集群管理模块CM以及数据库选主的过程分析。
1.CMS选主过程
1.CMS 进程启动,从配置文件中,获取ddb_type 参数,创建ddb连接
2.ddb发现ddb_type为DCC,配置DCC参数,启动DCC,且获取与DCC交互的函数指针(DrvDccAllocConn,DrvDccFreeConn,DrvDccGetValue,DrvDccGetAllKVDrvDccSetKV,DrvDccNodeState,DrvDccLastError),并注册自选主函数回调函数
3.DCC自选主后,通过注册函数,通知CMS选主情况CMS自选主(CMS跟随DCC的选主状态)
4.CMS自选主成功后,接收CMA的数据上报进行实例仲裁如果CMS是刚选主成功,CMS会从ddb中获取上一轮的仲裁信息
5.ddb接收到CMS的信息,调用DCC的函数指针,从DCC获取数据,并把数据和执行结果返回给ddb。
6.ddb接收到DCC的结果信息,封装后,返回给CMS,CMS判断执行是否成功,如果成功了,就把该数据存放到内存中
7.CMS对实例进行仲裁,并把实例结果同步到ddb中
8.ddb调用DCC的函数指针,把数据存放到DCC中,并把执行结果返回给ddb
9.ddb收到返回结果,封装后,返回给CMS。CMS判断执行是否成功,如果成功,把仲裁结论下发给CMA执行。如果执行失败,等待下一轮仲裁
2.启动流程
crontab是系统定时任务,每隔1min拉起om_monitor进程
om_monitor为常驻进程,负责拉起CMA进程
CMA进程负责拉起DN、DSS、CMS进程
由于DN依赖DSS,需要先启动DSS进程,然后再启动DN进程
3.数据库选主流程
CM仲裁DN升主流程:penging ->notify standby ->primary
1.DN仲裁升备
CMA检测DN状态信息,上报给CMSCMS收到消息,判断DN redo是否回放结束,即term 和 Isn 是否有效,如果redo回放结束,CMS下发notifystandby消息,CMA收到消息,执行notify standby 命令
2.DN仲裁升主
CMA检测DN的状态信息,上报给CMS,CMS收到消息,判断该分片上是否存在主DN,如果没有则进入升主流程,给所有备机,发送lock1消息,等待备DNredo回放。如果在满足quorum条件下,选择其中term和Isn最大的DN实例,发送failover消息,使备DN升主。备DN升主结束后,该所有的备DN发送unlock消息,让备DN可以连接新主。
3.CMS处理DN双主
CMA检测DN的状态信息上报给CMSCMS收到消息,判断该分片上是否存在多个主DN,如果存在即进入双主仲裁逻辑,选择term小的DN,发送restart命令,重启主DN,保证只存在一个可用的DN主。