MySQL Replication--半同步复制(Semi-Sync Replication)
半同步复制 默认配置下,MYSQL主从库通过binlog来保持一致,主库事务提交后,将binlog日志写入磁盘,然后返回给用户,备库通过拉取主库的binlog来同步主库的操作,无法保证主备节点数据实时一致,只能保证最终一致,因此属于异步复制。 为保证在主备切换时,主备节点数据完全一致,MYSQL提供了半同步复制,其实现原理为:事务在主库上执行完成,生成BINLOG并推送给备库,等待备库的影响消息,备库将接受到的binlog(file,pos)信息返回给主库,主库接收到背库的确认消息后,在返回给用户,事务提交完成。 半同步复制只保证主库和备库的binlog同步,但主库无需等待备库应用这些binglog就会返回提交结果,从库异步地应用这些binlog,因此主库和从库的数据不是实时同步的,因此称为“半同步”。 半同步复制参数rpl_semi_sync_master_timeout用于控制主库等待备库响应的消息时间(单位ms),如果超过该阀值,则认为备库存在问题,将半同步复制修改为异步复制,避免主库的执行事务长时间等待。参数rpl_semi_sync_master_timeout的默认值为50ms。 rpl_semi_sync_master_enabled:表示主上是否开启半同步复制功能,可以动态修改。可选值:ON\OFF rpl_semi_sync_slave_enabled