mysql的半同步复制和全同步复制

1.mysql半同步复

在server1和server2上安装半同步复制的插件

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';安装半同步模块

查看server1和server2上的插件

SELECT PLUGIN_NAME, PLUGIN_STATUS设置
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE '%semi%';

在server1和server2上激活插件,开启半同步

SET GLOBAL rpl_semi_sync_master_enabled = 1

查看server1和server2主库的变量的值,可以查看到延迟时间(10000是指10000毫秒)

SHOW VARIABLES LIKE 'rpl_semi_sync%';
show status like '%rpl%'      

在 server2上,关闭从库进行测试

STOP SLAVE IO_THREAD;

server1上

use westos
insert into usertb values ('user4','123');

等待10s,没有接收到slave的ack请求,自动转换为异步复制,需要等待一个节点完成所有的复制
i

nsert into usertb values ('user5','123');(发现特别快,已经变成异步了)
show status like '%rpl%';(发现半同步已经关闭)

server2上开启从库

START SLAVE IO_THREAD;
show processlist;
use westos
select * from usertb;

发现所有的数据都同步了
关闭server2上面的slave,然后在server1上面插入数据
sever1(master)等待10s发现server2(slave)没有发送ACK消息,自动变为异步同步,
然后在server2上把slave上面开启,会把之前的数据读过来

2.mysql的全同步复制(组复制)
在server1上面进行设置

vim /etc/mysql.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=binlog
binlog_format=ROW#组复制依赖基于行的复制格式

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="查出来的uuid"##查看/var/lib/mysql/auto.cnf
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.25.12.1:33061"当前节点的ip
loose-group_replication_group_seeds="172.25.12.1:33061,172.25.12.2:33061,172.25.12.3:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_ip_whitelist="127.0.0.1,172.25.12.0/24"
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_single_primary_mode=OFF#后两行是开启多主模式的参数

 systemctl restart mysqld#重启服务
 mysql -uroot -pWestos+123登录数据库
show databases;查看数据库
SET SQL_LOG_BIN=0;关闭二进制日志
CREATE USER rpl_user@'%' IDENTIFIED BY 'Westos+123';创建用户
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';用户授权
FLUSH PRIVILEGES;刷新用户授权表
SET SQL_LOG_BIN=1;开启二进制日志
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Westos+123' FOR CHANNEL 'group_replication_recovery';配置用户
INSTALL PLUGIN group_replication SONAME 'group_replication.so';安装组复制插件
SET GLOBAL group_replication_bootstrap_group=ON;在第一个节点上要先打开一次
START GROUP_REPLICATION;开启组复制
SET GLOBAL group_replication_bootstrap_group=OFF; 关闭组复制激活
SELECT * FROM performance_schema.replication_group_members;查看组的状态,当前只有一个节点在线
CREATE DATABASE test; 创建库
USE test;进入库
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);创建表
INSERT INTO t1 VALUES (1, 'Harry');插入数据
SELECT * FROM t1;查看数据

在server2,3上重复以上配置即可完成组同步。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值