点击蓝字

关注我们

前文阅读:

1.MySQL高可用--MGR入门(1)单主/多主模式搭建

2.MySQL高可用--MGR入门(2)组复制监控常用相关表

3.MySQL高可用--MGR入门(3)单主/多主模式切换

1.网络异常

MGR 对网络要求很高,有的时候会因网络波动,自动退出集群的情况,此时需要先在出问题的节点停止组复制,然后再重新加入到集群中。

如下,该节点被踢出集群,直接执行Stop group_replication;报错:

需要先执行 stop group_replication 然后再 start group_replication:

Stop group_replication;
Start group_replication;

2.节点启动长时间处于RECOVERING

  • 查看日志:

  • 在主节点将密码的加密方式修改:

SET SQL_LOG_BIN=0;
alter USER repl@'%' IDENTIFIED WITH mysql_native_password BY 'repl';
GRANT REPLICATION SLAVE ON *.* TO repl@'%';
GRANT BACKUP_ADMIN ON *.* TO repl@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
  • 再重启两个从节点:

STOP GROUP_REPLICATION;
START GROUP_REPLICATION;
  • 2节点状态恢复正常:

  • 3节点状态恢复正常:

3.数据异常修复

3.1暂时性恢复

MGR 对数据具有一定的容错性和最终一致性,原则上并不会出现数据不一致的情况,并且每次执行事务都会检测冲突,如果某个节点的数据因为异常导致不一致,切主节点的 binlog 丢失的情况,势必会导致集群数据不一致,此时可以通过以下的方法暂时让集群起来。

停止异常节点的组复制Stop group_replication;清空当前的 GTID EXECUTEDReset master;在异常节点将 GTID 事务号设置和主节点一致SET @@GLOBAL.GTID_PURGED='主节点的 GTID 号';启动异常节点的组复制Start group_replication;

这里需要注意,这样的方式即使恢复了集群,因为 binlog 的缺失,实际上数据是不一致的,极有可能发生后续因为数据不一致导致集群出现问题,这里强烈不建议这么做。

4.分布式恢复

前面提到了暂时性的集群恢复,这样的恢复会有很大的问题,这里将阐述 MGR 正常的恢复方式。当 MGR 中新的成员加入节点时,通常有两种方法,当 binlog 全,或者 binlog 在删除前接入的节点能够成功继续往下同步的,则新加入的节点会继续同步下去,在 MySQL 8.0.21 版本中,可以通过设置参数:

group_replication_advertise_recovery_endpoints

来进行指定点进行同步。

如果在 binlog 不可用或者差的数据实在太多的情况下,MySQL 在 8.0.17 后退出了克隆的方式进行恢复,即在集群中的所有 MySQL 节点上添加克隆插件,新加入的节点数据将会被全部删除,然后会被自动重新同步数据。

4.1节点分布式恢复

读节点重新加入环境。

模拟读节点重新加入,首先观察主节点的数据以及事务的情况:

此时将节点 3,清除所有数据,清除同步信息,重新初始化 MySQL,模拟成新节点。

  • 已有数据:

  • 关库:

  • 删数据文件:

此时3节点已经被集群踢出去了:

  • 重新初始化,启动,并登录:

初始化
mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --initialize-insecure --datadir=/data/3306/data --user=mysql &
启动
mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
登录
mysql -u root

这里注意,因为 2 节点的的 IP 已经添加到了所有节点的 group_replication_group_seeds 中,所以不再添加,如果是新的 IP 加入节点,必须在所有其他节点上 group_replication_group_seeds 中添加新节点的IP。

  • 按照搭建 MGR 节点的步骤,将节点 2 添加到集群中:

Reset master;
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;

  • 已经重新加入到集群中,数据也同步回来:

  • 可以看到同步事务已经一致:

4.2克隆恢复

MySQL 8.0.17 后可以使用克隆恢复。

这里我们依然采用节点 3 作为需要接收克隆的节点。

  • 首先在源节点和接收克隆的节点添加克隆插件:

INSTALL PLUGIN clone SONAME 'mysql_clone.so';
  • 同样因为是组复制,所以节点 3 必须装组复制插件:

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

  • 其次在提供克隆的节点上,也就是节点 1 上赋权:

CREATE USER clone_user@'%' IDENTIFIED by '123456';
GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'%';
  • 在接收克隆的目标节点,也就是节点 2 上赋权:

CREATE USER clone_user@'%' IDENTIFIED by '123456';
GRANT CLONE_ADMIN ON *.* TO 'clone_user'@'%';
  • 在接收克隆的目标节点上设置源端的白名单:

SET GLOBAL clone_valid_donor_list = '192.168.168.101:3360';
  • 为了验证克隆是否会清除接收端上的数据,这里我们多建几个 schema 在节点3执行:

CLONE INSTANCE FROM clone_user@'192.168.168.101':3360 IDENTIFIED BY '123456';
  • 完成之后,把节点3重新加入到集群:

CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery';
start GROUP_REPLICATION;
  • 完成恢复


墨天轮原文链接:https://www.modb.pro/db/170916?sjhy复制链接至浏览器或点击文末阅读原文查看)

关于作者

陈家睿,云和恩墨MySQL技术顾问,拥有MySQL OCP、PGCE、OBCA、SCDP证书,长期服务于电信行业。现负责公司MySQL数据库、分布式数据库运维方面的技术工作;热衷于运维故障处理、备份恢复、升级迁移、性能优化的学习与分享。

END

推荐阅读:331页!2021年度数据库技术年刊

推荐下载:2021数据技术嘉年华视频回放及PPT下载

2021数据技术嘉年华50余个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“2021DTC”获得!

你知道吗?我们的视频号里已经发布了很多精彩的内容,快去看看吧!↓↓↓

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

MySQL高可用--MGR入门(4)异常恢复相关推荐

  1. MySQL高可用--MGR入门(3)单主/多主模式切换

    点击蓝字 关注我们 前文阅读: 1.MySQL高可用--MGR入门(1)单主/多主模式搭建 2.MySQL高可用--MGR入门(2)组复制监控常用相关表 实验演示规划:(3台虚拟机,MySQL版本为8 ...

  2. MySQL高可用--MGR入门(1)单主/多主模式搭建

    MGR特点 (1)基于Paxos协议和原生复制,多数节点同意即可通过事务提交: (2)具备高可用自动故障检测,可自动切换: (3)可弹性扩展,集群自动的新增和移除节点: (4)有单主和多主模式: (5 ...

  3. MySQL高可用--MGR入门(2)组复制监控常用相关表

    前文介绍了 MGR单主多主模式搭建 ,今天为大家讲解MGR组复制监控常用相关表. MGR单个节点状态: MGR整个组的状态: 主要用到4张表: performance_schema.replicati ...

  4. Mysql高可用设计入门

    高可用概念 首先,我们来看一下 wiki 上对高可用(High Availability)的定义: High availability (HA) is a characteristic of a sy ...

  5. 【MySQL高可用】MySQL高可用之MGR部署

    [MySQL高可用]MySQL高可用之MGR部署 参考:https://www.xmmup.com/dbbao45mysqlgaokeyongzhimgrconsuljiagoubushu.html ...

  6. mysql 实例名_不为人知的MySQL高可用复制管理工具——Orchestrator简介

    背景 在MySQL高可用架构中,目前使用比较多的是Percona的PXC,Galera以及MySQL 5.7之后的MGR等,其他的还有的MHA,今天介绍另一个比较好用的MySQL高可用复制管理工具:O ...

  7. MYSQL(高可用方案)

    本次专题是 MySQL高可用方案选型,这个专题想必有很多同学感兴趣. 高可用的意义以及各种不同高可用等级相应的停机时间我就不必多说了,直接进入主题. 可选MySQL高可用方案 MySQL的各种高可用方 ...

  8. mysql 配置vip_数据库学习之十三:mysql高可用配置

    十三.mysql高可用 1.普通主从复制架构存在的不足 高可用? 业务不间断的工作. 用户的体验不出来业务断点. 普通主从环境,存在的问题: 1.监控的问题:APP应用程序,并不具备监控数据库的功能, ...

  9. 死磕数据库系列(二十六):MySQL 高可用之单主、双主模型组复制配置实践

    点关注公众号,回复"1024"获取2TB学习资源! 前面我们学习:MySQL 高可用之组复制(MGR)技术的相关原理知识,今天我将详细的为大家介绍 MySQL 高可用技术组复制的单 ...

最新文章

  1. HTML中checked1001无标题,是否可以一键切换两个CSS`:checked`伪类?
  2. java字符串复制空值_Java脚本:去除字符串中空值
  3. SSM-SpringMVC-16:SpringMVC中小论注解式开发之访问方式篇
  4. jQuery的同胞遍历
  5. 【Docker】Docker java shell ssh
  6. 【图像处理】MATLAB:亮度变换
  7. 小学计算机小蘑菇教案,森林里的小蘑菇教案.doc
  8. 多线程--thread
  9. CF1654-G. Snowy Mountain(2900) GOOD
  10. easy-mock使用
  11. 修复电脑右下角网络图标消失的问题
  12. Word页眉页码、公式编号、引用文献编号
  13. 基于SpringBoot的智能物流监控系统数据系统
  14. Python课程设计大作业:获取比赛数据并进行机器学习智能预测NBA的比赛结果
  15. 大数据学习系列(九)Hadoop1.X痛点分析及Hadoop2.X提出的解决方案
  16. model3充电方式_Model3首发评测 篇二:内饰、充电介绍
  17. linux python pyenv,在Centos中安装并使用Pyenv,一个强大的Python版本管理工具
  18. 概率论与数量统计(二)_第2章随机变量及其概率分布__贝努利试验
  19. 如果使用Qt来开发商业软件,是否需要付费?
  20. java 发票打印_Java发票打印CommPortIdentifier与无符号字节的问题

热门文章

  1. hmm 求隐藏序列_HMM——求隐藏序列,维特比算法求解
  2. (28)css3 3D转换
  3. (17)css3新增背景属性
  4. 运行Gazebo出现[Err] [REST.cc:205] Error in REST reques
  5. 私人服务器能不能微信授权,微信授权流程
  6. java写的教育管理的项目_干货分享|推荐12款适合做Java后台管理系统的项目
  7. 您的浏览器缺少对java的支持_windows10 登录vpn提示:您的浏览器没有得到JVM支持。请安装JVM1.5或以上版本--解决方案...
  8. java jdbc代码_javajdbc代码解决
  9. python原理及代码_lightgbm原理以及Python代码
  10. 学计算机好轻松,猎证全国计算机等级考试学习系统