千家信息网

MySQL MGR集群搭建的步骤

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,本篇内容介绍了"MySQL MGR集群搭建的步骤"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.背
千家信息网最后更新 2025年11月14日MySQL MGR集群搭建的步骤

本篇内容介绍了"MySQL MGR集群搭建的步骤"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.背景

MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终一致性,总结MGR特点如下:

* 高一致性:基于分布式paxos协议实现组复制,保证数据一致性;

* 高容错性:自动检测机制,只要不是大多数节点都宕机就可以继续工作,内置防脑裂保护机制;

* 高扩展性:节点的增加与移除会自动更新组成员信息,新节点加入后,自动从其他节点同步增量数据,直到与其他节点数据一致;

* 高灵活性:提供单主模式和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主节点进行,多主模式支持多节点写入。

2. 环境:

3台服务器搭建3节点MGR集群,MySQL版本5.7.27,操作系统版本CentOS 7.3。

* 192.168.8.71

* 192.168.8.72

* 192.168.8.73

3.安装步骤

3.1 安装MySQL5.7

MySQL官方版5.7.27,采用Linux Generic安装方式,直接下载压缩包,解压到目录/usr/local/mysql。

3.2 修改配置文件

编辑配置文件/etc/my.cnf,3个节点除了server_id、loose-group_replication_local_address、report_host 三个参数不一样外,其他保持一致。

[mysqld]

port=3306

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

server_id=1

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_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"

loose-group_replication_start_on_boot=OFF

loose-group_replication_local_address= "192.168.8.71:33061"

loose-group_replication_group_seeds= "192.168.8.71:33061,192.168.8.72:33061,192.168.8.73:33061"

loose-group_replication_bootstrap_group=OFF

report_host=192.168.8.71

report_port=3306

3.3 初始化数据库(所有节点执行)

3.4 启动数据库,安装MGR插件,设置复制账号(所有节点执行)

--安装MGR插件

mysql>INSTALL PLUGIN group_replication SONAME 'group_replication.so';

--设置复制账号

mysql> SET SQL_LOG_BIN=0;

mysql> CREATE USER repl@'%' IDENTIFIED BY 'repl';

mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%';

mysql> FLUSH PRIVILEGES;

mysql> SET SQL_LOG_BIN=1;

mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery';

3.5 启动MGR单主模式

# 启动MGR,在主库(192.168.8.71)上执行

mysql> SET GLOBAL group_replication_bootstrap_group=ON;

mysql> START GROUP_REPLICATION;

mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

# 查看MGR组信息

mysql> SELECT * FROM performance_schema.replication_group_members;

+---------------------------+--------------------------------------+--------------+-------------+--------------+

| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

+---------------------------+--------------------------------------+--------------+-------------+--------------+

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d401 | 192.168.8.71 | 3306 | ONLINE |

+---------------------------+--------------------------------------+--------------+-------------+--------------+

1 row in set (0.00 sec)

# 其他节点加入MGR,在从库(192.168.8.72,192.168.8.73)上执行

mysql> START GROUP_REPLICATION;

# 查看MGR组信息

mysql> SELECT channel_name,

-> member_id,

-> member_host,

-> member_port,

-> member_state,

-> IF(global_status.variable_name IS NOT NULL, 'PRIMARY', 'SECONDARY') AS member_role

-> FROM performance_schema.replication_group_members

-> LEFT JOIN performance_schema.global_status

-> ON global_status.variable_name = 'group_replication_primary_member'

-> AND global_status.variable_value = replication_group_members.member_id;

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

| channel_name | member_id | member_host | member_port | member_state | member_role |

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d401 | 192.168.8.71 | 3306 | ONLINE | PRIMARY |

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d402 | 192.168.8.72 | 3306 | ONLINE | SECONDARY |

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d403 | 192.168.8.73 | 3306 | ONLINE | SECONDARY |

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

3 rows in set (0.00 sec)

可以看到,3个节点状态为online,并且主节点为192.168.8.71,只有主节点可以写入,其他节点只读,MGR单主模式搭建成功

3.6 切换到多主模式

MGR切换模式需要重新启动组复制,因些需要在所有节点上先关闭组复制,设置 group_replication_single_primary_mode=OFF 等参数,再启动组复制。

# 停止组复制(所有节点执行):

mysql> stop group_replication;

mysql> set global group_replication_single_primary_mode=OFF;

mysql> set global group_replication_enforce_update_everywhere_checks=ON;

# 随便选择某个节点执行

mysql> SET GLOBAL group_replication_bootstrap_group=ON;

mysql> START GROUP_REPLICATION;

mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

# 其他节点执行

mysql> START GROUP_REPLICATION;

# 查看组信息,所有节点的 MEMBER_ROLE 都为 PRIMARY

mysql> SELECT channel_name,

-> member_id,

-> member_host,

-> member_port,

-> member_state,

-> IF(global_status.variable_name IS NOT NULL, 'PRIMARY', 'SECONDARY') AS member_role

-> FROM performance_schema.replication_group_members

-> LEFT JOIN performance_schema.global_status

-> ON global_status.variable_name = 'group_replication_primary_member'

-> AND global_status.variable_value = replication_group_members.member_id;

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

| channel_name | member_id | member_host | member_port | member_state | member_role |

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d401 | 192.168.8.71 | 3306 | ONLINE | PRIMARY |

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d402 | 192.168.8.72 | 3306 | ONLINE | PRIMARY |

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d403 | 192.168.8.73 | 3306 | ONLINE | PRIMARY |

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

3 rows in set (0.00 sec)

可以看到所有节点状态都是online,角色都是PRIMARY,MGR多主模式搭建成功。

3.7 切回单主模式

# 所有节点执行

mysql> stop group_replication;

mysql> set global group_replication_enforce_update_everywhere_checks=OFF;

mysql> set global group_replication_single_primary_mode=ON;

# 主节点(192.168.8.71)执行

SET GLOBAL group_replication_bootstrap_group=ON;

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group=OFF;

# 从节点(192.168.8.72、192.168.8.73)执行

START GROUP_REPLICATION;

# 查看MGR组信息

mysql> SELECT channel_name,

-> member_id,

-> member_host,

-> member_port,

-> member_state,

-> IF(global_status.variable_name IS NOT NULL, 'PRIMARY', 'SECONDARY') AS member_role

-> FROM performance_schema.replication_group_members

-> LEFT JOIN performance_schema.global_status

-> ON global_status.variable_name = 'group_replication_primary_member'

-> AND global_status.variable_value = replication_group_members.member_id;

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

| channel_name | member_id | member_host | member_port | member_state | member_role |

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d401 | 192.168.8.71 | 3306 | ONLINE | PRIMARY |

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d402 | 192.168.8.72 | 3306 | ONLINE | SECONDARY |

| group_replication_applier | 7777f2fe-bd6b-11e9-aad5-08002789d403 | 192.168.8.73 | 3306 | ONLINE | SECONDARY |

+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+

"MySQL MGR集群搭建的步骤"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

节点 模式 数据 一致 信息 步骤 集群 一致性 插件 数据库 版本 成功 内容 分布式 参数 官方 文件 更多 机制 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 安全软件开发用哪个语言 计算机软件网络技术教学视频 csv导出mysql数据库 光遇中的服务器是怎么分的 专利数据库 API 南京网络安全专家 网络安全测试工具 开源 24小时在线的我的世界服务器 宽带服务器的结构 北京市村庄规划数据库 学校网络安全知识培训内容 十大网络安全公司排名20 华夏恒生科技互联网指数 大唐网络安全管理制度 masql数据库有什么用 hibernate数据库变动 医院如何开展服务器维护 广州正规软件开发价位 产业互联网科技创新 软件开发项目报价单 数据库用户怎样看是否有误数 网络安全竞赛答题及答案 软件开发技术服务进项较少 物联网卡定向网络安全 锦江区小兵软件开发工作室 杭州云升潮起网络技术有限公司 镇江智能化联想服务器维修电话 方舟手游联机教程怎么开服务器 为什么要做网络安全等级保护 电信网络安全方面优势
0