暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 8.0使用克隆插件搭建MGR

bingo 2025-04-14
116

一、背景

MySQL Group Replication(简称MGR)是MySQL官方于2016年12月12日推出的一款高可用与高扩展的解决方案,它提供了高可用、高扩展、高可靠的MySQL集群服务,具有以下特点:

强一致性:基于原生复制和paxos协议,保证数据传输的一致性和原子性

高容错性:只要大多数节点没有出现故障,集群就可对外提供服务

高扩展性:节点的加入和移除都是自动的,不需要人为过多干预

高灵活性:具有单主模式和多主模式,单主模式在主宕机后自动选主,多主模式多节点写入


二、服务器规划

主机名

IP地址

group_replication_group_name

server-id

数据库版本

node1

192.168.12.100

a925bee7-f358-11ef-a5f1-000c29ca7434

100

MySQL 8.4.4

node2

192.168.12.101

a925bee7-f358-11ef-a5f1-000c29ca7434

101

MySQL 8.4.4

node3

192.168.12.103

a925bee7-f358-11ef-a5f1-000c29ca7434

103

MySQL 8.4.4


三、配置要求和限制

组复制的使用需要满足如下要求:

  • InnoDB存储引擎
  • 每个表必须有显式主键
  • 网络性能要求低延时、高带宽
  • server_id要唯一
  • 开启GTID
  • 事务隔离级别建议使用RC
  • 不建议使用外键级联约束
  • 组成员最大数目为9


四、安装部署

1、三台服务器都安装好MySQL数据库,配置好hosts解析。

    [root@node1 tmp]# cat /etc/hosts

    192.168.12.100 node1

    192.168.12.101 node2

    192.168.12.103 node3    


2、配置MGR参数

[root@node1 tmp]# vi /etc/my.cnf

--添加MGR相关信息并重新启动MySQL

#禁止 MGR 不支持的引擎

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

server_id=100 #三台服务器根据实际情况进行修改

gtid_mode=ON

enforce_gtid_consistency=ON

plugin_load_add = 'group_replication.so;mysql_clone.so'

group_replication_group_name = 'a925bee7-f358-11ef-a5f1-000c29ca7434' #可以通过select uuid()获取

group_replication_start_on_boot = off

group_replication_local_address = "192.168.12.100:33061" #三台服务器根据实际情况修改为本机的IP地址

group_replication_group_seeds = "192.168.12.100:33061,192.168.12.101:33061,192.168.12.103:33061"

group_replication_bootstrap_group = off


[root@node1 tmp]# systemctl restart mysql


3、查看组复制插件是否安装成功

[root@node1 tmp]# mysql -uroot -p

(root@localhost) [(none)]>show plugins;


4、在主节点创建账号

(root@localhost) [(none)]>create user repl@'%' identified by '123456';

(root@localhost) [(none)]>grant replication slave on *.* to repl@'%';

(root@localhost) [(none)]>grant connection_admin,backup_admin,group_replication_stream on *.* to repl@'%';

(root@localhost) [(none)]>flush privileges;


5、为组复制通道指定账号密码

(root@localhost) [(none)]>CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';


6、选择node1服务器作为引导节点启动组复制服务

(root@localhost) [(none)]>SET GLOBAL group_replication_bootstrap_group=ON;

(root@localhost) [(none)]>START GROUP_REPLICATION;

(root@localhost) [(none)]>SET GLOBAL group_replication_bootstrap_group=OFF;


7、查看组复制信息

(root@localhost) [(none)]>SELECT * FROM performance_schema.replication_group_members;


8、从节点初始化,从主节点克隆数据(两个从节点都需要操作)

(root@localhost) [(none)]>set global clone_valid_donor_list='192.168.12.100:3306';

(root@localhost) [(none)]>CLONE INSTANCE FROM 'repl'@'192.168.12.100':3306 IDENTIFIED BY '123456';

(root@localhost) [(none)]>select stage,state,end_time from performance_schema.clone_progress\G


9、从节点开启MGR复制通道,启动组复制

(root@localhost) [(none)]>CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';

(root@localhost) [(none)]>START GROUP_REPLICATION;


10、查看组复制信息

(root@localhost) [(none)]>SELECT * FROM performance_schema.replication_group_members;


11、配置节点重启后自动加入组复制(三个节点都需要配置)

[root@node1 tmp]# vi /etc/my.cnf

group_replication_start_on_boot = on


12、重启任一节点,检查节点是否会自动加入组复制


五、组复制模式切换

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

(root@localhost) [(none)]>select group_replication_switch_to_multi_primary_mode();


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

(root@localhost) [(none)]>SELECT * FROM performance_schema.replication_group_members; --查看组成员信息

(root@localhost) [(none)]>SELECT group_replication_switch_to_single_primary_mode('ab5006de-0071-11f0-b3c3-000c29949136'); --指定成员号切换


注意:

以上切换方式只适用于MySQL 8.0.13之后的版本。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论