企业-Mysql的主从全同步复制-组复制

全同步复制(Fully synchronous replication)
组复制分单主模式和多主模式
主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。

server1:master
server2 & server3:slave

server1和server2:恢复mysql刚安装好的环境

systemctl stop mysqld	
cd /var/lib/mysql
rm -rf  *			删掉之前的数据

在这里插入图片描述

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
loose-group_replication_group_name="85e55fd8-de73-11e9-916d-52540077b399"	复制之前无效的uuid,三个节点都用这个,但三个节点的uuid都和这个不一样
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.25.38.1:33061"			本机ip的端口
loose-group_replication_group_seeds= "172.25.38.1:33061,172.25.38.2:33061,172.25.38.3:33061"
loose-group_replication_bootstrap_group=off		插件是否自动引导,这个选项一般都要off掉,只需要由发起组复制的节点开启,并只启动一次,如果是on,下次再启动时,会生成一个同名的组,可能会发生脑裂
loose-group_replication_ip_whitelist="127.0.0.1,172.25.38.0/24"		白名单
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_single_primary_mode=OFF

在这里插入图片描述

systemctl start mysqld
grep password /var/log/mysqld.log
mysql -uroot -p	
alter user root@localhost identified by 'Redhat_123';	安全初始化

在这里插入图片描述
在这里插入图片描述
server1:主节点设置

SET SQL_LOG_BIN=0;					关闭二进制日志
CREATE USER rpl_user@'%' IDENTIFIED BY 'Redhat_123';	创建用户
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';			用户授权
FLUSH PRIVILEGES;					刷新用户授权表
SET SQL_LOG_BIN=1;					开启二进制日志
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Redhat_123' FOR CHANNEL 'group_replication_recovery';	配置用户
INSTALL PLUGIN group_replication SONAME 'group_replication.so';	安装插件

show plugins;

SET GLOBAL group_replication_bootstrap_group=ON;		激活全复制,只在server1上做

START GROUP_REPLICATION;								开启组复制

SET GLOBAL group_replication_bootstrap_group=OFF;		关闭全复制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
server2 & server3:从节点设置

SET SQL_LOG_BIN=0;					关闭二进制日志
CREATE USER rpl_user@'%' IDENTIFIED BY 'Redhat_123';	创建用户
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';			用户授权
FLUSH PRIVILEGES;					刷新用户授权表
SET SQL_LOG_BIN=1;					开启二进制日志
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Redhat_123' FOR CHANNEL 'group_replication_recovery';	配置用户
INSTALL PLUGIN group_replication SONAME 'group_replication.so';	安装插件

show plugins;

set global group_replication_allow_local_disjoint_gtids_join=on;server2和server3

START GROUP_REPLICATION;								开启组复制

SET GLOBAL group_replication_bootstrap_group=OFF;		关闭全复制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
server1:

SELECT * FROM performance_schema.replication_group_members;		查看组的信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试:
server1:

CREATE DATABASE test;				创建库
USE test;							进入库
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);	创建表
DESC t1;							查看表
INSERT INTO t1 VALUES (1, 'Luis');	插入数据
SELECT * FROM t1;					查看数据

在这里插入图片描述
server2和server3都开启组复制之后:
server2查看:
在这里插入图片描述
server3上面上传数据:

INSERT INTO t1 VALUES (2, 'westos');
SELECT * FROM t1;

在这里插入图片描述
server2上面查看数据

在这里插入图片描述
结论:在任意一台mysql中插入数据,其他组成员中会立即备份,从而实现了组复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值