• Orchestrator 对 MGR MySQL Group Replication的支持


    Orchestrator 一款是 MySQL 高可用high availability软件,主要用于 MySQL Master-Slave 主从架构。

    v3.2.3 开始初步支持MGR MySQL Group Replication。但要求MySQL版本必须大于8.0。
    改动主要包括三部分,实例探测、故障扫描, 以及故障处理。

    1.实例探测

    在MySQL实例探测上,严格限制要求MySQL版本必须大于等于8.0,并且只支持单主模式(single primary mode)。

    探测过程中执行的SQL是:

    	SELECT
    		MEMBER_ID,
    		MEMBER_HOST,
    		MEMBER_PORT,
    		MEMBER_STATE,
    		MEMBER_ROLE,
    		@@global.group_replication_group_name,
    		@@global.group_replication_single_primary_mode
    	FROM
    		performance_schema.replication_group_members
    	WHERE
    		MEMBER_STATE != 'OFFLINE'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    通过执行这个查询SQL,可以发现这个MGR集群中的member。

    2.故障扫描

    在故障扫描部分,利用前面实例探测中获取到信息,区分出是Master-Slave架构还是MGR架构,接着判定相应的故障。

    GetReplicationAnalysis 故障扫描函数中,增加replication group member的判断:

    		MIN(
    			master_instance.replication_group_name != ''
    			AND master_instance.replication_group_member_state != 'OFFLINE'
    		) AS is_replication_group_member,
    
    • 1
    • 2
    • 3
    • 4

    如果是MGR架构,再具体条件判定故障类型:

    /* Group replication issue detection */ {
    			// Group member is not reachable, has replicas, and none of its reachable replicas can replicate from it
    			if !a.LastCheckValid && a.CountReplicas > 0 && a.CountValidReplicatingReplicas == 0 {
    				a.Analysis = DeadReplicationGroupMemberWithReplicas
    				a.Description = "Group member is unreachable and all its reachable replicas are not replicating"
    			}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.故障处理

    判定故障以后,接着进行故障处理,新增了MGR的故障处理函数checkAndRecoverDeadGroupMemberWithReplicas。其中的故障处理注册 recovery register 操作逻辑与 Master-Slave架构相同。

    故障处理基本过程:

    • pre hook
    • 在group member中随机选择一个作为 candidate group member
    • 将其他group member change 到 candidate group member
    • 执行PostIntermediateMasterFailoverProcesses(新增加的)

    针对这个故障处理逻辑,没有特别理解。
    按照以前对MGR的理解,如果primary member宕机了,会自动重新选举一个group member作为新的primary member。

    这个问题,后面再详细看下。

    以上,将Orchestrator对MGR集群的故障探测和处理做了简要介绍。

  • 相关阅读:
    产品经理进阶:外包原因及类型(一)
    JavaScript基础
    Elasticsearch笔记基础入门
    模电课程设计
    [PAT-Advanced] B1019/A1069. The Black Hole of Numbers (20)
    [Java]0.1+0.2不等于0.3 !!一分钱问题与解决方案
    【Java 基础篇】Java JUnit 使用详解
    Golang 中对 json 的优雅处理
    通过商品ID获取到京东商品详情页面数据,京东商品详情官方开放平台API接口,京东APP详情接口,可以拿到sku价格,销售价演示案例
    cesium图标漂移分析与解决
  • 原文地址:https://blog.csdn.net/lanyang123456/article/details/126086614