【总结】mysql半同步

    xiaoxiao2026-04-22  6

    半同步复制解决的问题: 如果做读写分离,master insert进数据,由于其他问题,导致slave复制延迟。 异步模式,master insert进入数据,就返回给业务正常。 半同步模式 , master insert进入数据,slave更新后,返回给master,master才返回给业务正常。 show plugins; 是否有semisync字母 show variables like 'plugin_dir' 查看plugins的路径  进入到mysql的plugin目录,进入mysql提示符 master: install plugin rpl_semi_sync_master soname 'semisync_master.so' set global rpl_semi_sync_master_enabled=on; slave: install plugin rpl_semi_sync_slave soname 'semisync_slave.so' set global rpl_semi_rsync_slave_enabled=on; 在my.cnf加入 : master: rpl_semi_sync_master_enabled=1 slave: rpl_semi_sync_slave_enabled=1 master上有4个参数: rpl_semi_sync_master_enabled=on  开启半同步复制 rpl_semi_sync_master_timeout=10000 该参数默认10000毫秒,10秒。表示如果主库某次事务中的等待时间超过10秒,则降为异步复制模式,不再等待slave从库。 rpl_semi_sync_master_wait_no_slave 表示是否允许master每个事务提交后都要等待slave接受信号,默认为on rpl_semi_sync_master_trace_level=32 调试级别 slave上有2个参数: rpl_semi_sync_slave_enabled=on rpl_semi_sync_slave_trace_level=32  验证半同步数据: master: show variable like '%semi%'; 关注一下几个参数: rpl_semi_sync_master_status 服务器使用半同步模式还是异步模式 rpl_semi_sync_master_clients 多少个从服务器使用了半同步模式 rpl_semi_sync_master_yes_tx 从服务器确认的成功的提交数量 rpl_semi_sync_master_no_tx  从服务器确认的失败提交数量 slave: show variables like '%semi%' rpl_semi_sync_slave_status = on 从服务器是否是半同步复制模式 半同步复制与异步复制的切换 1. stop slave stop slave io_thread; 该操作会将io线程关闭,等待10秒后,如果master未收到slave的接收确认信号,则转换为异步同步 start slave 会转换成半同步模式 !半同步模式和io_thread有关系,和sql_thread没有关系。也就是说,slave接收完二进制日志后会给master一个确认,但不会管relay-log是否执行完成。
    最新回复(0)