您的位置:首页 > 数据库 > MySQL

mysql主从复制框架图及原理理解

2017-11-24 16:02 323 查看
一、主从复制前提

1、主服务期一定要打开二进制日志

2、必须两台服务器(或者是多个实例)

3、从服务器需要一次数据初始化
3.1如果主从服务器都是新搭建的话,可以不做初始化
3.2如果主服务器已经运行了很长时间了,可以通过备份将主库数据恢复到从库。

4、主库必须要有对从库复制请求的用户。

5、从库需要有relay-log设置,存放从主库传送过来的二进制日志

6、在第一次的时候,从库需要change master to 去连接主库。

7、change master信息需要存放到master.info中 

8、从库怎么知道,主库发生了新的变化?通过relay-log.info记录的已经应用过的relay-log信息。

9、在复制过程中涉及到的线程
从库会开启一个IO thread,负责连接主库,请求binlog,接收binlog并写入relay-log。
从库会开启一个SQL thread,负责执行relay-log中的事件。
主库会开启一个dump thrad,负责响应从IO thread的请求。

二、主从复制原理

1、从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件(user、password、port、ip),并且让从库知道,二进制日志的起点位置(file名  position号)

2、从库的IO线程和主库的dump线程建立连接

3、从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求

4、主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程

5、从库IO线程接收binlog evnets,并从放到本地relay-log中,传送过来的信息,会记录到master.info中。

6、从库SQL进程应用relay-log,并且把应用过的记录到relay-log.info,默认情况下,已经应用过的relay会自动被清理purge。

至此为止,一次主从复制便已经完成。一旦主从运行起来,就不需要手工执行change master to,因为信息都会被存放到master.info中,其他的过程都是一样的。

三、主从复制框架图






如果哪里有不懂的,请加群交流,群号:374136223
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: