MySQL主从复制的过程如图所示:
MySQL主从复制的过程如下:
1、从数据库上执行start slave,开启主从复制开关。
2、此时,从数据库的IO线程会通过主数据库上授权的用户请求连接主数据库,并请求指定的binlog日志文件的指定位置(日志文件和配置都是配置主从服务器时执行change master命令指定的)之后的binlog日志内容。
3、主数据库接收到来自从数据库的IO线程请求后,主数据库上负责复制的IO线程,根据从数据库的IO线程请求的信息,读取指定的binlog日志文件指定位置之后的binlog日志信息,然后返回给从数据库的IO线程。返回的信息除了日志内容外,还有本次返回的日志内容后在主数据库上新的binlog文件名称及在binlog中的位置。
4、当从数据库上的IO线程获取来自主数据库上的IO线程发送日志内容及位置后,将binlog日志内容依次写入到从数据库自身的relaylog(中继日志)文件(MySQL-relay-bin.XXXX)的最末端,并将新的binlog文件名和位置记录到Master-info文件中,以便下一次读取主数据库的新binlog日志时,能够告诉master服务器需要从新binlog日志的哪个文件哪个位置,开始请求新的binlog日志内容。
5、从数据库的SQL线程会实时地检测本地relaylog中新增加的日志内容,然后及时把log文件中的内容解析成在主数据库曾经执行的SQL语句,并在自身从数据库上按顺序执行这些SQL语句。
6、经过了上面的过程,就可以确保在主数据库和从数据库执行同样的SQL语句。当复制状态正常的情况下,主数据库和从数据库的数据是一样的。