Mysql主从复制原理

本文总结自网上关于Mysql复制原理的一些文章。
----------------------------------------------------------
1、Mysql复制是一个异步的复制,从master instance到slave instance,实现整个复制操作主要使用3个进程完成。其中2个进程是Slave的Sql进程和IO进程,另一个进程是Master的IO进程。要实施复制,首先必须打开Master端的binary log,因为整个复制实际上就是Slave从Master端获取日志然后再在自己实例上完全顺序执行日志中所记录的各种操作。
2、基本过程:
(1)Slave上的IO进程连接到Master,请求指定日志文件的指定位置(或从最开始的日志)之后的日志内容。
(2)Master接收到Slave的IO请求后,将负责复制的IO进程根据请求读取指定日志信息,返回给Slave的IO进程。
(3)Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到master的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够告诉master,需要从哪个文件的哪个位置开始往后的内容日志。
(4)Slave的Sql进程检测到relay-log中新增加了内容后,马上会解析relay-log的内容并自身执行在master端真实执行过的那些可执行内容。
3、Mysql在从master端获取bin-log之后,需要接着解析日志内容,然后再自身执行。如果Slave压力较大时,这个过程可能时间比较长。后面的版本将Slave端的复制改为2个进程来完成。这样既提高了性能,又缩短了异步延时时间。但同样存在Slave数据延时和数据丢失的可能性,只能用mysql cluster解决。

附一篇网络上的文章:
http://dinglin.iteye.com/blog/1266194 Mysql主从同步延时多久?

猜你喜欢

转载自shensy.iteye.com/blog/1628916