mariadb之半同步

补充说明,做的时候楼主没看清楚版本号,10.2以前是my.conf 以后是my.conf.d/server.conf 楼主本人是写到了server这个文件里,请大家注意

可能不显示模式的原因可能就是写错配置文件了,等我明天重新做一遍
看看有没有那个模式

今天做一个mariadb的半同步实验
首先这个实验是基于异步同步来做的,需要吧异步同步给做完才能做半同步
首先我们要在数据库里安装两个插件

install plugin rpl_semi_sync_master soname 'semisync_master.so';
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

在这里插入图片描述
这两个插件在主库和从库都要安装
必须要安装
然后在主库上,编辑配置文件vim /etc/my.cnf.d/server.cnf
然后里面写入

server_id=1
log_bin=log-bin
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 2000

在这里插入图片描述
写完之后保存退出,这个时候因为修改配置文件了,所以我们要重启
mariadb这个服务
systemctl restart mariadb
这一步做完之后,可以用

show global variables like '%semi%';

在这里插入图片描述
这个时候我们看到状态是关闭的
然后可以用这两个命令去开启

set global rpl_semi_sync_master_enabled = 1;

set global rpl_semi_sync_master_timeout = 2000;

这个时候就有人问了,这两个命令跟刚刚写入配置文件的那两个不都一样吗?
是的,确实一样,但效果确实不一样的,写入配置文件的是永久生效,
set的是临时生效,但是,这两种还是都操作一下,比较保险

这时候再查看

show global variables like '%semi%';

在这里插入图片描述

这个时候就会看到,off变成on了
然后再用

show status like '%semi%';

查看状态
在这里插入图片描述
从图中看到,主库是开启的状态,但是从库是未开启状态,显示为off

现在开始配置从库
在从库里操作流程也是一样的
先安装两个插件

install plugin rpl_semi_sync_master soname 'semisync_master.so';
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

安装完之后编辑配置文件
在里面写入

server_id=2
relay_log=relay-log
rpl_semi_sync_slave_enabled = 1

写完之后,保存退出并重启mariadb这个服务
systemctl restart mariadb

这时候查看状态

show status like '%semi%';

在这里插入图片描述
看到off就是未开启状态
我们需要执行命令给他开启

set global rpl_semi_sync_slave_enabled = 1;

show global variables like ‘%semi_sync_slave%’;
在这里插入图片描述
可以看到状态是on
这个时候我们要在从库里重启IO
若从库在运行不重启IO 从库还是传统异步

stop slave;
start slave;

半同步复制中的状态,在master库是off,若是半同步的slave库则为on。而Rpl_semi_sync_master_status刚好相反。

使用show global status like '%semi%';来查看状态(当然这个是在主库上查询)

在这里插入图片描述
发现Rpl_semi_sync_master_clients 变成了1 这个1就是从库,与从库关联了

其实做到这里就完成了,但是为了测试,所以吧从库状态给关闭了

set global rpl_semi_sync_slave_enabled = 0 ;

在这里插入图片描述
我们可以看到从库现在状态是关闭的
然后我们在主库上创建表和插入数据

create table aa(id int,name varchar(10));
insert into zyh.aa(id,name) values(1,'zyh');

在这里插入图片描述
然后去从库查看select * from zyh.aa;
发现主库数据同步到从库上,因为我们关闭半同步,从库会自动降级到异步同步上,但数据还是可以同步过来

rpl_semi_sync_master_wait_point:
默认是after_sync模式即事务在同步到binlog后等待半同步复制的确认信息。
但这个
其实做完之后,想要看效果,就看主库的连接数是几还有他的状态 如果是1和on
就是成功了,如果是0和off就是没成功

最后说一个事情,楼主在网上搜索时,都发现查看状态时,都有一个模式显示
而楼主做的时候没有,做的时候一定要注意看下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值