往期专题请查看www.zhaibibei.cn
这是一个坚持Oracle,Python,MySQL原创内容的公众号
前期回顾
MySQL组复制(MGR)全解析 Part 2 常用复制技术介绍
MySQL组复制(MGR)全解析 Part 3 组复制机制细节
MySQL组复制(MGR)全解析 Part 4 MGR单主模式部署前准备
这期的专题我们来介绍MySQL组复制相关的内容
MGR架构
主机名 | 业务IP | 私有IP | 复制用户 | 角色 |
---|---|---|---|---|
rac1 | 11.12.14.29 | 10.10.10.11 | rpl | 主 |
rac2 | 11.12.14.30 | 10.10.10.12 | rpl | 从 |
rac3 | 11.12.14.39 | 10.10.10.13 | rpl | 从 |
上节我们说了MGR部署前的准备,这节内容为如何部署
1.rac1新建组复制用户
这里我们和前面说过的复制一样,也需要新建用户用于复制
我们这里使用SET SQL_LOG_BIN=0;让该命令不生成日志文件,这样就不会传到其他服务器上了,该变量为session级别
rac1
mysql>SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl@'%' IDENTIFIED BY 'rpl';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl@'%';
mysql> FLUSH PRIVILEGES;
mysql>SET SQL_LOG_BIN=1;复制
2. 开启复制通道
rac1
mysql> CHANGE MASTER TO MASTER_USER='rpl',MASTER_PASSWORD='rpl' FOR CHANNEL 'group_replication_recovery';
复制
3. 引导组复制
第一次启动组复制的过程我们叫做引导(bootstrapping)
我们使用group_replication_bootstrap_group参数来引导以一个组,该参数在前面配置中是off状态
rac1
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;复制
可以看到启动完成并且rac1为主成员
这时我们可以查询下面语句查看MGR信息
SELECT * FROM performance_schema.replication_group_members;
复制
从上图可以看到该组中有一成员,该成员的uuid为4e551942-aeb6-11e9-a5c8-0050568cef02,同时还包含了主机名和监听端口信息,状态为online
这时我们可以在rac1上新增一些表供后续测试使用
mysql>use test
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
mysql> INSERT INTO t1 VALUES (1, 'Luis');复制
4. 加入第二个成员
这时我们的MGR已经引导完成,接下来我们将rac2加入到组中
一些配置信息我们在上节已经说到了,包括复制配置和组复制配置
4.1 新建用户
rac2
mysql>SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl@'%' IDENTIFIED BY 'rpl';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl@'%';
mysql> FLUSH PRIVILEGES;
mysql>SET SQL_LOG_BIN=1;复制
4.2 开启复制通道
rac2
mysql> CHANGE MASTER TO MASTER_USER='rpl',MASTER_PASSWORD='rpl' FOR CHANNEL 'group_replication_recovery';
复制
4.3 开启组复制
rac2
START GROUP_REPLICATION;
复制
这时查询test数据库中的表发现t1表已经同步过来了
5. 加入第三个成员
接下来我们将rac3加入到组中
一些配置信息我们在上节已经说到了,包括复制配置和组复制配置
5.1 新建用户
rac3
mysql>SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl@'%' IDENTIFIED BY 'rpl';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl@'%';
mysql> FLUSH PRIVILEGES;
mysql>SET SQL_LOG_BIN=1;复制
5.2 开启复制通道
rac3
mysql> CHANGE MASTER TO MASTER_USER='rpl',MASTER_PASSWORD='rpl' FOR CHANNEL 'group_replication_recovery';
复制
5.3 开启组复制
rac3
START GROUP_REPLICATION;
复制
这时查询test数据库中的表发现t1表也已经同步过来了
6. MGR自启动设置
在上节中由于我们MGR还没部署,将group_replication_start_on_boot设置为off,在完成搭建后我们将其设置为on
三个服务器
group_replication_start_on_boot=on
复制
7. 注意事项
MGR单主模式下只有一个主成员负责读写,其他成员都是只读,主成员为第一个加入组的服务器,即rac1
其他成员在加入组中read_only和super_read_only参数会自动设置为ON
8. 参考资料
https://dev.mysql.com/doc/refman/5.7/en/group-replication-getting-started.html
可点击阅读原文获得更好的阅读体验,推荐在PC端阅读
也可在公众站内搜索中回复 MGR 搜索相关内容
或直接打开个人网页搜索
http://www.zhaibibei.cn
往期专题包括:
Python 自动化运维
MySQL 安装
mysqldump命令详解
mysqlbinlog命令详解
xtrabackup工具详解
打造属于自己的监控系统
Python爬虫基础
Oracle awr报告全解析
Oracle ASM全解析
Oracle Data Guard全解析
Oracle ClusterWare全解析
Oracle常见参数解析
Oracle常见故障处理
Oracle SQL优化案例
觉得文章不错的欢迎关注,转发,收藏~