首先需要的环境:我在本地安装了两个MySQL,分别是5.7和5.5的版本:安装结束后如下:
1、复制原理:
原理:
在MySQL中有一种叫做bin的二进制日志,这个日志文件里面记录了关于此数据库的所有修改的sql语句(包括insert,update,delete,grant等等)。而主从复制就是利用这个二进制bin日志,在主库上创建一个用户,从数据库通过此用户去读取bin日志,然后再在从数据库上再执行一次。
2、主数据库配置文件修改:
我在改配置文件过程中碰到的一个问题就是:我的主数据库选择5.7版本,但是并没有my.ini这个文件,只有my-default.ini.如果你是安装在C盘,你还可能发现一个路径:C:\programData\mysql\my.ini,改这个就好了。
3、主数据库启动过程:
cmd以管理员方式运行,然后输入命令:net start MySQL57(安装时自己取的名字),如下:
5、为从数据库创建用户:
先可以看一下二进制日志文件的状态,命令为:show global variables like '%log_bin%';(注意后面有分号),结果如下:
6、从数据库配置:
7、从数据库执行过程:
首先启动从数据库,然后执行同步SQL语句,如下:
修改成功后进行测试:
最后来介绍一下MySQL主从复制的过程:
a、主节点启用这个bin二进制日志(log-bin);
b、从节点开启一个线程(I/O Thread),连接主节点上的用户,读取这个日志文件中的事件;
c、主节点启动一个线程(dump Thread),检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带请求位置参数,则主节点就会从第一个日志文件中的第一个事件一个一个发送给从节点;
d、从节点接收到主节点发送过来的数据把它放置到中继日志(Relay log)文件中。并记录该次请求到主节点的具哪个二进制日志文件的哪个位置;
e、从节点启动另外一个线程(sql Thread ),把replaylog中的事件读取出来,并在本地再执行一次。
解释:
I/O Thread:从Master请求二进制日志事件,并保存于中继日志中;
Sql Thread:从中继日志中读取日志事件,在本地完成重放;
Dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向从节点发送二进制事件;
注意:如果从节点需要作为其他节点的主节点时,需要开启二进制日志文件的(log-bin)。这种情况叫做级联复制。如果只是作为从节点,则不需要创建二进制文件。
联系客服