一、MySQL 主从复制简介
(1) MySQL 主从复制通过逻辑的 binlog 日志复制到要同步的服务器本地,然后由本地的线程读取日志里面的 SQL 语句,重新应用到 MySQL 数据库中
(2) 在复制过程中,一台服务器充当主服务器,接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器,接收来自主服务器的 binlog 日志并解析出 SQL 语句更新到从服务器
(3) MySQL 主从复制可以有多种架构,有的既能充当从服务器又能充当主服务器,具体如图
二、MySQL 主从复制的应用场景
(1) 从服务器作为主服务器的实时数据备份
(2) 主服务器实现读写分离,从服务器实现负载均衡
(3) 把多个从服务器根据业务重要性进行拆分访问
三、MySQL 主从复制原理
(1) 在 Slave 服务器上执行 start slave 命令开启主从复制开关,开始进行主从复制
(2) 此时,Slave 服务器的 I/O 线程会去请求连接 Master,并请求 binlog 日志文件
(3) Master 服务器接收到请求,负责复制的 I/O 线程会根据请求去读取 binlog 日志文件然后返回给 Slave 服务器的 I/O 线程
(4) Slave 服务器的 I/O 线程接收到 binlog 日志内容,会将 binlog 日志内容写到 Slave 服务器自身的中继日志文件的最末端
(5) Slave 服务器的 SQL 线程会实时监控中继日志文件,然后及时地把中继日志文件中的内容解析成 SQL 语句,并执行应用这些 SQL 语句,完成主从复制
(6) 注意:在主从复制中,主库有一个 I/O 线程,从库有两个线程,即 I/O 和 SQL 线程