实验环境
hostname | IP | |
---|---|---|
server1 | 172.25.42.1 | master |
server2 | 172.25.42.2 | slave |
server3 | 172.25.42.3 | slave |
组复制前需要清空mysql环境
server1,server2,server3 同下!!!
systemctl stop mysqld #关闭mysqld
#查看3306端口是否被占用了
netstat -antlupe | grep 3306
#查看UUID
cd /var/lib/mysql
cat auto.cnf
#清空mysql的环境
rm -fr /var/lib/mysql/*
server1配置
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 #关闭binlog校验
log_slave_updates=ON
log_bin=binlogbinlog_format=ROW # 开启行复制
plugin_load_add='group_replication.so'
transaction_write_set_extraction=XXHASH64
group_replication_group_name="b3c2cd76-650c-11ea-b4ca-52540053346f"
group_replication_start_on_boot=off
group_replication_local_address= "172.25.42.1:33061"
group_replication_group_seeds= "172.25.42.1:33061,172.25.42.2:33061,172.25.42.3:33061"
group_replication_bootstrap_group=off
loose-group_replication_ip_whitelist="127.0.0.1,172.25.42.0/24"
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_single_primary_mode=OFF # 开启组复制
systemctl start mysqld
cat /var/log/mysqld.log |grep password #查看mysql初始密码
mysql_secure_installation #对mysql进行安全初始化
mysql -uroot -pDrn+19961126 #登陆数据库
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Drn+19961126'; 配置用户
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='Drn+19961126' FOR CHANNEL 'group_replication_recovery';
mysql> SHOW PLUGINS;
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; #查看组的状态,当前只有一个节点在线
server2配置
#设置mysql的配置文件
vim /etc/my.cnf
server_id=2|3 #server2 为2/ server3 为3
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=ROW
plugin_load_add='group_replication.so'
transaction_write_set_extraction=XXHASH64
group_replication_group_name="f98fbd8c-55dd-11ea-8bee-52540049dbb1"
group_replication_start_on_boot=off
group_replication_local_address= "172.25.42.2:33061" | "172.25.42.3:33061"
group_replication_group_seeds= "172.25.42.1:33061,172.25.42.2:33061,172.25.42.3:33061"
group_replication_bootstrap_group=off
loose-group_replication_ip_whitelist="127.0.0.1,172.25.42.0/24"
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_single_primary_mode=OFF
cat /var/log/mysqld.log |grep password #查看mysql的初始默认密码
mysql_secure_installation #安全初始化
mysql -uroot -pDrn+19961126 #登陆mysql
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Drn+19961126';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
mysql> SET SQL_LOG_BIN=1;
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Drn+19961126' FOR CHANNEL 'group_replication_recovery';
mysql> set global group_replication_allow_local_disjoint_gtids_join=on;
mysql> START GROUP_REPLICATION;
mysql> SELECT * FROM performance_schema.replication_group_members; #查看server2是否上线
server3配置
具体配置过程同server2!!!
测试
一组任意一台server写入数据,组内其他成员可查询到!!
测试图中,server2建表,插入数据,server1和server3都可查询到所插入的表格和表格内的数据!!!