高性能MySQL:基于语句的复制

作者:港云互联 时间:2019-12-09

复制的原理



        我们已经介绍了复制的一些基本概念, 接下来要更深人地了解复制。让我们看看复制究竟是如何工作的,有哪些优点和弱点,最后介绍一些更高级的复制配置选项。



基于语句的复制



        在MySQL 5.0 及之前的版本中只支持基于语句的复制( 也称为逻辑复制),这在数据库领域是很少见的。基于语句的复制模式下,主库会记录那些造成数据更改的查询,当备库读取并重放这些事件时,实际上只是把主库上执行过的SQL再执行遍。这种方式既有好处,也有缺点。



        最明显的好处是实现相当简单。理论上讲,简单地记录和执行这些语句,能够让主备保持同步。另一个好处是二进制日志里的事件更加紧凑,所以相对而言,基于语句的模式不会使用太多带宽。一条更新好几兆数据的语句在二进制日志里可能只占几十个字节。另外mysqlbinlog工具(本章多处会提到)是使用基于语句的日志的最佳工具。

高性能MySQL:基于语句的复制


        但事实上基于语句的方式可能并不如其看起来那么便利。因为主库上的数据更新除了执行的语句外,可能还依赖于其他因素。例如,同一条SQL在主库和备库上执行的时间可能稍微或很不相同,因此在传输的二进制日志中,除了查询语句,还包括了一些元数据信息,如当前的时间戳。即便如此,还存在着一些无法被正确复制的SQL.例如,使用CURRENT USER() 函数的语句。存储过程和触发器在使用基于语句的复制模式时也可能存在问题。



        另外一个问题是更新必须是串行的。这需要更多的锁有时候要特别关注这一点。另外不是所有的存储引擎都支持这种复制模式。尽管这些存储引擎是包括在MySQL 5.5及之前版本中发行的。



        可以在MySOL手册与复制相关的章节中找到基于语句的复制存在的限制的完整列表。


新人注册,即送价值满880元现金劵

立即注册>>
客服 电话 反馈 活动 回顶部

服务热线

+852-5764-9835

1对1贴心服务,7X24小时热线