[MySQL] 复制(1)- 原理和架构

复制的架构

MySQL复制解决的基本问题是让一台服务器的数据与其它服务器保持同步,它具有如下的特征:

1)异步:这意味着,在同一时间点上备库的数据可能与主库不一致,并无法保证它们之间的延迟;

2)向后兼容:也就是说,备库的版本可以高于主库的版本,但不能低于主库的版本

下面是MySQL复制的架构图:


大致分为三个步骤:

1)主库所有的数据更改都记录到二进制日志

2)备库通过I/O线程把主库的二进制日志复制到备库的中继日志

3)备库通过SQL线程读取并应用中继日志

上面这种复制架构使得I/O线程和SQL线程可以异步进行,但也限制了复制的过程,其中最重要的一点是在主库上并发运行的查询在备库上只能串行化执行,因为SQL线程只有一个,这是很多工作负载的性能瓶颈所在。


复制的原理

MySQL复制可分为基于语句的复制和基于行的复制,基于语句的复制(即逻辑复制)是指在备库上把主库执行过的SQL重新执行一遍,它的优点是比较简单方便,但是性能不是很好,而且复制触发器和存储过程会出现很多问题。基于行的复制(即物理复制)是指从主库的二进制日志中提取数据改变记录,相对来说,它更高效,但比较复杂。

由于没有哪种方式对所有情况都是完美的,MySQL能够在这两种复制方式间动态的切换,默认情况下使用基于语句的复制,但如果发现语句无法正确的复制,就切换到基于行的复制。


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值