首页 > 数据库 >通过CM集群管理的openGauss数据库选主策略

通过CM集群管理的openGauss数据库选主策略

时间:2023-07-19 16:03:16浏览次数:50  
标签:DN 选主 CM 数据库 实例 集群 openGauss CMS

通过CM集群管理的openGauss数据库选主策略

前提条件:集群内参与选主的备实例数量超过集群实例总数的一半
细分策略:
(1)cma会尝试拉起数据库集群原始主实例,6s内成功拉起则无需新一轮仲裁
(2)local_term最大的
(3)local_last_xlog_location最大的
(4)静态主 local_static_role
(5)与静态主同AZ的节点
(6)AZ riority最小
(7)Instance ID最小

脑裂故障及处理思路
前提条件
CM集群正常,能够对数据库集群实例执行主备角色仲裁
网络隔离场景
(1) CM集群
剩下的cm若不满足多数派则会主动降备。
若满足多数派则会触发选主流程,确保该分区中CM子集群可用性。
一旦网络分区故障消失,CM集群将基于DCF实现多主决策完成CM集群脑裂故障恢复,最终使得CM集群恢复正常。
(2)数据库集群
Quorum仲裁:
仅存在CM集群主实例的分区内才会执行数据库集群实例的主备角色仲裁,无CM集群主实例的分区内的所有数据库集群实例均会降备。
一旦网络分区故障消失,CM集群主实例将基于数据库集群实例的term执行多主决策。若term能区分大小则重启term小的数据库主实例,若term相等则重启所有数据库主实例,进入新一轮的仲裁流程。

脑裂预防
CM 认为集群的正常状态为 CMA 正常定时上报 DN 主状态,否则为异常状态,如:

CMA 不能上报,DN 主存在,且与 DN 备连接正常

首先 CMS 认为主故障,启动选主。由于 DN 主与备机连接正常,会导致备机 LOCK1 失败。超时后 CMS 将通过 SSH 向 DN 主远程发送 KILL 命令,杀死原主,选主流程正常进行。超时阈值设置的公式为:
cmsNum _ agent_connect_timeout _ agent*connect_retries + agent_heartbeat_timeout + 10

CMA 不能上报,DN 主存在,但与 DN 备断连

此时 CMS 认为主故障,启动选主。若完成升主后,CMA 恢复上报,将出现双主,CMS 将杀死原主。

网络隔离处理
多 AZ 部署时,若某个 AZ 被网络故障隔离,剩余的 CMS 节点如仍满足多数派条件,则可以触发自仲裁选主和 DN 仲裁选主流程,即在多数派的节点中产生新的 CMS 主和 DN 主。被隔离的少数派中的 CMS 主将主动降备,并杀死被隔离的 DN 主。若网络隔离快速恢复,被隔离的 DN 主还未被杀死,该 DN 主将被新 CMS 主杀死。

简单说:如果出现脑裂双主的情况,CM是根据多数派来确定集群主是哪台的。这种情况就有可能会出现数据丢失的风险。

标签:DN,选主,CM,数据库,实例,集群,openGauss,CMS
From: https://www.cnblogs.com/ddlearning/p/17565831.html

相关文章

  • ArcMap+ArcPy 图层样式批量设置
    originLayerName=""mxd=arcpy.mapping.MapDocument(r"CURRENT")originLayer=arcpy.mapping.ListLayers(mxd,originLayerName)[0]layers=arcpy.mapping.ListLayers(mxd)forlyrinlayers:iflyr.name==originLayer.name:co......
  • .net 6 winform启动器:调用CMD命令行执行dotnet命令启动.net core程序并将控制台输出日
    背景历史遗留问题,生产车间运行的一个.netcoresignalr程序使用命令行程序启动,经常由于生产人员误操作将光标停留在控制台上导致程序假死,丢失部分测试数据,车间随便找了一台win10系统部署的程序,源代码遗失,电脑也是阉割版,原开发者已经离职多年无人敢动,于是想了一个歪门邪道发方......
  • SAS - PROC FCMP
    PROCFCMP概述PROCFCMP可用于自定义函数(funcion)和子程序(subroutines)。自定义函数和子程序的名称的最大长度为32,长度超过32的名称虽然可以定义,但无法调用。PROCFCMP定义函数和子程序的时遵循DATA步中的语法,定义后的函数和子程序被存储在SAS数据集中,可以在其他SAS语......
  • Proj. CMI Paper Reading: Conversational Automated Program Repair
    Abstract背景:之前APR与大模型的结合仅仅使用了一些特殊构建的input/prompt本文:conversationalAPR方法:使用long-termcontextwindow来记录之前的validationfeedback实验:在10个LLMs上进行对比展示改进......
  • Proj. CMI Paper Reading: R-U-SURE? Uncertainty-Aware Code Suggestions By Maximiz
    AbstractTask:buildinguncertainty-awaresuggestionsbasedonadecision-theoreticmodelofgoal-conditionalutility,推理LLM用户的未观测到的意图方法:adecision-theoreticmodelofgoal-conditionedutility,使用生成式模型生成的randomsamples来做proxy,minimumBa......
  • Proj. CMI Paper Reading: Distributed System Fuzzing
    Abstract背景:当前分布式系统分析一般都是黑盒工具,难以探索程序状态工具:MALLORY任务:greyboxfuzzingtestingdistributedsystem方法:timeline-driventesting,timelineabstraction步骤:动态构建描述系统行为的Lamporttimelines将这些timelines抽象化为happens-beforesu......
  • python中的@classmethod和@staticmethod的作用
    classA(object):bar=1deffunc1(self):print("foo")@classmethoddeffunc2(cls):print("func2")print(cls.bar)cls().func1()A.func2()@classmethod的作用实际时可以在class内部实例化class。作用就是比u输......
  • 240-960MHz带编码器的单片OOK 发射器CMT2157B
    CMT2157B是一款真正意义上的单芯片、高灵活性、超低功耗、带编码器的OOK射频发射芯片,非常适合于240至960MHz的无线应用场合。该芯片可实现完全兼容市面上最常用的527、1527、2262和2240等编码格式。此外,还支持用户各种自定义编码。该芯片支持4个独立按键或多达10个扫描按......
  • CMS收集器和G1收集器
    CMS(ConcurrentMarkSweep)收集器是一种以获取最短回收停顿时间为目标的收集器。CMS的运作步骤分为以下四个:初始标记并发标记重新标记并发清除其中,初始标记和重新标记都会引起stoptheworld。初始标记仅仅只是标记一下GCRoots能直接管理到的对象,速度很快,并发标记阶段就......
  • UVA10791 最小公倍数的最小和 Minimum Sum LCM 题解
    前言长沙市一中8机房0714模拟测1。传送门blog思路本题思路,首先我们先看$\operatorname{lcm}$,明显要使得这些数的$\operatorname{lcm}=n$那么我们就需要所有的数的质因子必须包含$n$的质因子。若$1\lea,b$,则$a\timesb\gea+b$,所以我们就有了策略。将同一个质因......