Mysql主从复制原理与实践

Mysql主从复制原理:

1.Mysql支持单双向、链式级联、异步复制。可以一主一从,也可以一主多从。

2.链式级联中的从是下级从的主。类似A-->B-->C-->D。

3.主从复制配好后,数据库的更新必须在主服务器上进行,以免造成主从冲突。

4.主从服务器架构可实现对用户的请求实现读写分离。从处理用户的select,主处理update,insert,delete等更新。以此保持主从实时同步。

5.可以把从服务器根据业务来拆分。

6.mysql主从复制是异步复制。master与slave之间三个线程参与完成,其中两个线程(IO和SQL)在slave,另一个线程(IO)在master端。

7.首先必须打开master的Binlog(Mysql-bin.xxxxxx)功能,因为整个复制过程实际上就是slave从master端获取Binlog日志,然后在slave自身上以相同的顺序执行binlog日志中所记录的各种操作。


下面简单描述下mysql主从复制过程(Binlog中不包含select内容):

1.slave服务器上执行 start slave 开启主从复制开关。

2.此时。slave服务器的IO线程会通过在master上授权的复制用户请求连接master服务器,并请求从指定的Binlog日志文件的指定位置之后的Binlog的日志内容。

3.master服务器接收到来自slave服务器的IO线程的请求后,master服务器上负责复制的IO线程根据slave服务器的IO线程请求的信息读取指定Binlog日志文件的指定位置之后的Binlog的日志信息,然后返回给slave端的IO线程。返回信息除了日志内容外,还有本次返回的日志内容后在master服务器端的新的Binlog文件名称以及在Binlog中的指定位置。

4.当slave的IO线程收到来自master的IO线程发送的日志内容及日志文件及位置点后,将Binlog日志内容依次写入到slave自身的relaylog(中继日志)文件(mysql-relay-bin.xxxxxx)的最末端,并将新的Binlog文件名和位置记录到master-info文件中,以便下一次读取master的新Binlog日志时能够告诉master需要从新Binlog日志的那个文件哪个位置开始请求新的Binlog日志内容。

5.slave服务器的sql线程会实时的检测本地relay log 中新增加了日志内容,然后把这些内容解析成master曾经执行的sql语句,并在自身slave上按语句的顺序执行sql语句。

6.这样 就可以确保在master和slave执行了同样的sql语句。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。