mysql系列(二)搭建主从复制

版权声明:可以转载,请注明链接出处 https://blog.csdn.net/xihuanyuye/article/details/85049310

一、Mysql主从复制原理:

Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(insert,update,delete,ALTER TABLE,grant等)。

主从复制的原理其实就是把主服务器上的bin日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

复制流程图:
在这里插入图片描述

1、主从复制过程

1、主节点必须启用二进制日志,记录任何修改数据库数据的事件。

2、从节点开启一个线程(I/O Thread)把自己扮演成mysql的客户端,通过mysql协议,请求主节点的二进制日志文件中的事件。

3、主节点启动一个线程(dump Thread),检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带请求位置参数,则主节点就会从第一个日志文件中的第一个事件一个一个发送给从节点。

4、从节点接收到主节点发送过来的数据把它放置到中继日志(Relay log)文件中。并记录该次请求到主节点的具哪个二进制日志文件的哪个位置。

5、从节点启动另外一个线程(sql Thread ),把replaylog中的事件读取出来,并在本地再执行一次。

2、复制中线程的作用

从节点:

I/O Thread:从Master请求二进制日志事件,并保存于中继日志中。
Sql Thread:从中继日志中读取日志事件,在本地完成重放。

主节点:

Dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向从节点发送二进制事件。

3、思考:从节点需要建立二进制日志文件吗?

看情况,如果从节点需要作为其他节点的主节点时,是需要开启二进制日志文件的。这种情况叫做级联复制。如果只是作为从节点,则不需要创建二进制文件。

4、Mysql复制特点

异步复制:主节点中一个用户请求一个写操作时,主接点不需要把写的数据在本地操作完成同时发送给从服务器并等待从服务器反馈写入完成,在响应用户,主机点只需要把写入操作在本地完成,就响应用户。但是,从节点中的数据有可能会落后主服务,可以使用很多软件来检查是否落后即主从数据不一致的程度。

二、主从复制配置过程

1、各节点需要的操作

主节点:

启用二进制日志。
为当前节点设置一个全局唯一的server_id。
创建有复制权限的用户账号 REPLIACTION SLAVE ,REPLIATION CLIENT。

从节点:

启动中继日志。
为当前节点设置一个全局唯一的server_id。
使用有复制权限的用户账号连接至主节点,并启动复制线程。

2、配置演示

测试环境:
主节点:192.168.0.196
从节点:192.168.0.198
mysql版本:mysql-5.5.17
linux:centos6.5

1:编辑主节点配置文件
在这里插入图片描述
2:启用二进制日志文件

添加:log_bin = mysql_bin
添加 :server_id =1
添加:innodb_file_per_table =ON
添加:skip_name_resolve=ON
在这里插入图片描述
3:启动mysql服务,并连接mysql
在这里插入图片描述
4:查看日志信息

1:)查看二进制日志是否开启

 show global variables like '%log%';

在这里插入图片描述
2:)查看主节点二进制日志列表

show master logs;

在这里插入图片描述
3:)查看主节点的server id

show global variables like '%server%';

在这里插入图片描述
5:在主节点上创建有复制权限的用户。REPLIACTION SLAVE ,REOPLIATION CLIENT

grant replication slave, replication client on *.* to 'repluser'@'192.168.0.198' identified by 'replpass';

在这里插入图片描述
6:刷新

flush privileges;

在这里插入图片描述
7:编辑从节点配置文件
在这里插入图片描述
8:开启中继日志

添加:relay_log=relay_log
添加:relay_log_index=relay_log.index
添加:server_id=2
添加:innodb_file_per_table=ON
添加:skip_name_resolve=ON
在这里插入图片描述
9:启动从节点mysql服务,并登陆mysql
在这里插入图片描述
10:查看从节点日志信息

1:)查看中继日志是否开启

show global variables like '%log%';

在这里插入图片描述
2:)产看server 相关信息

show global variables like '%server%';

在这里插入图片描述

11:在从节点配置访问主节点的参数信息

内容有:主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。
注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。

在主节点执行以下命令查看:

show master logs;

在这里插入图片描述
执行命令

CHANGE MASTER TO MASTER_HOST='192.168.0.196',MASTER_USER='repluser',MASTER_PASSWORD='replpass', MASTER_LOG_FILE='mysql-bin.000042',MASTER_LOG_POS=362;

在这里插入图片描述
12:查看从节点的状态信息

因为没有启动 从节点的复制线程,IO线程 和 SQL 线程都为NO.
在这里插入图片描述
13:启动复制线程

START SLAVE 可以指定线程类型:IO_THREAD ,SQL_THREAD, 如果不指定,则两个都启动。

在这里插入图片描述
14:再次查看从节点状态信息
在这里插入图片描述
至此,mysql的主从复制配置完成。

15:测试

1:)在主节点创建数据库,并查看主节点二进制日志信息
在这里插入图片描述
2:)在从节点查找二进制日志信息,并查看mydb数据库是否复制成功
在这里插入图片描述
在这里插入图片描述

参考:
mysql复制–主从复制配置
关于skip_name_resolve参数的总结

猜你喜欢

转载自blog.csdn.net/xihuanyuye/article/details/85049310