m6米乐安卓版下载-米乐app官网下载
6

mogdb/opengauss3.0.0新特性之cm -m6米乐安卓版下载

seven 云和恩墨 2022-08-16
608

为了满足数据库集群服务实例的高可用状态决策和故障自动切换,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. 网络隔离
    (1) cms
    若原cms主被隔离到少数派分区,因无法达成多数派一致,日志无法提交,一定时间内将会降备;
    若某一个分区内无cms主且满足多数派,则会触发选主流程;
    (2) db
    quorum仲裁:若某一个分区中存在数据库主实例,cma也被隔离,无法上报该实例信息,此时cm无法感知主实例,触发选主流程。当网络隔离消失后,db将出现双主,此时cms会杀掉原主实例,确保数据库主实例的唯一性。
    dcf仲裁:参考cms仲裁
  2. 人为制造脑裂
    集群正常状态下,强制将备库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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

网站地图