mysql主从复制概述

如果mysql优化不能明显改善压力,可以使用高可用、主从复制读写分离、拆分库、查分表等方法进行优化。

主从复制的目的:实现数据库冗余备份,将master数据库定时同步至slave库中,一旦master数据库宕机,可以将web应用数据库配置快速切换至slave数据库,确保web应用有较高的可用率。

主从复制集群至少需要2台数据库服务器

主从复制是一个异步复制的过程

需要在master开启bin-log日志功能,用于记录在master库中执行的增、删、改、更新操作的sql语句。

master需要开启I/O线程,slave需要开启I/O线程和SQL线程,具体原理如下:

1、在slave主机上执行:slave start

    I/O线程会通过master主机数据库的授权用户连接至master,并请求master从指定的文件和位置之后发送bin-log日志内容;

2、master接收到发送bin-log日志请求后,master I/O线程根据slave发送的指定bin-log日志position获取信息并返回给slave的I/O线程。返回的信息中除了bin-log日志内容外,还有master最新的bin-log文件名以及在bin-log中的下一个指定更新position点。

3、slave接收到master返回的信息后,将接收到的日志内容依次添加到slave端的relay-log文件的最末端,并将读取到的bin-log的文件名和position点记录到master.info文件中,以便在下一次读取的时候能告知master从相应的bin-log文件名和最后一个position点开始发起请求。

4、slave SQL线程检测到relay-log中内容有更新,会立即解析relay-log日志中内容,将解析后SQL在slave里执行,执行成功后slave库与msater库数据保持一致。

 

架构:

master数据库发生数据变更,产生日志文件,在salve请求日志文件时,发送日志文件以及新的日志文件名和position点给slave,

slave将日志文件名和position点存放在master.info文件,日志内容写入到中继日志文件,slave SQL线程解析中继日志文件并执行解析后的SQL语句,已达到master与slave库数据同步。

具体操作见:mysql主从复制实战


版权声明:本文为qq_41572664原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。