mysql异步复制与半同步复制的架构原理

迷徒少年 2017-12-18 20:37:14

mysql异步复制与半同步复制的架构原理_第1张图片

在mysql5.5版本之前,复制都是异步复制,(关于异步复制的原理请大家自己参照下面的半同步复制,两者只是略有不同)。 该复制经常遇到的问题是:因为binlog日志是推送的,所有主库和从库之间存在一定的延迟。 这样就会造成很多问题,比如主库因为磁盘损坏等故障突然崩掉,导致binlog日志不存在,同时因为延迟binlog还没有推送到从库,从库也就会丢失很多被主库提交的事物,从而造成主从不一致。

解决如上的问题,mysql5.5版本之后引入了半同步复制机制。

异步复制:主库写入一个事务commit提交并执行完之后,,将日志记录到binlog,将结果反馈给客户端,最后将日志传输到从库。

mysql异步复制与半同步复制的架构原理_第2张图片

半同步问题:主库写入一个事务commit提交并执行完之后,并不直接将请求反馈给前端应用用户,而是等待从库也接收到binlog日志并成功写入中继日志后,主库才返回commit操作成功给客户端。半同步复制保障了事物执行后,至少有两份日志记录,一份在主库的binlog上 ,另一份至少在从库的中继日志Relay log上,这样就极大的保证了数据的一致性。

mysql异步复制与半同步复制的架构原理_第3张图片

你可能感兴趣的:(mysql异步复制与半同步复制的架构原理)