Mysql-复制概述(一)

1.复制的概述

Mysql支持两种复制方式,基于行的复制和基于语句的复制。 这两种方式都是经过在主库上记录二进制日志、在备库重放日志的方式来实现异步的数据复制。sql

在同一时间点备库上的数据可能与主库存在不一致,而且没法保证主备之间的延迟。服务器

复制一般不会增长主库的开销,主要是启用二进制日志带来的开销,可是出于备份或及时从崩溃中回复的目的,这点开销是必要的。架构

经过复制能够将读操做指向备库来得到更好读读扩展。写操做通常都是在主库上写。在一主库多备库读架构中,写操做会被执行屡次,这时候整个系统读性能取决于写入最慢读那部分。并发

常见读复制方案:负载均衡

  • 主 -备 -备:一个备库从主库copy数据,其他读备库从备库中copy数据。
  • 主- 备 :全部读备库从主库中copy数据。

2.复制解决读问题

  • 数据分布:将数据分布在不一样读数据中心中。
  • 负载均衡:经过Mysql复制能够将读操做分布到多个服务器上,实现对密集型应用对优化,而且实现很方便,经过简单对代码修改就能实现基本对负载均衡。
  • 备份:复制是备份对补充,但复制不是备份也不能取消备份。
  • 高可用性和故障切换:避免单点失败,设计良好但故障切换
  • MySql 升级测试:保证读写的按预期实现。

3.复制如何工做

  • 3.1 在主库上把数据更改记录到二进制日志(Binary Log)中。
  • 3.2 备库将主库的日志复制到本身的中继日志(Relay Log)中。
  • 3.3 备库读取中继日志的事件,将其重放到备库数据之上。

这种复制架构实现了获取事件和重放事件的解耦,容许这两个过程异步进行。可是也限制了复制过程,最重要的就是主库上并发运行的查询在备库上只能串行化执行。由于只有一个SQL线程来重放中继日志中的事件。异步

相关文章
相关标签/搜索