数据库数据复制机制

来源:互联网 发布:穿越火线手游高跳软件 编辑:程序博客网 时间:2024/05/14 03:29

在master-slave数据库集群模式下,数据复制机制有三种:同步复制模式,异步复制模式,半同步复制模式。


同步复制模式:一个cluster下,数据更新要么同时生效于master和所有slave,要么同时不生效,达到一致结果后通知application。这种模式具有强一致性,可通过诸如“两阶段提交协议”等机制来保证,但性能上开销较大,适合一致性要求很高的场景。


异步复制模式:当application向master发起数据更新时,master先提交事务,返回application操作成功,然后再异步将数据复制到其它slave上。这种模式性能最优,但存在数据一致性的隐患,当master提交事务,未将数据同步到slave时crash了,那么这段期间产生的数据更新可能会丢失。适用于性能要求较高,一致性要求不那么严格的场景。

半同步复制模式:当application向master发起数据更新时,master提交事务,同时仅需向一台slave发起数据同步,slave确认后,master告知application操作成功。slave做确认时,不需要进行事务提交操作,只需要记录中继日志(relay log),这样性能开销很小。后续master再通过异步方式更新整个cluster的数据。半同步复制模式应用于mysql,是一种比较优雅的数据同步模式,不仅有较好的性能,而且在master crush时,还可以通过slave的relay log达到数据恢复。当支持半同步复制模式的那台slave failover时,master还可以自动切换成异步复制模式,待slave恢复后,再切回半同步复制模式。