谈谈MySQL主从复制

谈谈MySQL主从复制

日常企业开发中,业务量的规模都是从小到大,增加到一定数量级后,单一数据库已经无法满足日常的承载压力,导致性能下降。在许多类型的应用中,传统的解决方法都是购买性能更好的机器,简单粗暴的提升硬件配置不是一个有效的解决方案。

今天我们来谈谈另外一种解决方案,就是水平扩展中的复制方法。

1/ 概念

MySQL内建的复制功能是构建大型、高性能应用程序的基础。这类应用使用所谓的“水平扩展”的架构。可以通过为服务器配置一个或多个备库的方式来进行数据同步,将MySQL的数据分布到多个系统上。复制过程中一台主库(Master)服务器可以同步数据到多台从库(Slave)服务器上去。从库也可以配置成另外一台服务器的主库。主库和从库之间可以有多种不同的方式组合。

谈谈MySQL主从复制

2/ 工作原理

主从复制一般可分为同步复制和异步复制,实际使用过程中复制架构大都数为异步复制。复制的基本过程如下图:

谈谈MySQL主从复制

流程说明:

  1. Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

  2. Master接收到来自Slave的IO进程请求后,通过负责复制的IO进程根据请求读取日志信息,返回给Slave的IO进程。

  3. Slave的IO进程接收到信息后,将接收到日志内容依次添加到Slave端的relay-log文件的最末端,并将Master返回的bin-log的文件名和位置记录在master-info文件中,以便下次读取。

  4. Slave的Sql进程检测到relay-log中新增加了内容后,立即解析relay-log的内容并自身执行。

3/ 应用场景

  1. MySQL数据库的实时备份

  2. 数据库的读写分离;

  3. MySQL的HA集群;

4/ 总结

MySQL主从复制在应用中的好处,有以下几点:

  1. 高可用性和故障切换;

  2. 利用从服务器做查询;

  3. 数据安全,从库实时备份数据及数据分布;

  4. 主从分摊负载;

主从复制的不足:如数据丢失、数据同步延迟、扩展性等问题需要解决。

在日常实践中,可能遇到种种问题,官方文档是不错的选择,大家可以在评论中留言讨论实际中使用可能遇到的问题及解决方案。谢谢!!

加入我们

热门文章