Mysql -- 组复制

一.组复制

复制组能够以一种自动优先选择的单主模式运行,在某个时间只有一个服务器接受更新 。但是对于更高优先级的用户,组能够以多主模式部署,所有的服务器都能够接受更新,即使他们是同时发生的。

组复制中存在着一种内建的组成员关系服务用来保持组的视图一致,并且在任意时间对于组中的所有的服务器都可用。MySQL服务器能够退出或者加入组中,而且视图也会相应的更新。有时服务器可能会意外的退出组(故障),在这种情况下失败检测机制检测这种情况并且告知复制组视图发生了变化,这所有的一切都是自动实现的。

二.操作实验

1.准备三台干净的虚拟机

server1      172.25.55.1
server2      172.25.20.2
server3      172.25.20.3

启动虚拟机 查看日志获取密码 进入mysql 修改密码

 grep password /var/log/mysqld.log   过滤密码
 mysql -p
 alter user root@localhost identified by 'Xiaozhuang+006';  修改密码
 flush privileges;   刷新

这里写图片描述
2.配置文件
server1
vim /etc/my.cnf

server-id=1
log-bin=mysql-bin

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
loose-group_replication_group_name="60904750-447a-11e8-893d-a088b44bd080"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.25.20.1:24901"
loose-group_replication_group_seeds= "172.25.20.1:24901,172.25.20.2:24901,172.25.20.3:24901"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=off
loose-group_replication_enforce_update_everywhere_checks=on

这里写图片描述

/etc/init.d/mysqld restart  重启

这里写图片描述

! ! ! 注意 server2和server3配置与server1一样 只不过在/etc/my.cnf 这个文件要修改本地ip和server-id
这里写图片描述
这里写图片描述

二.数据库操作

server1上


[root@server1 ~]# mysql -p初始化的密码
mysql> SET SQL_LOG_BIN=0;   ##不记录二进制日志
mysql> alter user root@localhost identified by 'Xiaozhuang+006';
mysql> grant replication slave on *.* to repl@'%' identified by 'Xiaozhuang+006';
mysql> flush privileges;
mysql> set sql_log_bin=1;   ##记录二进制文件
mysql> change master to master_user='repl',master_password='Xiaozhuang+006' for channel 'group_replication_recovery';
mysql> install plugin group_replication soname 'group_replication.so';
mysql> set global group_replication_bootstrap_group=ON;
mysql> start group_replication;  #这里会出现错误   stop  之后在做
mysql>set global group_replication_ip_whitelist="172.25.20.0/24,127.0.0.1"
mysql> set global group_replication_bootstrap_group=OFF;
mysql> select * from performance_schema.replication_group_members;

server2上

 mysql -p
mysql> SET SQL_LOG_BIN=0;   ##不记录二进制日志
mysql> alter user root@localhost identified by 'Xiaozhuang+006';
mysql> grant replication slave on *.* to repl@'%' identified by 'Xiaozhuang+006';
mysql> flush privileges;
mysql> set sql_log_bin=1;   ##记录二进制文件
mysql> change master to master_user='repl',master_password='Xiaozhuang+0067' 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;

在server3上

mysql -p
mysql> SET SQL_LOG_BIN=0;   ##不记录二进制日志
mysql> alter user root@localhost identified by 'Xiaozhuang+006';
mysql> grant replication slave on *.* to repl@'%' identified by 'Xiaozhuang+006';
mysql> flush privileges;
mysql> set sql_log_bin=1;   ##记录二进制文件
mysql> change master to master_user='repl',master_password='Xiaozhuang+006' 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;

测试
三台mysql服务器都没有westos数据库在server2上新建一个westos数据库

这里写图片描述
然后同步

这里写图片描述

错误提示

这里写图片描述

mysql> start group_replication;
ERROR 3096 (HY000): The START GROUP_REPLICATION command failed
 as there was an error when initializing the group communication layer.
##错误3096 (HY000):启动GROUP_REPLICATION命令失败,因为在初始化组通信层时出现错误。

解决办法

不需要再麻烦的把数据库卸载重新安装
直接把master和slave  reset重制
然后就再做
还有就是检查/etc/my.cnf 里面文件信息是否真的正确
我就是有好几个错误都坑到那里了

猜你喜欢

转载自blog.csdn.net/hello_xiaozhuang/article/details/81570516