为了满足数据库集群服务实例的高可用状态决策和故障自动切换,opengauss3.0引入cm(cluster manager)集群管理组件,其主要功能如下:
- 数据库实例主备角色仲裁
- cm自身高可用仲裁
- 数据库实例运行状态监控及节点资源检测
- 数据库集群、实例的启动、停止,状态查询、状态更新
- 数据库集群、实例自动switchover、failover
以一主三备为例:
cm集群管理分为om_monitor,cm_ctl,cm_server,cm_agent四大模块,依赖dcf,dcc两大模块实现自研高可用仲裁。
om_monitor进程由linux crontab定时任务管控,其功能如下:
- 监测om_monitor进程自身的运行状态:一旦发现其状态为t则强制kill,待定时任务拉起,监测时间间隔1min(这会导致omm恢复时间1-60s不等);
- 读取配置文件并监控进程打开的文件描述符数量;
- 启动cm_agent进程并监测其运行状态:监测时间间隔1s;
- cm_server进程由cm_agent进程管控,其功能如下:
- cm_ctl 指令响应及监控
- cm_agent 上报消息处理
- cm_server实例角色自仲裁
- db实例角色仲裁
- dcc模块初始化,对dcc特定key的读写操作
cm_agent进程由om_monitor进程管控,其功能如下:
- 注册消息接口,接收cm_server指令,调用响应接口执行指令
- 管控cm_server进程和db进程
启动/停止:共享一个线程,每隔一秒监测进程是否需要启动/停止。且在启动进程之前会检测磁盘是否损坏、磁盘使用率是否达到预设的阈值、文件系统是否可写、网卡是否启动。
查询:独立线程,每隔一秒查询一次实例状态并上报给cm_server - 进程僵死检测
监控进程的t/d/z状态,判定是否僵死(超过一定次数则强制kill)
t状态处理逻辑:5轮*36s=180s(实际测试大概150s)
再次处理僵死依赖参数–instance_phony_dead_restart_interval
追求极致rto–enable_e2e_rto=on,立马进行僵死处理 - 故障检测
网卡故障检测 - build
incremental_build 默认就是增量build,三次失败之后才会全量build
-
前提条件
多数派:集群内可参与选主的备机实例数量超过集群节点个数的一半 -
细分策略
(1) cma会尝试拉起db服务,若6s内成功拉起则无需新一轮的仲裁
(2) local_term最大的
(3) local_last_xlog_location最大的
(4) 静态主local_static_role(即上一轮的主)
(5) 与静态主同az的节点
(6) az priority值最小
(7) instance id最小
- 前提条件
cm_server primarv存在 - 场景
- 网络隔离
(1) cms
若原cms主被隔离到少数派分区,因无法达成多数派一致,日志无法提交,一定时间内将会降备;
若某一个分区内无cms主且满足多数派,则会触发选主流程;
(2) db
quorum仲裁:若某一个分区中存在数据库主实例,cma也被隔离,无法上报该实例信息,此时cm无法感知主实例,触发选主流程。当网络隔离消失后,db将出现双主,此时cms会杀掉原主实例,确保数据库主实例的唯一性。
dcf仲裁:参考cms仲裁 - 人为制造脑裂
集群正常状态下,强制将备库failover为主库。cm会将两个数据库主实例都ki1l掉,然后进行重新选主,此时主有可能不是原来的两个主。
- 集群状态查询
cm_ctl query -vci -z all
- switchover(可在任意节点执行)
cm_ctl switchover -n -d
- 单个节点停止(不可使用gs_ctl stop)
cm_ctl stop -n
- 修改参数
cm_ctl set --param --server -k datastorage_threshold_value_check=95
- reload 参数
cm_ctl reload --param --server
- 查看参数是否生效
cm_ctl list --param --server|grep datastorage_threshold_value_check
重点关注图片标黄的日志(cms日志只需看cms主上的日志)
目录位置在集群安装时配置
cm_agent.conf和cm_server.conf存放cm_agent和cm_server的参数
.pid文件存放对应的进程号
主要进行了如下测试:
针对测试结果,作出以下总结,仅供参考
(本次测试均使用cm参数默认值,数据库关闭最大可用模式)
最后修改时间:2022-08-16 17:10:54
「喜欢文章,快来给作者赞赏墨值吧」
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。