-
实验环境
|主机名(ip)|服务 |
|–|--|
| server1(172.2.42.1) |master (开启节点) |
| server2(172.2.42.2) |master (加入节点) |
| server3(172.2.42.3) |master (加入节点) | -
停止mysqld服务 并删除mysql所有文件后开启mysql
[root@server1 mysql]# systemctl stop mysqld
[root@server1 mysql]# rm -fr *
[root@server1 mysql]# systemctl start mysqld
[root@server1 mysql]# cat auto.cnf ##查找uuid,在之后的配置文件中会用到 -
server1的配置
1.配置文件的内容[root@server1 mysql]# vim /etc/my.cnf
文件编辑内容如下:
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROWtransaction_write_set_extraction=XXHASH64 ##指定server必须为每个事务收集写集合,并使用哈希算法将其编码为散列
loose-group_replication_group_name=“ad9693a1-7179-11e9-bc05-5254007ff442” ##对创建的组命名
loose-group_replication_start_on_boot=off ##不自动启动组复制
loose-group_replication_local_address= “172.25.254.1:24901” ##本地的端口24901实现成员连接
loose-group_replication_group_seeds= “172.25.42.1:24901,172.25.42.2:24901,172.25.42.3:24901”
loose-group_replication_bootstrap_group=off ##是否自动引导组
loose-group_replication_ip_whitelist=“127.0.0.1,172.25.254.0/24”
loose-group_replication_enforce_update_everywhere_checks=ON ##打开检查及其更新
loose-group_replication_single_primary_mode=OFF #设置组自动选择一个server来处理读写工作
2.数据库及其配置
使用初始密码登陆数据库后进行操作
mysql> alter user root@localhost identified by 'Wsp+123ld';##初始化密码
mysql> SET SQL_LOG_BIN=0;##创建用户
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Wsp+123ld';#创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';##给与用户权限
mysql> FLUSH PRIVILEGES;##书信数据
mysql> SET SQL_LOG_BIN=1;##开启日志
mysql> CHANGE MASTER TO MASTER_USER='rpl_user',MASTER_PASSWORD='Wsp+123ld' FOR CHANNEL 'group_replication_recovery';##设置如果要改变master时需要通过该通道group_replication_recovery给其master的用户名和密码
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';##安装组复制插件
mysql> SET GLOBAL group_replication_bootstrap_group=ON;##开启组引导
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;##关闭组引导
mysql> SELECT * FROM performance_schema.replication_group_members;##查看组成员
mysql> CREATE DATABASE test;##创建库test
mysql> USE test;##进入库test
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);##模版
mysql> INSERT INTO t1 VALUES (1,'Luis');##创建用户
mysql> SELECT * FROM t1;##查看t1表
查看组成员:
创建库并添加用户:
- server2配置
1.编辑配置文件
[root@server2 mysql]# scp root@172.25.42.1:/etc/my.cnf /etc/my.cnf##从server1获取配置文件
[root@server2 mysql]# vim /etc/my.cnf##编辑配置文件
修改如下:
将mysql停止并删除/var/lib/mysql下所有文件,然后开启mysql服务。
[root@server2 mysql]# systemctl stop mysqld
[root@server2 mysql]# rm -fr *
[root@server2 mysql]# systemctl start mysqld
2.使用初始密码登陆后对mysql进行修改
mysql> alter user root@localhost identified by 'Wsp+123ld';
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Wsp+123ld';mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;
mysql> CHANGE MASTER TO MASTER_USER='rpl_user',MASTER_PASSWORD='Wsp+123ld' FOR CHANNEL 'group_replication_recovery';
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
mysql> SET GLOBAL group_replication_allow_local_disjoint_gtids_join=on;##该命令兼容组(官方文档中没有,该提示在mysql的日志中存在,当无法开启加入组复制时执行该命令即可)
mysql> START GROUP_REPLICATION;
mysql> SELECT * FROM performance_schema.replication_group_members;
查看祖成员
查看能否查阅到test.t1的信息
- server3配置
1.获取rpm包并安装开启mysql
[root@server3 ~]# scp server1:/root/*.rpm .
[root@server3 ~]# yum install *
[root@server3 ~]# systemctl start mysqld
2.编辑配置文件
[root@server3 mysql]# scp root@172.25.42.1:/etc/my.cnf /etc/my.cnf##从server1获取配置文件
[root@server3 mysql]# vim /etc/my.cnf##编辑配置文件
修改配置文件如下:
3.使用初始密码登陆mysql后对mysql进行配置
mysql> alter user root@localhost identified by 'Wsp+123ld';
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Wsp+123ld';mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;
mysql> CHANGE MASTER TO MASTER_USER='rpl_user',MASTER_PASSWORD='Wsp+123ld' FOR CHANNEL 'group_replication_recovery';
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
mysql> SET GLOBAL group_replication_allow_local_disjoint_gtids_join=on;
mysql> START GROUP_REPLICATION;mysql> SELECT * FROM performance_schema.replication_group_members;
查看组成员
查看能否看到表test.t1
- 在表test1.t1加入新数据然后再server2与server3上进行查看
插入数据:
server2进行查看:
server3进行查看:
若加入组复制出现问题,则将master的数据备份到不同步的slave端,清除slave端master的信息后将备份导入数据库再开启组同步。也可以执行“SET GLOBAL group_replication_allow_local_disjoint_gtids_join=on;”改命令后再次执行组复制的命令。