Mysql组复制

  • 实验环境
    |主机名(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=ROW

    transaction_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;”改命令后再次执行组复制的命令。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值