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

单主模式和多主模式切换

1 组复制模式切换注意点

组复制有两种运行模式,一种是单主模式,一种是多主模式。这个模式是在整个组中设置的,由 group_replication_single_primary_mode 这个系统变量指定,而且在所有成员上必须保持一致。ON 表示单主模式,这也是默认的模式;OFF 表示多主模式。需要注意的是,不能在同一个组的成员中同时使用不同的模式,比如:一个成员配置在多主模式,而另一个成员在单一主模式下。

当组复制正在运行时,不能手动更改 group_replication_single_primary_mode 的值。

在MySQL 8.0.13之前的版本中,如果要更改组的模式,必须停止组复制并在所有成员上更改 group_replication_single_primary_mode 的值。然后进行一次完整的组重启(由 group_replication_bootstrap_group=ON 的服务器引导),以实施对新操作配置的更改。注意:不需要重新启动mysqld服务,只需要将组复制重新引导即可。

从MySQL 8.0.13开始,支持在线对组复制模式进行变更。使用 group_replication_switch_to_single_primary_mode()group_replication_switch_to_multi_primary_mode() 这两个函数在组复制仍在运行时将组从一种模式切换到另一种模式。这两个函数会管理切换组模式的过程,并确保数据的安全性和一致性。

更详细内容请参考官方手册:group-replication-changing-group-mode.html

2 MySQL8.0.13版本前切换方法

在MySQL8.0.13版本之前的版本,不支持在线切换组复制的模式,切换模式需要重启整个组复制。

一、单主模式切换为多主模式

1.查看集群状态和模式

mysql> select * from performance_schema.replication_group_members;
mysql> show status like 'group_replication_primary_member';

判断单主模式的方法是,系统状态变量group_replication_primary_member不为空,会显示主节点的成员号。

2.在所有节点上停止组复制

mysql> stop group_replication;

3.修改主库的配置并重启

mysql> 
set global group_replication_single_primary_mode=off;
set global group_replication_enforce_update_everywhere_checks=on;
set global group_replication_bootstrap_group=on;
start group_replication;
set global group_replication_bootstrap_group=OFF;

参数说明:

  • group_replication_single_primary_mode:单主模式;
  • group_replication_enforce_update_everywhere_checks:冲突检测,严格的一致性检查;
  • group_replication_bootstrap_group:组复制初始化。

4.修改从库的配置并重启

mysql> 
set global group_replication_single_primary_mode=off;
set global group_replication_enforce_update_everywhere_checks=on;
start group_replication;

二、多主模式切换为单主模式

1.在所有节点上停止组复制

mysql> stop group_replication;

2.修改主库的配置并重启

mysql> 
set global group_replication_enforce_update_everywhere_checks=off;
set global group_replication_single_primary_mode=on;
set global group_replication_bootstrap_group=on;
start group_replication;
set global group_replication_bootstrap_group=OFF;

4.修改从库的配置并重启

mysql> 
set global group_replication_enforce_update_everywhere_checks=off;
set global group_replication_single_primary_mode=on;
start group_replication;

三、问题探究

我们知道,单主模式和多主模式的一个很本质的区别是单主模式只有主库支持读写,从库只读。

将集群从单主模式切换为多主模式,就要求单主模式的从库要从只读设置为可读可写。设置只读的参数为read_onlysuper_read_only

不知道各位是否有疑问,当组复制模式转换时,是否需要手动设置上面这两个参数?

比如,当单主模式切换为多主模式时,read_onlysuper_read_onlyMySQL是否会自动设置为OFF?

实验过程如下:

在这里插入图片描述

实验结论:不需要手动设置只读参数。

3 MySQL8.0.13及以后版本切换方法

在MySQL8.0.13版本开始,支持在线切换组复制模式,不需要重启,只需要执行两个内置的函数即可快速完成切换。

一、单主模式切换为多主模式

使用group_replication_switch_to_single_primary_mode()函数将单主模式切换为多主模式。

在任意节点执行如下命令:

mysql> select group_replication_switch_to_multi_primary_mode();
+--------------------------------------------------+
| group_replication_switch_to_multi_primary_mode() |
+--------------------------------------------------+
| Mode switched to multi-primary successfully.     |
+--------------------------------------------------+
1 row in set (1.01 sec)

查看成员状态:

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 13fc049e-c133-11ee-a377-000c29df1f85 | 192.168.131.20 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
| group_replication_applier | 248563ac-c133-11ee-a387-000c29551477 | 192.168.131.30 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
| group_replication_applier | f40395ea-c132-11ee-9249-000c29c00092 | 192.168.131.10 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

切换后MEMBER_ROLE的值都为PRIMARY。

二、多主模式切换为单主模式

查看集群模式和成员号:

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 13fc049e-c133-11ee-a377-000c29df1f85 | 192.168.131.20 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
| group_replication_applier | 248563ac-c133-11ee-a387-000c29551477 | 192.168.131.30 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
| group_replication_applier | f40395ea-c132-11ee-9249-000c29c00092 | 192.168.131.10 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

指定成员号切换模式:

mysql> SELECT group_replication_switch_to_single_primary_mode('f40395ea-c132-11ee-9249-000c29c00092');
+-----------------------------------------------------------------------------------------+
| group_replication_switch_to_single_primary_mode('f40395ea-c132-11ee-9249-000c29c00092') |
+-----------------------------------------------------------------------------------------+
| Mode switched to single-primary successfully.                                           |
+-----------------------------------------------------------------------------------------+
1 row in set (0.03 sec)mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 13fc049e-c133-11ee-a377-000c29df1f85 | 192.168.131.20 |        3306 | ONLINE       | SECONDARY   | 8.0.27         | XCom                       |
| group_replication_applier | 248563ac-c133-11ee-a387-000c29551477 | 192.168.131.30 |        3306 | ONLINE       | SECONDARY   | 8.0.27         | XCom                       |
| group_replication_applier | f40395ea-c132-11ee-9249-000c29c00092 | 192.168.131.10 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

4 总结

MySQL组复制模式切换操作总体上并不复杂,在操作时只需要特别注意环境版本,MySQL8.0.13版本之前模式切换需要重启整个组复制,从MySQL8.0.13版本开始可以在线切换。

模式切换实际上是修改两个系统参数:group_replication_enforce_update_everywhere_checksgroup_replication_single_primary_mode。我们对比手动修改参数和在线切换两种方式不难发现,其实在线切换执行的MySQL函数自动帮我们将这两个系统参数进行同步修改,并且固化到mysqld-auto.cnf配置文件中。

【关联文章】

1)MySQL组复制的介绍
2)MySQL单主模式部署组复制
3)单主模式和多主模式切换
4)MySQL组复制的管理

相关文章:

单主模式和多主模式切换

1 组复制模式切换注意点 组复制有两种运行模式,一种是单主模式,一种是多主模式。这个模式是在整个组中设置的,由 group_replication_single_primary_mode 这个系统变量指定,而且在所有成员上必须保持一致。ON 表示单主模式&#…...

petalinux2018.3安装步骤

1、虚拟机安装ubuntu-16.04.7-desktop-amd64.iso (注意:安装ubuntu-18.04.6-desktop-amd64.iso和ubuntu-16.04.6-desktop-i386.iso会报以下错误) environment: line 314: ((: 10 #15~1 > 10 #3: syntax error in expression (error toke…...

ubuntu22.04下使用conda安装pytorch(cpu及gpu版本)

本文介绍了conda下安装cpu、gpu版本的pytorch;并介绍了如何设置镜像源 ubuntu环境安装pytorch的CPU版本与GPU版本 系统:ubuntu22.04 显卡:RTX 3050 依赖工具:miniconda 确认环境 lsb_release -a No LSB modules are available.…...

突破编程_C++_高级教程(模板编程的基础知识)

1 模板编程的基本概念 C 的模板编程是一种编程技术,它允许程序员编写处理不同类型数据的通用代码。通过使用模板,可以创建与特定数据类型无关的函数或类,这些函数或类在编译时可以根据需要生成特定数据类型的版本。这增加了代码的复用性、灵…...

胆小勿入!AI创作恐怖电影宣传片《生化危机:重生》

胆小勿入!AI创作恐怖电影宣传片《生化危机:重生》 "The city is falling, and the dead walk among us." "In the shadow of the apocalypse, the fight for survival begins." "The streets are silent, but the nightmare …...

HTTP 超文本传送协议

1 超文本传送协议 HTTP HTTP 是面向事务的 (transaction-oriented) 应用层协议。 使用 TCP 连接进行可靠的传送。 定义了浏览器与万维网服务器通信的格式和规则。 是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。 H…...

MySQL导入/导出数据

MySQL导入/导出数据 文章目录 MySQL导入/导出数据一、MySQL 导入数据1、mysql 命令导入2、source 命令导入3、使用 LOAD DATA 导入数据4、使用 mysqlimport 导入数据4.1、mysqlimport的常用选项介绍 二、MySQL 导出数据1、使用 SELECT ... INTO OUTFILE 语句导出数据2、mysqldu…...

Matplotlib初探:认识数据可视化与Matplotlib

Matplotlib初探:认识数据可视化与Matplotlib Fig.1 利用Matplotlib进行数据可视化( 可视化代码见文末) 🌵文章目录🌵 🌳引言🌳🌳一、数据可视化简介🌳🌳二、Matplotlib库简介&#x…...

LeetCode 0987.二叉树的垂序遍历:遍历时存节点信息,遍历完自定义排序

【LetMeFly】987.二叉树的垂序遍历:遍历时存节点信息,遍历完自定义排序 力扣题目链接:https://leetcode.cn/problems/vertical-order-traversal-of-a-binary-tree/ 给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历…...

TCP 和 UDP的区别

文章目录 概述区别UDPTCPTCP与UDP的选择UDP和TCP编程区别 概述 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是互联网中两种最常用的传输层协议 总的来…...

Python 将一维数组或矩阵变为三维

Python 将一维数组或矩阵变为三维 正文 正文 话不多说直接上代码: import numpy as npsampling_points 10001arr np.linspace(0, 2, sampling_points) arr_3D arr.reshape(1, 1, -1) print(arr_3D) """ result: [[[0.0000e00 2.0000e-04 4.0000…...

Python如何实现定时发送qq消息

因为生活中老是忘记各种事情,刚好又在学python,便突发奇想通过python实现提醒任务的功能(尽管TIM有定时功能),也可定时给好友、群、讨论组发送qq消息。其工作流程是:访问数据库提取最近计划——>根据数据…...

支付方式接入:支付宝、微信支付、微软支付

支付方式接入:支付宝、微信支付、微软支付 1、微信支付-接入指引 2、支付宝-接入指引 3、微软支付-接入指引 3.1、使用visual studio打包应用(发布到微软市场):Package a desktop app from source code using Visual Studio -…...

C++中的互斥量

互斥量是一个类&#xff0c;互斥量的使用必须引入头文件#include <mutex>。互斥量就如同一把锁&#xff0c;在同一时间&#xff0c;多个线程都可以调用lock成员函数尝试给这把锁头加锁&#xff0c;但是只有一个线程可以成功给这把锁加锁&#xff0c;其他没有加锁成功的线…...

盲盒小程序开发

现如今&#xff0c;盲盒已经成为了市场上不可忽视的新型消费模式&#xff0c;并且也逐渐遍布在全球各地中。盲盒的种类商品也逐渐丰富完善&#xff0c;不在局限于性价比高的盲盒玩具、手办等&#xff0c;也发展到了美妆、电子、食品等行业&#xff0c;具有较大的实用性和收藏价…...

安装 Windows 10

1.镜像安装 镜像安装:安装Windows 10 2.安装过程(直接以图的形式呈现) 选择专业版的 等待安装即可...

C++文件操作->文本文件(->写文件、读文件)、二进制文件(->写文件、读文件)

#include<iostream> using namespace std; #include <fstream>//头文件包含 //文本文件 写文件 void test01() { //1.包含头文件 fstream //2.创建流对象 ofstream ofs; //3.指定打开方式 ofs.open("test.txt", ios::out); //4.写…...

Mac相关问题

Mac 更新node版本 第一步&#xff0c;先查看本机node.js版本&#xff1a; node -v 第二步&#xff0c;清除node.js的cache&#xff1a; sudo npm cache clean -f 第三步&#xff0c;安装 n 工具&#xff0c;这个工具是专门用来管理node.js版本的&#xff0c;别怀疑这个工具…...

Python爬虫之Splash详解

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx Splash 的使用 Splash 是一个 JavaScript 渲染服务&#xff0c;是一个带有 HTTP API 的轻量级浏览器&#xff0c;同时它对接了 Python 中的 Twisted 和 QT 库。利用它&#xff0c;我们同样可以实现动态渲染页面的抓取。 1. 功…...

Deep深度系统下载安装Beyond compare4

Beyond Compare 4下载和安装 1、在线安装 Debian, Ubuntu安装命令&#xff1a; wget https://www.scootersoftware.com/bcompare-4.4.6.27483_amd64.deb sudo apt update sudo apt install ./bcompare-4.4.6.27483_amd64.deb Redhat Enterprise Linux, Fedora, CentOS安装命令…...

Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode&#xff0c;现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力&#xff0c;让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中&#xff0c;我们遇到了一个很现实的问…...

【数据结构】数组与特殊矩阵

数据结构的学习中&#xff0c;数组与特殊矩阵是基础且核心的内容。它们不仅是程序设计中最常用的线性结构&#xff0c;更是处理复杂矩阵运算的基础。本文将结合解析与真题&#xff0c;带你彻底搞懂数组的存储方式和特殊矩阵的压缩存储技巧。一、一维数组与二维数组&#xff1a;…...

Qwen3.5-2B入门指南:WebUI中Clear Image按钮对多轮图文对话的影响

Qwen3.5-2B入门指南&#xff1a;WebUI中Clear Image按钮对多轮图文对话的影响 1. 认识Qwen3.5-2B轻量化多模态模型 Qwen3.5-2B是Qwen3.5系列中的轻量级版本&#xff0c;仅有20亿参数规模。这个模型特别适合在资源有限的设备上运行&#xff0c;比如个人电脑、边缘计算设备等。…...

Wan2.2-I2V-A14B效果展示:复杂提示词‘雨夜霓虹街道行人撑伞行走’生成效果

Wan2.2-I2V-A14B效果展示&#xff1a;复杂提示词雨夜霓虹街道行人撑伞行走生成效果 1. 模型能力概览 Wan2.2-I2V-A14B是一款专为高质量视频生成设计的先进模型&#xff0c;能够将文字描述转化为生动的动态画面。这款模型特别擅长处理复杂场景和细腻氛围的渲染&#xff0c;在以…...

人工智能准备好进行多模态仇恨言论检测了吗?

摘要 网络仇恨言论针对个人或群体的身份属性进行攻击&#xff0c;传播迅速&#xff0c;带来严重的社会风险。模因&#xff08;结合图像与文本的形式&#xff09;已成为传播仇恨言论的一种隐蔽载体&#xff0c;其解读往往依赖文化背景知识。 然而&#xff0c;现有的多模态仇恨言…...

抖音批量下载工具:高效获取无水印视频与图文内容的全攻略

抖音批量下载工具&#xff1a;高效获取无水印视频与图文内容的全攻略 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

我已战胜一切!感谢哥白尼,感谢爱因斯坦,感谢豆包,,,曾经我都经历过什么,我自己非常清楚,既有爱因斯坦的压缩版,又有哥白尼的压缩版,,,

不是时代不好&#xff0c;是人心中的成见就像一座大山般&#xff0c;无法被逾越&#xff0c;只有暴雨降下&#xff0c;洗刷这个世界&#xff0c;重塑这个宇宙&#xff0c;各位其位&#xff0c;大道至简。历史的车轮早已不可阻挡&#xff0c;&#xff0c;&#xff0c;暴风雨会来…...

WMatrix 7语料库分析工具上线:隐喻识别高效精准,语言学研究利器

温馨提示&#xff1a;文末有联系方式WMatrix 7&#xff1a;专为语料库驱动隐喻分析优化的实用工具 WMatrix 7是当前广受语言学研究者青睐的语料库分析平台&#xff0c;内置强大词性标注、搭配提取与语义域分类功能&#xff0c;尤其在隐喻识别&#xff08;如MVU框架适配&#xf…...

三种主流技术方案,实现文本差异并排对比与可视化

1. 文本差异对比的技术需求与场景分析 在代码审查、文档修订或数据比对等场景中&#xff0c;文本差异对比功能就像给内容做"CT扫描"&#xff0c;能快速定位修改痕迹。我经历过多次团队协作时找不到修改点的尴尬&#xff0c;直到系统化地测试了三种主流技术方案。**并…...

三角面片优化实战:用Delaunay算法将四边形网格转换为高性能三角网格

三角面片优化实战&#xff1a;用Delaunay算法将四边形网格转换为高性能三角网格 在计算机图形学和CAD建模领域&#xff0c;网格质量直接影响着渲染效率、仿真精度和计算性能。当工程师们面对复杂的四边形网格时&#xff0c;如何将其转换为高质量的三角网格成为一项关键技术挑战…...