MySQL主从复制原理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从复制原理相关的知识,希望对你有一定的参考价值。
mysql的 主从是一个异步的复制过程,实际上就是一个从Master端把数据复制到Slave端的一个过程。在 Master 与 Slave 之间要实现整个复制过程主要由三个线程来完成,其中两个线程(SQL线程和I/O线程)在 Slave 端,另外一个线程(I/O线程)在 Master 端。
要想实现 MySQL 的 主从复制,必须要先打开 Master 端的Binlog功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作的一个过程。打开 MySQL 的 Binlog 方法就是在 my.cnf 配置文件中的 [mysqld]下面增加 “log-bin” 参数项。
MySQL 复制的基本过程如下:
1. 当Master和Slave建立连接后,首先,由Slave 上面的I/O线程通过master-info文件中的账号及密码来连接上 Master,连接完成后请求Master中日志文件的指定位置点及日志内容。
2. Master 接收到来自 Slave 的 I/O 线程的请求后,通过负责复制的 I/O 线程根据Slave端的请求信息来读取指定日志指定位置点之后的日志信息,然后返回给 Slave 端的 I/O 线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在 Master 端的 Binlog文件中的名字及Binlog的位置点。
3. Slave 的 I/O 线程接收到信息后,将接收到的日志内容依次写入到 Slave 端的Relay Log(中继日志)文件的最末端,并将读取到的binlog的文件名和位置记录到master- info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个binlog的哪个位置点之后的日志内容,请发给我”。
4. Slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析执行的 Query 语句,并在自身执行这些 Query。这样,实际上就是在 Master 端和 Slave 端执行了同样的 Query,所以两端的数据是完全一样的。
本文出自 “12206254” 博客,转载请与作者联系!
以上是关于MySQL主从复制原理的主要内容,如果未能解决你的问题,请参考以下文章