复制解决的问题
- 数据分布
不同的地理位置来分布数据备份,例如不同的数据中心。 - 负载均衡
对于读密集型应用,可以将读操作分布到多个服务器上,实现读写分离,提高并发读取能力。 - 备份
对于备份来说,复制是一项很有意义的技术补充,但复制既不是备份也不能够取代备份。 - 高可用和故障切换
避免单节点故障,设计良好的故障切换系统可以显著缩短宕机时间,提高可用性。 - MySQL版本升级
总结:综上几个能力概述,MySQL内建的复制功能是构建基于MySQL的大规模、高性能应用的基础,这类应用使用“水平扩展”架构。我们通过为服务器配置一个或者多个备库的方式来进行数据同步,有利于构建高性能应用,同时复制也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。。
复制方式
MySQL支持两种复制方式:基于行的复制和基于语句的复制。复制原理,都是通过在主库上纪律二进制日志、在备库重放日志的方式来实现异步的数据复制(不可避免会存在延时及数据不一致问题)。
复制如何工作
三步骤战略:
- 在主库上把数据变更记(日志事件)录到二进制日志(Binary Log)中。
- 备库将主库上的日志复制到自己的中继日志(Relay Log)中。
- 备库读取中继日志中的事件,将其重放的备库数据中。
看起来是不是很简单?但要记住没有银弹,实际每一步实现都有很多要解决的问题,懵逼的时候回来看看这三步