无损半同步复制下,主从高可用切换后数据一致吗?
摘要
MySQL5.7 默认参数下我们开启了半同步,在一个事务提交(commit) 的过程时,在 MySQL 层的 write binlog 步骤后,Master 节点需要收到至少一个 Slave 节点回复的 ACK (表示收到了binlog )后,才能继续下一个事务;
如果在一定时间内(Timeout)内没有收到 ACK ,则切换为异步复制模式。
这能保证数据不丢失的高可用需求,因为他能保证从库确认到这个事务后,再通知主库提交事务。这种模式下,至少一个从库的日志数据和主库保证同步,从而保证主库挂了后,数据不丢失,因为最新数据的是从库。
欢迎在评论区写下你对这篇文章的看法。