Mysql 部署 MGR 集群

搭建MySQL集群--MGR 一、MGR 介绍 MGR 集群简介 MySQL Group Replication(简称 MGR)是 MySQL 官方于 2016 年 12 月推出的一个全新的高 可用与高扩展的解决方案。MySQL 组复制提供了高可用、高扩展、高可靠的 MySQL 集群服务 MGR 的特点 1、高一致性,基于原生复制及 paxos 协议的组复制技术,并以插件的方式提供,提供一致数据安全保证; 2、高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误 阅读详情

0. 参考文章

官方文档:

MySQL :: MySQL 8.0 Reference Manual :: 18.2 Getting Started

博客:

MGR 单主模式部署教程(基于 MySQL 8.0.28) - 墨天轮 (modb.pro)

mysql MGR单主模式的搭建 - 墨天轮 (modb.pro)

MySQL 5.7 基于组复制(MySQL Group Replication) - 运维小结 - 散尽浮华 - 博客园 (cnblogs.com)

1. 前提条件

硬件条件

  • 三台同一局域网内具有互通能力的 Linux 服务器
  • 也可以在同一台 Linux 机器上开三个 Docker

能力前提

  • 会 Mysql 服务端和客户端的安装和使用,会基本的 Mysql 配置

2. 配置过程

2.1 基础环境准备

修改Linux配置文件:

文件路径:/etc/hosts,在其中加入下列三行配置

每行为对应服务器的 IP 地址和 host name。

不要照抄这个配置,需要按照后续介绍查询自己每台机器的配置。

在这里插入图片描述

host name:

每台服务器/机器/Docker有自己的 host name,具体获取方法可能有区别,我使用的是机器默认的 host name,没有做修改,一般是与你终端上显示的名字相同:

比如我这台服务器的 host name 为 dellr740

在这里插入图片描述

IP 地址:

输入以下命令可获取一个列表,其中 192.168 为首的 IP 一般是本机在本地局域网的地址。

ip addr show

在这里插入图片描述

网络连接:

需要确保三台机器之间能够通过上述 IP 相互访问,可以在每台机器上 ping 其它两台机器试试。

ping 192.168.1.4
...

2.2 主节点配置

mysql server 配置文件:

主节点参考配置如下,以下的配置只是MGR相关的配置,mysql 运行的基本配置需要自己设置。

我会对其中关键的参数做解释。

# 不同节点需要调整的配置
server_id=1
loose_group_replication_local_address= "192.168.1.4:33061"

# 需要根据服务器地址进行更改的配置
loose-group_replication_ip_whitelist = "192.168.1.14, 192.168.1.4, 192.168.1.13"
loose_group_replication_group_seeds= "dellr740:33061, east11713:33061, e117:33061"

# 可以直接复制的配置,无需修改
plugin_load_add='group_replication.so'

loose_group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose_group_replication_start_on_boot=off
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
loose_group_replication_bootstrap_group=off
loose_group_replication_recovery_get_public_key=ON

下列两项配置在每台机器上不一样

# 三台机器不同就行
server_id=1

# 本机的 IP 地址,30061不需要更改,这是 MGR 提供给内部互联的端口
loose_group_replication_local_address= "192.168.1.4:33061"

下列两项配置需要根据自己机器的配置进行调整

# 这一项记录三台机器的 IP
loose-group_replication_ip_whitelist = "192.168.1.14, 192.168.1.4, 192.168.1.13"

# 这一项记录三台机器的 host_name:端口,按道理使用ip:端口也是可以的
loose_group_replication_group_seeds= "dellr740:33061, east11713:33061, e117:33061"

下面这项配置表明MGR需要使用此插件,所以需要自己安装 group_replication.so 插件,我是选择的编译安装。

plugin_load_add='group_replication.so'

MGR用户初始化:

启动主节点的 mysql sever,并使用客户端进入 msyql。

输入以下语句创建组复制的用户:

SET SQL_LOG_BIN=0;

CREATE USER rpl_user@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;

SET SQL_LOG_BIN=1;

输入以下语句开启组复制

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION USER='rpl_user', PASSWORD='password';
SET GLOBAL group_replication_bootstrap_group=OFF;

SELECT * FROM performance_schema.replication_group_members;

若开启成功,会显示如下类似数据表

在这里插入图片描述

2.3 从节点配置

mysql server 配置文件:

配置文件同主节点几乎相同,只需要修改其中前两项,保证 IP 地址是本机的,且 server_id 与另外的机器不同即可。

# 不同节点需要调整的配置
server_id=2
loose_group_replication_local_address= "192.168.1.13:33061"

# 需要根据服务器地址进行更改的配置
loose-group_replication_ip_whitelist = "192.168.1.14, 192.168.1.4, 192.168.1.13"
loose_group_replication_group_seeds= "dellr740:33061, east11713:33061, e117:33061"

# 可以直接复制的配置,无需修改
plugin_load_add='group_replication.so'

loose_group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose_group_replication_start_on_boot=off
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
loose_group_replication_bootstrap_group=off
loose_group_replication_recovery_get_public_key=ON

从节点加入集群:

启动从节点的 mysql sever,并使用客户端进入 msyql。

输入以下语句创建组复制的用户:

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

输入以下语句开启组复制

START GROUP_REPLICATION USER='rpl_user', PASSWORD='password';

SELECT * FROM performance_schema.replication_group_members;

若开启成功,会显示如下类似数据表

在这里插入图片描述


3. 问题汇总

错误信息可以在 mysql 客户端看到一些,也可以在 mysql server 的终端看到(或者是终端输出的错误日志中)

MY-001045

从节点的密码设置与主节点不一致(如果是复制我上述的语句,不会出现这个错误)

MY-002005

主机名和 /etc/hosts中名字不一致,正确的主机名可以用以下语句产生的图中看到。

SELECT * FROM performance_schema.replication_group_members;

在这里插入图片描述

ERROR 3098 (HY): The table does notcomply with the requirements by anexternal plugin .

mysql只支持 innodb 作为 MGR 的存储引擎,如果需要使用自己的存储引擎,需要修改 MGR 插件的源码:

plugin/group_replication/src/observer_trans.cc:143

plugin/group_replication/src/asynchronous_channels_state_observer.cc:202

if (param->tables_info[table].db_type != DB_TYPE_INNODB) {
// 暴力改法(不建议但是可行):改成
if (false) {

Debug 模式 MGR 源码报错

编译安装的时候记得把 MGR 插件也编译成 debug 模式就行了。

【MySQL高可用集群】MySQL的MGR搭建 如果属性 group_replication_single_primary_mode =ON,则其他后启动组复制服务的节点会以slave 节点的身份自动加入复制组 ,最终组成一主多从集群。属性 group_replication_bootstrap_group 配置是否引导组复制,如果某个节点设置此属性为ON,则先启动此节点创建一个组服务并成为 master 节点,接受其他后启动节点加入组复制集群。10.53.207.20 作为引导节点启动组复制服务,此节点将作为主节点接收其他节点加入集群。 阅读详情

相关推荐

mysql 报错 The table does not comply with the requirements by an external plugin.

mysql 组复制集群环境下执行insert 插入数据报错: [Err] 3098 - The table does not comply with the requirements by an external plugin. 报错原因: 通过建表查看到该表引擎为myisam, 通过语句修改表引擎后修复 修改语句: alter table 库名.表名 engine=innodb; 总结: 此类报错问题排查方向: 1.查看数据库表所使用的数据库引擎: SELECT table_name, table_

qq_31024251的博客 1万+

mysql实战之mgr集群

MGR 是一个新的高可用与高扩展的方案,集群中的任何节点数据都是一样的,可以实现任何节点都可以写入,实现了真正意义上的多主。

qq_62789440的博客 3103

mysql高可用集群MGR组复制的介绍、部署及配置说明

MGR组复制mysql高可用集群搭建部署及测试

唯有热爱 可抵万难 1538

Mysql数据库管理--高可用集群MGR实战1

MySQL Group Replication(MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案,MGR是基于原生复制及paxos协议的组复制技术,并以插件的方式提供,可以采取多主模式和单主模式,单主模式下,会自动选主,所有更新操作都在主上进行,多主模式下,所有server都可以同时处理更新操作。下面我们就来搭建下MGR集群(单主模式)。环境清单gtid_mode=on #开启全局事务。

oradbm的博客 1932

STM32H750实战:用TIM+DMA驱动ADC/DAC实现音频回环(附CubeMX配置避坑指南)

本文详细介绍了在STM32H750上构建高保真、低延迟音频链路的实战方法。通过配置TIM定时器作为硬件节拍器,精准触发ADC采集与DAC播放,并利用DMA实现数据的自动搬运,全程无需CPU干预。文章重点剖析了CubeMX配置中的关键步骤与常见“坑点”,如ADC的Conversion Data Management模式选择、DMA的FIFO与Burst模式配置,以及STM32H7系列必须开启ADC全局中断等,并提供了完整的代码实现与调试验证指南。

1057

Python自动化生成HyperMesh Tcl命令流:从几何建模到有限元分析

本文详细介绍了如何利用Python自动化生成HyperMesh的Tcl命令流,实现从几何建模到有限元分析的全流程二次开发。通过封装常用操作函数,工程师可以高效完成参数化建模、自动网格划分及求解器文件输出,显著提升CAE前处理效率与标准化水平。

weixin_29041767的博客 423

手动部署Mysql MGR集群

手动部署Mysql MGR集群

步荀仙的博客 1043

从‘全步’到‘微步’:一张图看懂步进电机细分控制,选对模式让你的项目更丝滑

本文深入解析步进电机细分控制技术,从全步到微步的演进过程,帮助工程师根据项目需求选择最优控制模式。通过对比不同细分等级的性能特点和应用场景,提供3D打印、实验室自动化等领域的黄金配置方案,实现更精准、平稳的电机控制效果。

weixin_29290259的博客 471

centos linux环境用docker进行MySql的MGR集群部署及验证

本文描述了linux服务器用docker进行MySql的MGR集群部署步骤,以及验证主从同步和单主多主模式的切换,并附录了部署常见问题的解决方法(如从站启动问题-GTID事务冲突)等

xingyuemengjin的博客 1227

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

LeRobot 入门教程(一)软件环境、部署流程及摄像头配置

🤖 LeRobot:开源机器人学习平台 摘要:LeRobot是一个基于PyTorch的开源机器人学习平台,提供模型、数据集和工具,旨在降低机器人技术门槛。平台包含经过验证的模仿学习和强化学习方法,并提供预训练模型、人类演示数据集及模拟环境。安装需从源码获取,支持Python 3.10环境,可选扩展包括仿真环境(如gym-aloha)、电机控制(Dynamixel/Feetech SDK)和实验跟踪(Weights & Biases)。该平台托管在HuggingFace,并设有社区Discord频道

2506_90492529的博客 3417

Mysql MGR 多主模式集群部署

mysql MGR 集群部署 文章目录mysql MGR 集群部署1 部署 MySQL1.1 安装仓库文件1.2 YUM 安装指定版本的 MySQL2 初始化数据库2.1 启动服务2.2 设置 root 密码3 配置 MySQL3.1 主机名解析3.2 mysql 配置文件3.2.1 启动组配置文件内容如下:3.2.2 配置项介绍3.2.3 集群内其他节点配置文件如下:4 启动组节点设置并开启 MGR4.1 启动组节点用户授权4.2 为启动组节点设置复制通道4.3 启动组节点开启启动组和开启组复制4.4 为

qq_22648091的博客 846

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南

通过不断实践,熟悉软件的各项功能和操作技巧,工程师可更好地应对工业自动化控制中的各种挑战,开发出高效、稳定的控制程序。项目的基本组件是构成程序的核心元素,包括:程序块(主程序 OB1、子程序和中断程序)、数据块(给 V 存储器赋初值)、系统块(硬件组态和参数设置)、符号表(用符号代替存储器地址,使程序更易理解)以及状态图表(监视、修改和强制变量状态)。下载程序时,单击工具栏上的 “下载” 按钮,在弹出的下载对话框中选择要下载的块(程序块、数据块、系统块),单击 “下载” 即可。

电工 5571

MySQL Mgr集群安装部署

MySQL组复制(MGR)是一种高可用性解决方案,通过Paxos协议实现数据最终一致性。MGR具有高一致性、容错性、扩展性和灵活性,支持单主/多主模式切换。本文详细介绍了MGR的部署过程,包括环境准备、参数配置、插件安装、账号设置以及单主/多主模式切换。通过模拟主节点宕机测试验证了MGR的自动故障转移能力,并提供了docker-compose快速部署脚本。MGR要求仅支持InnoDB表、必须开启GTID和ROW格式二进制日志,存在部分功能限制。该方案有效解决了传统复制模式的数据一致性问题。

Qnn_blog的博客 1100

Sqlserver2012评估期已过问题解决(启动数据库服务报错1705都是同样的问题,数据库过期未激活)

一、背景: 因为之前安装sqlserver2012忘记输入序列号,如今出现评估期已过的问题,前几天忙活半天,才解决,发现网 上叙述都非常凌乱,并且仅仅有大意,有的非常难操作。所以把我操作的过程和大家交流分享: 一定要有序列号的输入。不然会有很多其它的麻烦出现: 二、问题解决: 第一步:进入SQL2012配置工具中的安装中心。 第二步:再进入左側维护选项界面,然后选择选择版本号升级。 ...

堂前燕的博客 3266

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7447

mysql8 MGR集群部署

mysql8 MGR集群部署

lx_1314的博客 613

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

部署MySQL5.7 MGR集群

环境配置:主机名IP地址版本系统mysql-001192.168.10.200mysql-5.7.44centos7mysql-001192.168.10.200mysql-5.7.44centos7mysql-001192.168.10.200mysql-5.7.44centos7注:MGR是在MySQL5.7.17以后...

weixin_41126708的博客 175

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Docker环境下部署MySQL MGR单主模式集群

文章目录一、MySQL MGR单主模式集群部署1.拉取镜像2.创建MySQL专用网络3.创建MySQL容器挂载在本地的存储数据的目录4.创建3个MySQL容器5.在本地修改MySQL的配置项6.重启MySQL容器7.在所有MySQL容器中安装MGR插件8.在所有节点上创建复制账号9.启动MGR单主模式二、MySQL MGR单主模式集群中添加节点1.创建新节点在本地挂载的存储数据的目录2.创建1个MySQL容器3.修改新增MySQL容器的配置项4.重启新增MySQL容器5.在新增MySQL容器上安装MGR插件

不爱学习的小妞博客 1658

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mysql mgr集群说明_k8s集群部署mysql mgr 集群?

记住有一点,以后不管mysql,oracle,hadoop全家桶,这一类的都是有状态服务,通常来说,kubernetes管理无状态到有状态的服务经历过漫长的时间,也迭代了好多的功能组件,部署mysqlmgr其实也是kubernetes管理有状态服务的一种方式。最适合的是参考这篇文章,kubernetes对有状态的服务进行部署和管理,https://kubernetes.io/docs/tasks/...

weixin_42639246的博客 1058

mysql mgr集群多主部署

mysql mgr集群多主部署

ApexPredator的博客 928

MySQL MGR 单主高可用集群部署

MGR 是 MySQL Group Replication(MySQL 组复制)的简称,是 一种基于分布式一致性协议(Paxos)的高可用集群解决方案。

qq_31788747的博客 267

mysql mgr 集群部署 单主模式和多主模式

MGR介绍MySQL Group Replication(MGR:mysql组复制技术)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供。 **MGR基于分布式paxos协议,实现组复制,在分布式中保证数据一致性和原子性,且具有容错率的一致性算法。**内置故障检测和自动选主功能,只要不是集群中的大多数节点都宕机,就可以继续正常工作。 提供单主模式与多主模式,多主模式支持多点写入。 MySQL Group Replication(MGR)是MySQL官方在5.7.17

qq_2382495516的博客 2061

基于 MySQL 8.0.40 MGR 与 ProxySQL 的高可用集群部署实践

本文介绍了构建高可用 MySQL 8.0.40 集群的完整方案,采用 MySQL Group Replication (MGR) 和 ProxySQL 实现。主要内容包括: 环境准备:3节点CentOS 7.x服务器配置,网络互通要求 MySQL安装配置:详细说明了my.cnf和mgr.cnf的关键参数设置 MGR集群搭建:包括复制账户创建、集群引导和节点加入步骤 数据同步验证:通过创建测试数据库验证集群同步功能 ProxySQL安装:作为负载均衡层部署,提供MySQL节点管理 该方案实现了应用→Proxy

代码在键上,故事在江湖。 分享云原生、后端架构与运维实践,记录技术成长路上的每一个脚印。 更多原创内容,欢迎关注微信公众号 「键上江湖」,与你一键相逢。 2510

MySQL Group Replication(MGR)集群部署,实现自动故障切换

本文从环境准备、集群搭建、故障测试到生产优化,完整讲解MGR集群部署流程,核心实现**单主模式下的自动故障切换**,新手也能按步骤落地。

tyatyatya的博客 1376

MySQL【高可用篇】03:MySQL8.0.25InnoDB Cluster【MGR】集群搭建部署

MySQL8.0.25InnoDB Cluster【MGR】集群搭建部署

weixin_40612128的博客 2750
上一篇: 超详细的cmake入门教程【转载】
下一篇: Mysql 存储引擎设计:xa协议相关接口功能及实现
Korpse
博客等级 码龄9年 115粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值