MySql教程

mysql主从复制

本文主要是介绍mysql主从复制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
mysql主从复制

主从复制

      • 1.什么是主从复制?
      • 2.为什么需要主从复制?
      • 3.主从复制的原理
      • 4.主从复制作用
      • 5.主从复制的形式
      • 6.主从复制类型

1.什么是主从复制?

将数据从一个mysql数据库服务器的主节点复制到多个从节点。主节点负责读,从节点负责写,这样就会降低服务器的压力,从而提高效率。

2.为什么需要主从复制?

在大数据时代的到来,随着业务的不断在增加,会造成数据库的负载过重,如果使用单一的服务器,会容易造成宕机,此时保存在mysql的数据就可能会丢失,为了解决这个问题,mysql的主从复制出现了。

3.主从复制的原理

注意: 三个线程

主节点

为每一个slaver的I/O Thread启动一个dump线程,向其发送biolog日志。

从节点:

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

  • master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中。
  • slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件
  • 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致。

4.主从复制作用

  • 当我们的主服务器出现问题,可以切换到从服务器;可以进行数据库层面的读写分离;可以在从数据库上进行日常备份
  • 数据更安全,不会因为单台服务器的宕机而丢失数据。
  • 性能大大提升:一主多从,不同用户从不同数据库读取,性能提升;一主多从相当于分担了主机任务,做了负载均衡

5.主从复制的形式

  • 一主一从

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7wAWUETw-1633495860101)(C:\Users\拾忆\AppData\Roaming\Typora\typora-user-images\image-20211006120435460.png)]

  • 双主复制

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6KWh5TNV-1633495860103)(C:\Users\拾忆\AppData\Roaming\Typora\typora-user-images\image-20211006120536475.png)]

每个master即是master,也是另一台服务器的slaver,当任何一方做出变更,都会复制应用到另一方的数据库中。

  • 一主多从

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tEyX40RX-1633495860105)(C:\Users\拾忆\AppData\Roaming\Typora\typora-user-images\image-20211006120748171.png)]

  • 多主一从

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sphVS3rp-1633495860107)(C:\Users\拾忆\AppData\Roaming\Typora\typora-user-images\image-20211006120924597.png)]

  • 联级复制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W79AIqzN-1633495860110)(C:\Users\拾忆\AppData\Roaming\Typora\typora-user-images\image-20211006121206745.png)]

级联复制模式下,部分数据同步不连接主节点,而是连接从节点,因为如果主节点连接太多从节点,会消耗部分性能用于replication,因此,使用3-5个从节点连接主节点,其他从节点作为二级或者三级从节点,可以缓解主节点的压力。

6.主从复制类型

  • 异步复制

主节点不会主动推送数据到从节点,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理。

存在问题:

如果主节点出问题了,没有将数据传给从节点,当从节点提升为主节点时,会造成数据的缺失。

  • 同步复制

当主库执行完一个事务,然后所有的从库都复制了该事务并成功执行完才返回成功信息给客户端。

存在问题:

等待从节点成功执行完之后再返回,性能受到影响

  • 半同步复制

介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到 relay log 中才返回成功信息给客户端 (只能保证主库的 Binlog 至少传输到了一个从节点上),否则需要等待直到超时时间然后切换成异步模式再提交。

好处与存在问题:

1.提高数据的安全性,一定程度上保证数据能成功备份到从库

2.半同步模式不是mysql内置的,从Mysql 5.5开始集成,需要master和slaver安装插件开启半同步模式

参考资料:https://learnku.com/articles/60228 )

这篇关于mysql主从复制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!