MySQL Group Replication 搭建

 1.搭建环境:

OS:Linux.el6uek.x86_64

MySQL:5.7.26

2.模式:

1 主 2 从

192.168.65.2  test2

192.168.65.3  test3

192.168.65.4  test4

3.必要参数:

gtid_mode=on

enforce-gtid-consistency=on

binlog_gtid_simple_recovery=1

log-slave-updates=1

binlog_checksum=NONE

master_info_repository=TABLE

relay_log_info_repository=TABLE

transaction_write_set_extraction = MURMUR32

loose-group_replication_group_name = '9ac06b4e-13aa-11e7-a62e-5254004347f9'     #组名,有效地UUID即可

#loose-group_replication_ip_whitelist = '127.0.0.1/8,192.168.65.0/24'

loose-group_replication_start_on_boot = OFF                                                          #开机自动启动

loose-group_replication_local_address = '192.168.65.2:33061'               #本机ip+port,端口不能跟mysql的端口一样

loose-group_replication_group_seeds = '192.168.65.3:33061,192.168.65.4:33061,192.168.65.2:33061'  # group 中所有机器list

loose-group_replication_bootstrap_group = OFF          # 初始化,默认关闭

loose-group_replication_single_primary_mode = true   # 单主模式

loose-group_replication_enforce_update_everywhere_checks = false    #强制检查 ,多主模式时需要

 

PS:除了MySQL安装所需的参数外,上面是搭建 Group Replication 必须要的参数;

 

4.建立复制用的账号(ALL):

mysql>grant replication slave on *.* to rpl@'%' identified by '123';

 

5.安装插件(ALL):

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

 

6.检查是否安装完成(ALL):

mysql> show plugins;

如果出现 group_replication 即为成功

 

7.Change master

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

 

8.初始化

mysql> set global group_replication_bootstrap_group = on;

 

9.start group_replication

mysql> start group_replication;

 

10.关闭初始化

mysql> set global group_replication_bootstrap_group = OFF;

 

11.检查状态:

mysql> select * from performance_schema.replication_group_members;

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

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE |

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

| group_replication_applier | b5ab9bc1-7cb0-11e9-816c-000c29dbfcd1 | 192.168.65.2 |        3306 | ONLINE       |

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

 

12.从节点操作

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

mysql> start group_replication;

每个从节点都执行上面2个操作

 

13.查看状态:

mysql> select * from performance_schema.replication_group_members;

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

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE |

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

| group_replication_applier | 82dfcffa-a939-11e9-bb5c-000c29f8b2a5 | test4        |        3308 | ONLINE       |

| group_replication_applier | b5ab9bc1-7cb0-11e9-816c-000c29dbfcd1 | 192.168.65.2 |        3306 | ONLINE       |

| group_replication_applier | f3755962-a189-11e9-a5f7-000c298f0ec5 | 192.168.65.3 |        3306 | ONLINE       |

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

mysql> show global status like 'group%';

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

| Variable_name                    | Value                                |

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

| group_replication_primary_member | b5ab9bc1-7cb0-11e9-816c-000c29dbfcd1 |

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

 

至此,MySQL Group Replication搭建完成

 

14.slave 宕机测试:

a.模拟192.168.65.3宕机

          直接 Kill -9  mysql 的进程

 

b.master 查看状态

mysql> select * from performance_schema.replication_group_members;

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

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE |

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

| group_replication_applier | 82dfcffa-a939-11e9-bb5c-000c29f8b2a5 | test4        |        3308 | ONLINE       |

| group_replication_applier | b5ab9bc1-7cb0-11e9-816c-000c29dbfcd1 | 192.168.65.2 |        3306 | ONLINE       |

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

 

发现 192.168.65.3 已经退出复制

 

c.当 192.168.65.3 恢复后,如果重新加入:

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

mysql> start group_replication;

 

mysql> select * from performance_schema.replication_group_members;

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

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE |

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

| group_replication_applier | 82dfcffa-a939-11e9-bb5c-000c29f8b2a5 | test4        |        3308 | ONLINE       |

| group_replication_applier | b5ab9bc1-7cb0-11e9-816c-000c29dbfcd1 | 192.168.65.2 |        3306 | ONLINE       |

| group_replication_applier | f3755962-a189-11e9-a5f7-000c298f0ec5 | 192.168.65.3 |        3306 | ONLINE       |

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

 

15. master 宕机测试:

a.模拟 192.168.65.2 宕机

直接 Kill -9  mysql 的进程

 

b.slave 上查看状体

mysql> select * from performance_schema.replication_group_members;

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

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE |

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

| group_replication_applier | 82dfcffa-a939-11e9-bb5c-000c29f8b2a5 | test4        |        3308 | ONLINE       |

| group_replication_applier | f3755962-a189-11e9-a5f7-000c298f0ec5 | 192.168.65.3 |        3306 | ONLINE       |

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

 

mysql> show global status like 'group_replication_primary_member';

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

| Variable_name                    | Value                                |

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

| group_replication_primary_member | 82dfcffa-a939-11e9-bb5c-000c29f8b2a5 |

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

可见,当 master 宕机后,将 test4 自动建立成了新的 master。

 

c.当 192.168.65.2 恢复后,如果重新加入:

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

mysql> start group_replication;

 

mysql> select * from performance_schema.replication_group_members;

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

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE |

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

| group_replication_applier | 82dfcffa-a939-11e9-bb5c-000c29f8b2a5 | test4        |        3308 | ONLINE       |

| group_replication_applier | b5ab9bc1-7cb0-11e9-816c-000c29dbfcd1 | 192.168.65.2 |        3306 | ONLINE       |

| group_replication_applier | f3755962-a189-11e9-a5f7-000c298f0ec5 | 192.168.65.3 |        3306 | ONLINE       |

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

mysql> show global status like 'group_replication_primary_member';

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

| Variable_name                    | Value                                |

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

| group_replication_primary_member | 82dfcffa-a939-11e9-bb5c-000c29f8b2a5 |

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

 

16.但主修改为多主模式

多主模式如何配置呢,其实跟 单主模式的流程一模一样,只需要修改单主模式参数,把 group_replication_single_primary_mode 参数设置成关闭状态即可,然后按照单主模式的一直执行就可以了。

3个服务器依次执行:

mysql> stop group_replication;

完成后在依次执行:

mysql> set global group_replication_single_primary_mode = OFF

然后执行:

#master实例 #需要启动 group_replication_bootstrap_group 引导组,启动后需要关闭,防止脑裂

mysql> set global group_replication_bootstrap_group=ON; mysql> CHANGE MASTER TO MASTER_USER='rpl', MASTER_PASSWORD='123' FOR CHANNEL 'group_replication_recovery';

mysql> START GROUP_REPLICATION; mysql> set global group_replication_bootstrap_group=Off;

#其他2个实例执行:

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

mysql> start group_replication;

 

PS:当退出组复制后,无论是 master 还是 slave 都会变成只读模式,这里要特别注意!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ty_FFTQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值