暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

磐维数据库CM选主及数据库选主

杨健超 2024-10-31
123

中国移动磐维数据库(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主。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论