MySQL 的主从复制

MySQL 集群通常是指 MySQL 的主从复制架构。通常使用 MySQL 主从复制来解决 MySQL 单点故障的问题,其通过逻辑复制的方式把主库的变更同步到从库上,主备之间无法保证严格一致的模式。于是MySQL 的主从复制带来了主从“数据一致性”的问题。

MySQL 的复制分为:全同步复制、异步复制、半同步复制。

全同步复制

当主库执行完一个事务,并且全部的从库都执行完了该事务后,才能返回给客户端。

那么主库完成一个事务的时间就会被拉长,因此全同步复制的性能必然会受到严重的影响。

异步复制

早期的 MySQL 仅支持异步复制。

主库在执行完客户端提交的事务后会立即将结果返回给客户端,而并不关心从库是否已经接收并处理。

这样就会有一个问题,如果主库 crash 了,此时主库上已经提交了的事务可能并没有传到从库上,此时如果强行将从库提升为主库,那么就可能会导致“数据不一致”。

半同步复制

MySQL 5.5 中引入了半同步复制,主库在应答客户端提交的事务前,需要保证至少有一个从库接收并写到 relay log 中。同时,这里只是一个收到的反馈,而不是已经彻底完成并且提交的反馈,如此节省了不少时间。

相对于异步复制,半同步复制提升了数据的安全性,同时它也形成了一定程度上的延迟,这个延迟最少是一个 TCP/IP 往返的时间。因此,半同步复制最好在低延时的网络中使用。

半同步复制通过 rpl_semi_sync_master_wait_point 参数来控制 master 在哪个环节接收 slave ack。

master 接收到 ack 后返回状态给客户端,此参数一共有两个选项 AFTER_SYNC & AFTER_COMMIT。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值