Mysql的组复制
(一)在server1中配置和测试
配置:
1.在server1和server2中将mysqld关掉,并删除之前的数据文件,保持实验环境纯洁(在删除前查看uuid,此时查看uuid的原因是因为旧的uuid不会产生影响)
在server1上的操作:
[root@server1 mysql]# systemctl stop mysqld
[root@server1 mysql]# cat auto.cnf
[root@server1 mysql]# rm -rf *
2.在server1中编辑mysql配置文件并开启mysqld服务
[root@server1 mysql]# vim /etc/my.cnf
[root@server1 mysql]# systemctl start mysqld
[root@server1 mysql]# systemctl restart mysqld
配置文件中的内容如下:
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=ROW
transaction_write_set_extraction=XXHASH64 ##指示server必须为每个事务收集写集合,并使用XXHASH64哈希算法将其编码为散列
loose-group_replication_group_name="4ba0b05b-72dd-11e9-b543-5254008312d1" ##告知插件,正在加入或创建的组要命名,一般写uuid
loose-group_replication_start_on_boot=off ##指示插件在server启动时不自动启动组复制
loose-group_replication_local_address= "172.25.66.1:24901" ##告诉插件使用IP地址本地主机,端口24601用于接收来自组中其他成员的传入连接
loose-group_replication_group_seeds= "172.25.66.1:24901,172.25.66.2:24901,172.25.66.3:24901"
loose-group_replication_bootstrap_group=off ##配置是否自动引导组
loose-group_replication_ip_whitelist="127.0.0.1,172.25.66.0/24" ##用户白名单
loose-group_replication_enforce_update_everywhere_checks=ON ##多主模式下为多主更新启用或禁用严格一致性检查
loose-group_replication_single_primary_mode=OFF ##设置组自动选择一个server来处理读/写工作
3.在server1上查看密码并修改密码
#过滤初始密码,此处密码在最后面
[root@server1 mysql]# grep password /var/log/mysqld.log
[root@server1 mysql]# mysql -p
mysql> alter user root@localhost identified by 'Bgg+2019';
4.在server1上启动组复制
mysql> show databases;
mysql> SET SQL_LOG_BIN=0; #禁用二进制日至
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Bgg+2019'; #创建用户
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='Bgg+2019' FOR CHANNEL 'group_replication_recovery'; #当配置了用户,使用CHANGE MASTER TO语句将服务器为下一次需要从其他成员恢复状态时使SET SQL_LOG_BIN=0;用group_replication_recovery复制通道的给定凭证,发出以下命令,用创建用户时直接使用的值替换rpl_user和密码
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so'; #安装组插件
mysql> SHOW PLUGINS;
mysql> SET GLOBAL group_replication_bootstrap_group=ON; #master上要先打开,等打开组复制之后再开启(slave上不用进行)
mysql> START GROUP_REPLICATION; #打开组复制
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
5.在server1上创建库后创建表,并插入数据
mysql> CREATE DATABASE test;
mysql> USE test;
mysql> C