一、分布在三个节点配置hosts
vim /etc/hosts
172.17.16.2 mgr1
172.17.16.3 mgr2
172.17.16.4 mgr3
二、启动MySQL数据库
nohup /apps/svr/mysql57/bin/mysqld_safe --defaults-file=/apps/conf/mysql/mysql57_3306.cnf --user=apps &
三、3.登录MySQL
mysql -uroot -p
四、在每个节点创建复制账号
grant replication slave on . to 'repl'@'172.17.16.%' identified by 'repl123';
五、安装mgr插件,通过MySQL的插件加载命令加载Group Replication插件。
?install
install plugin group_replication SONAME 'group_replication.so';
show plugins;
六、配置参数(mysql57_3306.cnf)
1.启用Binlog和Relaylog功能
需要设置以下以参数:
server_id=1
log_bin=binlog
log_slave_updates=on (MySQL5.6要打开GTID,一定要打开log_slave_updates=on,MySQL5.7没这个限制)
relay_log=relay-log
read_only=off
2.开启GTID功能
Group Replication要求必须使用GTID功能
gtid_mode=on
enforce_gtid_consistency=on
3.设置Row格式的Binlog
Group Replication只支持Row格式的Binlog
binlog_format=ROW
4.禁用binlog_checksum(必须禁用,mysql8.0也不支持)
Group Replication目前(5.7.17) 还不支持带checksum的Binlog Event.
binlog_checksum=NONE
5.使用系统表来存储Slave的信息
Group Replication要使用到多源复制的功能,多源复制要求必须将Slave通道(Channel)的状态信息存储到系统表中
master_info_repository=TABLE
relay_log_info_repository=TBABLE
6.开并行复制
set global slave_pallel_type='LOGICAL_CLOCK';
set global slave_pallel_workers=2; #线程数据
set global slave_preserve_commit_order=ON;
7.MGR参数
vim mysql57_3306.cnf
Group replication core parameter
binlog_checksum=NONE
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name='fc4d7cf0-3f75-11eb-9824-000c29540116'
loose-group_replication_local_address='192.0.2.161:13066'
loose-group_replication_group_seeds='192.0.2.161:13066,192.0.2.163:13066,192.0.2.165:13066'
loose-group_replication_start_on_boot=off
loose-group_replication_bootstrap_group= off
loose-group_replication_enforce_update_everywhere_checks=true
loose-group_replication_single_primary_mode=off
loose-group_replication_ip_whitelist = '192.0.2.0/24'
select uuid();
uuidgen
7.启动第一个节点,配置同步通道
reset master; #如果不重置,后面两个节点启动会报错
change master to master_user='repl',master_password='repl123'
for channel 'group_replication_reovery';
8.第一个节点,组初始化
show vriables like '%boot%';
set global group_group_replication_bootstrap_group=on;
9.第一个节点,通过下面的命令启用Group Replication插件。
start group_replication;
use performane_schema;
select * from replication_group_members;
10.第一个节点,关闭初始化
set global group_group_replication_bootstrap_group=off;
11.启第二个节点,配置同步通道
reset master; #如果不重置,启动会报错
change master to master_user='repl',master_password='repl123'
for channel 'group_replication_reovery';
12.第二个节点,启动组复制
set group_replication_allow_local_disjoint_gtids_join=on; #如果版本是5.7.17-5.7.21没有开启动会报错。
start group_replication;
select * from performane_schema.replication_group_members;
13.启第三个节点,配置同步通道
reset master; #如果不重置,启动会报错
change master to master_user='repl',master_password='repl123'
for channel 'group_replication_reovery';
14.第三个节点,启动组复制
set group_replication_allow_local_disjoint_gtids_join=on; #如果版本是5.7.17-5.7.21没有开启动会报错。
start group_replication;
select * from performane_schema.replication_group_members;
15.测试
1)在第一个节点操作
create database yunbee;
use yunbee;
create table t1(id int auto_increment primary key,name varchar(10));
insert into t1(name) values('A'),('B'),('C');
select * from t1;
show variables like '%auto%';
2)在第二个节点操作
insert into t1(name) values('D');
select * from t1;
show variables like '%auto%';
2)在第三个节点操作
insert into t1(name) values('E');
select * from t1;
show variables like '%auto%';