补充说明,做的时候楼主没看清楚版本号,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就是没成功
最后说一个事情,楼主在网上搜索时,都发现查看状态时,都有一个模式显示
而楼主做的时候没有,做的时候一定要注意看下