MySQL半同步复制(Semisynchronous Replication)
这篇讲的是MySQL 5.5版本引入的半同步复制机制。文章从一个实际需求出发:在传统的异步复制中,主库提交事务后并不关心从库是否已经接收,这可能导致短暂的数据不一致窗口。半同步复制正是为了解决这个问题。 它的核心在于修改了复制的确认流程。当主库的一个事务提交后,它不会立即返回成功给客户端,而是会等待至少一个从库确认已接收到该事务的二进制日志(并写入中继日志)。这个“至少一个”的保证,有效避免了主库宕机时可能发生的最新数据丢失,相比异步复制提供了更高的一致性保障。 文章也阐明了这种机制的权衡:因为它需要网络往返等待确认,所以会增加写操作的延迟。作者分析了这使得半同步复制特别适合那些对数据一致性要求极高、可以接受一定性能损耗的金融、交易类系统。而对于读多写少、能容忍极小概率数据回滚的场景,传统的异步复制可能仍是更高效的选择。