当前位置: 首页 > backend >正文

MGR集群场景恢复处理

目录

  • 说明
  • 场景1 三台服务器全部重启
  • 场景2 只有一台重启了
  • 场景3 网络异常导致集群长时间不能恢复

说明

一般MySQL8 MGR集群基本上是1主2从模式,部署在机房中,理论上应该分配到不同的机房,但是实际场景中客户为节省资源全部放在一个机房中。

如果遇到断电重启后有可能出现3台服务器中的MySQL启动异常。

场景1 三台服务器全部重启

服务器上查看MySQL错误日志 error.log,都显示类似如下:


54:33061 on local port: 33061.'
2024-11-29T03:36:46.204012Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 100.80.50.153:33061 on local port: 33061.'
2024-11-29T03:36:46.204181Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 100.80.50.154:33061 on local port: 33061.'
2024-11-29T03:36:46.204343Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 100.80.50.153:33061 on local port: 33061.'
2024-11-29T03:36:46.204522Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 100.80.50.154:33061 on local port: 33061.'
2024-11-29T03:36:46.204688Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 100.80.50.153:33061 on local port: 33061.'
2024-11-29T03:36:46.204857Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 100.80.50.154:33061 on local port: 33061.'
2024-11-29T03:36:46.205041Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 100.80.50.153:33061 on local port: 33061.'
2024-11-29T03:36:46.205202Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 100.80.50.154:33061 on local port: 33061.'
,,,

在任意一台服务器上,发现MySQL本身服务均正常,可以登录进去.
查看SQL:


SELECT * FROM performance_schema.replication_group_members;

都只有一条记录且状态信息为 OFFLINE

恢复方法如下:

  1. 重新设置主节点
    在选中的服务器上登录MySQL服务后,执行如下命令SQL

SET GLOBAL group_replication_bootstrap_group=ON;  
START GROUP_REPLICATION;  
SET GLOBAL group_replication_bootstrap_group=OFF;

备注:
在一主两从模式中,一般主节点的 super_read_only 为 OFF ,从节点的 super_read_only 为 ON

SET GLOBAL super_read_only = ON;    -- 开启只读(即使是超级用户也不能写入)
SET GLOBAL super_read_only = OFF;  -- 关闭只读

一般情况下无需更改,除非你想在原来从节点服务器上手动指定该节点为引导节点时使用改参数。

  1. 重新加入集群
    其他服务器上登录MySQL服务后,执行如下命令SQL

START GROUP_REPLICATION;
  1. 查看集群状态

SELECT * FROM performance_schema.replication_group_members;

场景2 只有一台重启了

相较于场景一,只有部分比如一台服务器重启了,那么可以将这个服务器中的MySQL实例重新加入这个集群即可。


START GROUP_REPLICATION;SELECT * FROM performance_schema.replication_group_members;

备注:
一般开启参数group_replication_start_on_boot = on控制 MySQL 实例重启时是否自动加入 Group Replication 集群。

my.cnf文件在 [mysqld] 模块下可以增加如下:

[mysqld]
group_replication_start_on_boot=ON

场景3 网络异常导致集群长时间不能恢复

这种情况比较严重,一般不被发现原因主要是只有一台长时间远离了集群,且剩余的2台虽然还可服务,但是网络问题,导致现场运维重启这3台服务器,不巧的事重启了主节点服务器,重启结果发现3台服务器的集群无法起来,应用全部报错!

一般错误日志都包含如下提示信息:

[Repl] Plugin group_replication reported: 'Member with address ... has become unreachable.'[Repl] Plugin group_replication reported: 'Group membership changed to ...[Repl] Plugin group_replication reported: 'Member with address ... is reachable again.[Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to Repl] Plugin group_replication reported: '[GCS] The member was unable to join the group. Local port: 33061'[Repl] Plugin group_replication reported: 'Timeout on wait for view after joining group'

当你准备采用场景一的模式恢复集群时,第一步正常,第二步(加入集群)出现错误,一般错误情况如下:

...[Repl] Plugin group_replication reported: 'This member will start distributed recovery using clone. It is due to no ONLINE member has the missing data for recovering in its binary logs.'
...[Repl] Plugin group_replication reported: 'There was an issue when configuring the remote cloning process: The clone plugin is not present or active in this server.'

原因:

  • 如果新节点的数据与集群主节点“差距很小”(比如GTID进度落后较少),直接用基于binlog的增量同步,速度快,无需clone插件。
  • 如果数据差距很大(比如全新节点,完全空库,或者日志已被清理),MGR就需要用物理快照clone,这时候就强制要用clone插件。

处理:

  1. 关闭当前集群

STOP GROUP_REPLICATION;
  1. 安装CLONE插件

所有节点上执行:

-- 安装 Clone 插件INSTALL PLUGIN clone SONAME 'mysql_clone.so';-- 验证安装成功
SHOW PLUGINS;-- 创建clone用户
CREATE USER 'clone_user'@'%' IDENTIFIED BY 'password333';
GRANT BACKUP_ADMIN, CLONE_ADMIN ON *.* TO 'clone_user'@'%';
FLUSH PRIVILEGES;

备注:
原来从节点需要设置只读参数为OFF


SET GLOBAL read_only=OFF;
SET GLOBAL super_read_only=OFF;

安装完成之后记得重新设置为 ON

my.cnf文件中可增加:

[mysqld]
plugin-load-add=mysql_clone.so
clone=ON
  1. 重新选中主节点

-- 设置引导参数
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;-- 验证状态
SELECT * FROM performance_schema.replication_group_members;
  1. 加入集群

START GROUP_REPLICATION;
  1. 可查看clone进度

SELECT * FROM performance_schema.clone_status\G
SELECT * FROM performance_schema.clone_progress\G
现象常见原因解决办法
RECOVERING 卡住/超时数据量大、clone慢耐心等待
RECOVERING 一直不变或报错clone 插件/权限/配置问题检查 clone_status 日志/权限
一直未 ONLINE网络互通、用户密码、GTID不一致等检查网络权限/GTID设置
报 clone permission deniedclone_user 权限不全重新授权
其他 clone-related 错误插件未装/配置未同步所有节点都 INSTALL PLUGIN
  1. 查看最终集群状态

SELECT * FROM performance_schema.replication_group_members;
-- 查看状态有无 ONLINE

场景的中小企业的业务场景MGR异常恢复场景就这些。

http://www.xdnf.cn/news/14493.html

相关文章:

  • LoRA 与传统矩阵分解的比较
  • Ubuntu24.04一键安装ROS2
  • PoE供电异常如何排查?
  • React-router 基础使用
  • Markdown 使用 mermaid 绘制图
  • 基于Webserver的数据采集
  • Redis Cluster集群机制原理
  • 安卓9.0系统修改定制化____支持安卓9.0系统修改的一些解包 打包工具解析 基础篇 三
  • TC3xx学习笔记-启动过程详解(二)
  • 最新文章 支持一下!!
  • Datawhale---AI办公实践与应用---Cpt2-用讯飞智文做一个小案例
  • 一个高质量的社交电商APP客户端UI解决方案
  • Nginx 配置中·IP地址变量
  • 深度学习的优化⽅法
  • 李沐--动手学深度学习 LSTM
  • 父亲节:传承孝道,守护亲情
  • MySQL 数据库自动备份批处理工具介绍
  • Vue 项目路由模式全解析:从 hash 到 history 再到 abstract
  • Podman 安装与运行 Nginx 容器完整指南(含访问验证)
  • 北斗导航 | 基于matlab的提升卫星导航单点定位精度的算法总结
  • 2022年以来大模型技术及生态发展汇总文档
  • MongoDB文档查询:从基础到进阶的探索之旅
  • 【Dify系列】【一】【安装与部署】【ubuntu22.04安装docker部署dify1.4.2】
  • 先理解软件工程,再谈AI辅助研发
  • 如何在软件公司推行狼性文化?可能存在哪些困难?
  • VSCODE + EIDE 下 STM32 编程使用部分外设无法通过编译:undefined reference to ‘xxx‘
  • 智芯协同:AI与智能硬件产业深度前瞻
  • 综述|探究深度学习在园艺研究中的应用
  • 基础知识-军品软件六性
  • MCP案例 - 数据可视化客户端