mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
#重启I/O线程半同步才会生效
复制代码
测试:
在 MySQL 中,如果主库在等候从库确认信息过程中超时,会切换回异步复制模式继续处理客户端请求,此时大概出现主从数据不一致情况。当从库出现故障时,主库也会继续处理请求且不等候从库确认信息,从库规复后会主动从主库同步数据以保持一致。如果所有从设备都关闭了半同步功能,主设备会继续正常写入数据且不会宕机,备份设备重新启动后会读取从主设备复制的数据包罗之前未读取部分,因为主设备会继续记载所有事件且从设备从主设备二进制日志中复制。当从设备都关闭半同步功能时,主设备不会一直处于等候状态直到收到 ACK 后才继续读取写入数据,在 MySQL 的半同步复制模式下,主库在事件提交时会等候至少一个从库的 ACK 消息后才认为事件提交乐成,但如果所有从库都关闭半同步功能,主库会主动切换回异步复制模式,在异步复制模式下,主库在事件提交后不会等候从库确认,而是立刻返回给客户端事件提交乐成的响应,然后继续处理后续读写请求,所以从设备都关闭半同步功能后,主设备会按照异步复制的方式工作。
四、MySQL高可用之组复制
MySQL 组复制是一种高可用、高可靠的数据库复制技能。其工作原理是多个 MySQL 服务器组成一个复制组,组内成员通过分布式的事件机制和通信协议实现数据的同步和一致性。事件在组内被广播,各成员根据一致性协议举行验证和实行,确保数据在组内的一致性。当有成员发生故障时,组内其他成员可以主动检测并举行故障规复,包管数据库服务的持续可用。同时,新成员可以动态参加组,实现灵活的扩展和高可用性部署。
配置: