MySQL主从复制的作用?

  • 复制的目的让一台服务器的数据与其他服务器保持同步,一台主库的数据可以同步到多台备库上,备库本身也可以配置为另一台服务器的主库。主库备库之间可以用多种不同的组合方式。

MySQL支持的复制方式有两种:

(1)基于行的复制。MySQL5.1版本才加入进来。这种方式会将实际数据记录在二进制日志中,最大的好处是可以正确地复制每一行。一些语句可以被更加有效地复制。这种模式在备库上的开销会小很多,更加高效。因为每一行的数据都会被记录到二进制日志中,使得二进制日志事件相当庞大,而且会给主库上记录日志和复制增加额外的复制,更慢的日志记录会降低并发度。

(2)基于语句的复制。称为逻辑复制,从MySQL3.23版本开始就存在。主库会记录那些造成数据更改的查询,当备库读取并重放这些事件的时候,实际上只是把执行过的SQL再执行一遍。优点是实现相简单,不会使用太多带宽,因为二进制日志的事件更加紧凑。但可能会存在一些无法被正确复制的SQL,还有就是更新必须是串行的,意味着需要更多的锁。

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

相同点

  • 两种复制方式都是通过在主库上面记录二进制日志,在备库上面重放日志的方式实现异步的数据复制。所以,同一时刻备库的数据可能会与主库不一致的,并且无法保证主从之间的延迟。
  • MySQL的复制大部分是向后兼容,新版本的服务器可以作为老版本服务器的备库,但是老版本不能作为新版本的备库。原因是老版本的服务器可能没办法解析新版本服务器用的新特性或语法,另外所使用的二进制文件格式也可能不同。

复制解决的问题:数据的分布、负载均衡、备份、高可用和故障切换、MySQL升级测试。

欢迎批评指正,提出问题,谢谢!
原文地址:https://www.cnblogs.com/xxeleanor/p/14957058.html