` 主从复制 | 听云轩

主从复制

这样做的的好处

  • 增强服务的健壮性

实现了主从服务器之间的数据的同步,增加了数据库系统的可用性,当主服务器出行问题,可以在从服务器接管服务。

  • 实现负载均衡

    我们通过主从服务器之间实现读写分离,可以更快的对客户端的请求进行相应。比如说,我们可以尝试将主服务器实现数据的更新,让从服务器相应所有的请求,这样做则可以提高系统的性能和效率。

  • 能实现数据的备份

过程

    进行复制的时候,我们对复制中表的更新在主服务器上进行。其中,会涉及到三个线程来执行复制功能。其中一个在主服务器上,另外两个在从服务器上;其次还有两个日志文件,一个是bin-log,这个是用来记录在主库中存在的增删改数据的更新操作,另一个是relay-log,这个是从库上保存来自于主库中的操作信息。

    1、当我们在从库上执行slave start命令时,也就是开启复制,这个时候,从库的I/O线程会通过我们提前在主库上创建的一个授权用户连接上主库,并请求主库发送指定位置(position点)后的bin-log日志内容。

    2、主库收到消息之后呢,它的I/O线程就根据请求,发送从库想要的信息给它,并且更新自己的position点。

    3、返回的信息会传回到从库上的relay-log文件中,当从库上的SQL线程发现中继日志发生变化了,它会去查看,并根据内容对自己数据库进行更改,从而是主从数据库保持一致。

搭建

    假设我们这里有两台相同版本的数据库环境。(一主一从)

1、先为主库创建一个授权用户。

登录到数据库中:

1
2
grant replication slave on *.* to 'dyh'@'%' identified by '12345';
flush privileges;

2、修改数据库的配置文件/etc/my.cnf。设置好server-id和log-bin。
Anb3Jf.png

此时我们可以查看主库的相关信息:
AnbYQg.png

3、配置从库

  • 修改配置文件,只需要设置一下它的server-id
  • 指定主库信息:
    Anb5Y6.png
  • 开启服务
1
slave start;
  • 查看是否配置成功
    AnbRm9.png

当两个进程均为YES时,说明完成。

4、测试

我们在主库上创建一个数据库和表来验证

AnqnpT.png

AnqLgU.png

然后进入到从库中进行查看:

Anqju4.png

Anqxb9.png

------ 本文结束 ------
您的支持将鼓励我继续创作