MySQL复制总述

        MySQL的复制功能是大规模、高性能应用的基础,是“水平扩展”的架构。MySQL复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。备库本身也可以配置为其他服务器的主库。

       从技术角度看, MySQL支持2中复制方式:基于行的复制和基于语句的复制。基于行的复制在5.1之后才开始出现。这两种方式都是主库上记录的二进制日志,在备库重放日志的方式来实现异步的数据复制。这就意味着,在同一时间点备库上的数据可能与主库存在不一致,并且无法保证主备之间的延迟。
       各MySQL版本复制是向后兼容的,新版本的服务器可以作为老版本服务器的备库,反过来通常不行。

       复制通常不会增加主库的开销,主要是启用二进制日志带来的开销。备库也会对主库增加一些负载,比如网络I/O。当备库请求从主库读取就得二进制文件时,可能造成较高的I/O开销。如果是一个高吞吐量的主库(5000或更高的TPS)的主库上复制到多个备库,唤醒多个复制现成发送时间的开销将会累加很大。

       通过复制可以将读操作指向备库,来获得更好的读扩展性。而在写操作扩展上,则不合适。因为存在写操作被执行多次的可能性。

       一主多备架构,会造成资源浪费,因为复制了大量不必要的重复数据,这不太经济。规划者要认真评估从中获得的价值。
       复制工作机制如下:
       1.主库把数据更改记录到二进制日志中。
       2.备库将主库上的日志复制到自己的中继日志(RelayLog)中。
       3.备库读取中继日志中的时间,将其重放到备库数据支上。
       
       复制执行中以下几点请牢记:
       1.MySQL是按照失误提交的顺序而非每条语句的执行顺序来记录二进制日志的。
       2.在记录二进制日志之后,主库会通知存储引擎提交事务。
       3.备库由I/O线程、二进制转储线程负责连接主库和读取主库二进制日志。
       4.备库S二进制线程追赶上主库时,会进入睡眠状态,直到主库发信号通知。
       5.要注意的是备库复制复制单线程的,
       
       了解这些基础知识,结合实际需要,设计出的MySQL复制架构会给你带来最大效率。

发布了53 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/bigwood99/article/details/103532002