美文网首页
MySQL~MGR系列(2)

MySQL~MGR系列(2)

作者: 开心的蛋黄派 | 来源:发表于2024-06-03 16:48 被阅读0次

    零、MGR限制

    1、隔离级别是RC
    2、innodb表,包含主键
    3、不能使用大事务,可以通过参数进行限制
    4、不支持复制过滤
    5、建议局域网配置
    5、节点配置须知
    1、开启binlog/relay-log
    2、开启并行复制
    3、开启GTID
    4、注意加入白名单

    一、版本切换

    1. 版本优先级
      1、同版本->同版本 使用udf函数即可
      2、高版本->低版本 使用udf函数即可
      3、高版本(不能切换
      1、设置新版本目标主权重级别
      2、设置原主read_only super_read_only=1 然后stop group_replaction
    2. 权重排序
      如果版本相同,选择权重,如果权重再相同,比较memeber_i

    . 一旦集群故障的节点超过阈值,整个集群就会被挂起,成为只读状态。

    二、集群节点状态

    • ONLINE:节点可正常提供服务。
    • RECOVERING:节点正在从其他节点恢复数据(也可能处于错误状态)。
    • OFFLINE:GR插件已加载,但节点不属于任何一个GR组。
    • ERROR:节点在recovery阶段或从其他节点同步状态中出现错误。
    • UNREACHABLE:节点处于不可达状态,无法与之网络通讯。

    三、大事务对MGR的影响

    1. 生成阶段:大事务在主节点执行时间长,影响行数多,生成大量writeset和binlog,占用服务器资源。
    2. 传输阶段:影响节点间网络传输性能,可能造成网络抖动和节点脱离风险。
    3. 事务冲突验证阶段:消耗节点大量资源。
    4. 事务应用阶段:消耗资源并可能造成后续事务无法应用,导致延时和集群性能下降。

    四、节点加入失败情况

    1. 新节点本身已有事务,与接收到的发生冲突。
    2. 新节点网段不在ip白名单(allowlist)内。
    3. 新节点需要的全量日志在主库已被删除。
    4. 原主切换后重新加入集群。
      5、 配置错误。 **
      6、
      版本不兼容。**

    五、MGR监控要点

    确实,对于MGR(MySQL Group Replication)的监控,除了概述的监控要点外,了解具体的监控语句也是非常重要的。以下是一些建议的具体监控语句,这些语句可以帮助你更好地了解集群的状态和性能:

    1. 服务进程监控

    -- 检查MySQL服务状态(这通常需要在操作系统层面进行,例如使用systemctl或service命令)
    

    对于服务进程的监控,通常不是通过SQL语句来完成的,而是依赖于操作系统的服务管理工具。

    2. 只读状态监控

    SHOW GLOBAL VARIABLES LIKE 'read_only';
    

    这个语句将显示当前MySQL实例是否设置为只读模式。

    3. 节点状态监控

    -- 查看当前节点的状态
    SELECT * FROM performance_schema.replication_group_members;
    
    -- 或者使用以下命令查看更详细的状态
    SHOW GLOBAL STATUS LIKE 'group_replication_primary_member';
    

    这些命令将显示集群中所有成员的状态,以及哪个成员是当前的主节点。

    4. 集群可用性监控

    集群的可用性通常通过监控各个节点的状态和通信情况来间接反映。没有直接的SQL语句可以全面反映集群的可用性,但可以通过组合多个监控指标(如节点状态、网络连通性等)来评估。

    5. 非写节点的验证等待队列、应用等待队列监控

    -- 查看等待验证的事务队列大小
    SELECT * FROM performance_schema.replication_group_member_stats WHERE member_id = '<member_id>' AND variable_name = 'TRANSACTIONS_CERTIFIED_BEFORE_APPLIED';
    
    -- 查看等待应用的事务队列大小
    SELECT * FROM performance_schema.replication_group_member_stats WHERE member_id = '<member_id>' AND variable_name IN ('TRANSACTIONS_LOCAL_CACHE', 'TRANSACTIONS_APPLIED');
    

    注意:这里的<member_id>需要替换为实际的成员ID。

    6. 非写节点的延时监控

    -- 查看事务应用的延迟情况
    SELECT * FROM performance_schema.replication_group_member_stats WHERE member_id = '<member_id>' AND variable_name = 'TRANSACTIONS_COMMITTED_BEHIND';
    

    这个语句将显示当前节点相对于主节点的事务提交延迟。

    六、VIP服务提供

    -在每个节点都部署VIP绑定和检测脚本,只有符合 primary 并且online的数据库节点才绑定VIP对外提供服务

    相关文章

      网友评论

          本文标题:MySQL~MGR系列(2)

          本文链接:https://www.haomeiwen.com/subject/nbcdqjtx.html