MySQL系列~增强半同步复制
一 简介: 无损复制
二 对比
after_commit 5.6 (有损复制)
1 客户端提交事务
2 存储层提交事务
3 sync binlog->slave
4 收到ack-信息
5 客户端返回-commitOK
after_sync 5.7(无损复制)
1 客户端提交事务
2 sync binlog->slave
3 收到ack-信息(独立ack应答线程)
4 存储引擎层提交事务
5 客户端返回-commitOK
三 安装
install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; 全部
install plugin rpl_semi_sync_master soname 'semisync_master.so';
set global rpl_semi_sync_master_enabled= 1; 主
set global rpl_semi_sync_master_enabled= 1; stop slave ;start slave; 从 日志关键字 过滤Start semi-sync replication
配置文件-通用
loose_rpl_semi_sync_master_wait_point = AFTER_SYNC
loose_rpl_semi_sync_slave_enabled = ON
无需 在配置文件配置plugin_load-当插件安装完成后,会自动更新插件表,重启自动加载
四 重要参数 默认不用调整
rpl_semi_sync_master_wait_for_slave_count=1(默认) 至少有一个slave应当
rpl_semi_sync_master_wait_point=after_sync(默认) sync模式
rpl_semi_sync_master_timeout=10000(默认10s)超过10s转化为异步复制
五 监控
语句 show global status like '%semi%';
主库
Rpl_semi_sync_master_status =ON
从库
Rpl_semi_sync_slave_status =ON 监控从库的半同步复制状态
Rpl_semi_sync_master_no_tx=num 异步复制下的事务个数,转化为异步复制后会增长
当从库io_thread复制异常时,半同步复制也会异常,所以从库报警也会发生