• 如何优雅地添加MGR节点?


    0?wx_fmt=gif&wxfrom=5&wx_lazy=1

    MySQL Group Replication(简称MGR)是MySQL官方于2016年12月份推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩展、高可靠的MySQL集群服务,是MySQL数据库未来发展的一个重要方向。  

    场景描述


    操作系统MySQL版本
    CentOS Linux release 7.3.1611MySQL5.7.20 二进制
    • ip地址规划

    IP地址hostsport
    192.168.74.134mgr-node1.up.com330623306
    192.168.74.135mgr-node2.up.com330623306
    192.168.74.136mgr-node3.up.com330623306

    一个已经运行很久的MGR集群,以single-master模式运行(单主模式),binlog过期策略为7天。

    • 参数设置

    KeyValue
    enforce_gtid_consistencyON
    master_info_repositoryTABLE
    relay_log_info_repositoryTABLE
    binlog_checksumNONE
    log_slave_updatesON
    binlog_formatROW
    ==expire_logs_days==7
    • 需求描述

    因为不可抗力的因素,mgr-node3.up.com 节点永久性的down,并且无法恢复,或者mgr-node3.up.com 宕机超过时间7days, 或需要快速添加节点,那么该如何快速添加或扩容呢?

    猜想
    • 如果这个问题发生在Percona XtraDB Cluster(pxc)或者Mariadb Galera Cluster,那解决方案就是通过SST(全量)或者IST(增量)来实现,那么MGR是否有相关的解决方案呢?

    • 假设MGR也是通过SST或者IST来的解决方案,加入MGR是否可以使用MySQLdump 或者rsync来获得一份全量?

    • 假设是通过MySQLdump来实现传递增量。是否可以用xtrabackup来替换呢?

    下面根据上述的猜想和假设来求证,如何优雅地添加MGR节点。

    验证

    猜想:在MySQL官方文档中没有找到关于SST或IST的描述,既然官方文档没有写,那么在实验环境中能否模拟出来呢?

    • 实验:在mgr-node1.up.com主节点创建一张表

    0?wx_fmt=png

    0?wx_fmt=png

    加入新的节点mgr-node4.up.com并初始化,开启现有环境所有节点的general_log,并观察general的输出mgr-node1.up.com 节点。

    0?wx_fmt=png

    从general_log中找到了蛛丝马迹,目前版本的MGR,不支持SST或IST,实现的方式是根据GTID的方式来实现的。

    同时在general_log中也发现,目前版本的MGR也不支持MySQLdump或者rsync方式来给新加入的节点传递全量。如果binlog被清空的话 则显示为空,新的节点无法加入集群,但

    "root@localhost:mysql3306.sock [aa]>start group_replication; 会提示成功。

    正确姿势

    1.首先,需要手动在MGR集群中获得一致性备份。

    2.初始化新节点,并应用备份。 注意如下操作,否则无法正常启动集群。

    0?wx_fmt=png

    3.安装官方文档正常初始化集群

    4.验证

    0?wx_fmt=png

    总结

    1.如果需要添加一个节点

    添加节点 需要自己手动在MGR集群中备份,MGR集群不存在SST和IST概念,而是完全通过GTID和binlog来实现“追数据”的一个操作。

    2.节点宕机

    如果MGR集群中某个节点宕机,宕机节点会询问存活集群,是否能补全binlog?如果能补齐,那么就会正常传输,进行追数据 ;如果宕机节点需要的日志不存在了,则该节点无法正常加入到集群环境中。

    对于MGR一个建议

    在宕机节点加入MGR集群中,如果发现需要的binlog日志不存在,则无法启动集群start group_replication。

    0?wx_fmt=jpeg


    相关阅读:

    MySQL MGR与Galera性能测试买家秀

    通过Docker技术在macOS上部署3实例MGR环境

    深入剖析 Group Replication内核的引擎特性

    从主从复制到Group Replication

    MySQL Group Replication 学习笔记

    资源下载

    关注公众号:数据和云(OraNews)回复关键字获取

    ‘2017DTC’,2017DTC大会PPT

    ‘DBALIFE’,“DBA的一天”海报

    ‘DBA04’,DBA手记4经典篇章电子书

    ‘INTERNALS’,Oracle RAC PPT

    ‘122ARCH’,Oracle 12.2体系结构图

    ‘2017OOW’,Oracle OpenWorld资料

    ‘PRELECTION’,大讲堂讲师课程资料

    0?wx_fmt=png

  • 相关阅读:
    复习一allure
    本地push 到git hub 二
    项目过程中,测试总感觉自己的时间不够怎么办?
    记一次接口并发,酿成20万损失的惨案
    记录一次管理员组织应用的运行
    记录一次jmeter脚本开发缺少utf-8惹的祸
    记录一次pycharm中,引入其他类可用,下面总是有波浪线,而且Ctrl+b 无法查看类函数的源码
    Fiddler如何过滤无用的链接
    【bat】将当前文件夹及其子文件夹下的所有文件移动到新文件夹中
    python 安装python-docx模块(如何本地安装)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312480.html
Copyright © 2020-2023  润新知