主从复制基本原理
1、MySQL将数据变化记录到二进制日志中;
2、Slave 将MySQL的二进制日志写到 Slave 的中继日志中;
3、Slave 读取中继日志,将更新的内容解析成具体操作,反应到自身(Slave)的数据库。
主从复制原理图如下:

主从复制详细过程:
1、Slave 端的 I/O 线程连接上 Master,向 Master 请求指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
2、Master 接收到来自 Slave 的 I/O线程的请求后,负责复制的 I/O 线程根据 Slave 的请求信息,读取相应日志内容,返回给 Slave 的 I/O 线程,并将本次请求读取的 bin-log 文件名及位置一起返回给 Slave 端;
3、Slave 端的 I/O 线程接收到信息后,将接收到的日志内容依次添加到 Slave 端的 relay-log(中继日志) 文件的最末端,并将读取到的 Master 端的 bin-log 的文件名和位置记录到 master-info 文件中,以便之后清楚告诉 Master 端要将 bin-log文件 发送起始位置是从哪里开始;
4、Slave 端的 SQL线程检测到 relay-log (中继日志)中新增加了内容后,会马上解析 relay-log 的内容成为在 Master 端真实执行时候的那些可执行的内容,并在本地执行。
本文介绍了MySQL主从复制的基本原理和详细过程。主从复制包括MySQL将数据变化记录到二进制日志,Slave端读取并应用这些日志到自身数据库。详细过程涉及Slave的I/O线程连接Master获取日志,再由SQL线程解析并执行在本地。
561





