复制的架构
MySQL复制解决的基本问题是让一台服务器的数据与其它服务器保持同步,它具有如下的特征:
1)异步:这意味着,在同一时间点上备库的数据可能与主库不一致,并无法保证它们之间的延迟;
2)向后兼容:也就是说,备库的版本可以高于主库的版本,但不能低于主库的版本
下面是MySQL复制的架构图:
大致分为三个步骤:
1)主库所有的数据更改都记录到二进制日志
2)备库通过I/O线程把主库的二进制日志复制到备库的中继日志
3)备库通过SQL线程读取并应用中继日志
上面这种复制架构使得I/O线程和SQL线程可以异步进行,但也限制了复制的过程,其中最重要的一点是在主库上并发 运行的查询在备库上只能串行化执行,因为SQL线程只有一个,这是很多工作负载的性能瓶颈所在。
复制的原理
MySQL复制可分为基于语句的复制和基于行的复制,基于语句的复制(即逻辑复制)是指在备库上把主库执行过的SQL 重新执行一遍,它的优点是比较简单方便,但是性能不是很好,而且复制触发器和存储过程会出现很多问题。基于行的 复制(即物理复制)是指从主库的二进制日志中提取数据改变记录,相对来说,它更高效,但比较复杂。
由于没有哪种方式对所有情况都是完美的,MySQL能够在这两种复制方式间动态的切换,默认情况下使用基于语句的 复制,但如果发现语句无法正确的复制,就切换到基于行的复制。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/MySQL/
时间: 2024-08-11 01:04:27