1.安装半同步插件
mysql5.7 gz解压后在plugin目录下已经存在 半同步的so文件了
/mysql/lib/plugin目录下
主库安装为 semisync_master.so
从库安装为 semisync_slave.so
进入mysql 客户端,
在主库上执行sql
install plugin rpl_semi_sync_master soname 'semisync_master.so';
set global rpl_semi_sync_master_enabled=ON;
从库上执行:
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_slave_enabled=ON;
注意:初次加载插件后,MySQL会将该插件记录到系统表mysql.plugin中,下次启动时系统会自动加载该插件。
检查:select * from mysql.plugin;
检查:
select @@have_dynamic_loading
2.配置my.cnf
主从库都进行配置:
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
主库配置:
rpl_semi_sync_master_enabled=ON:表示在master上已经开启半同步复制模式。
rpl_semi_sync_master_timeout=10000:该参数默认为10000毫秒,即10秒,可以调整,表示如果主库在某次事务中等待事件超过10秒,则降级为异步复制模式,不再等待slave,如果master探测到slave恢复,则会自动回到半同步模式。
rel_semi_synv_master_wait_no_slave:表示是否允许master每个事务提交后都要等待slave的确认信号,默认是ON,即每一个事务都会等待,如果是OFF,则slave追赶上之后,也不会回到半同步模式。
rlp_semi_sync_master_trace_level=32:表示开启半同步复制模式时的调试级别,默认是32。
从库配置:
pl_semi_sync_slave_enabled=ON:表示在slave上开启半同步复制模式。
rlp_semi_sync_slave_trace_level=32:表示开启半同步复制模式时的调试级别,默认是32。
3.在主从库上开启半同步复制
主:
mysql>set global rpl_semi_sync_master_enabled=1;
mysql>set global rpl_semi_sync_master_timeout=30000;
从:
mysql>set global rpl_semi_sync_slave_enabled=1;
注意:如果之前配置的是异步复制,在这里要重启一下从库的IO线程,如果是全新的半同步则不用重启.
重启命令是:mysql>stop slave io_thread;start slave io_thread;
4.在主库上查看半同步状态
mysql>show status like '%semi_sync';
在输出信息中,我们重点关注三个参数:
rpl_semi_sync_master_status OFF/ON #ON表示半同步复制打开,OFF表示关闭
rpl_semi_sync_master_yes_tx [number] #这个数字表示主库当前有几个事务说通过半同步复制到从库的
rpl_semi_sync_master_no_tx [number] #表示有几个事务不是通过半同步复制到从库的