MYSQL架构详解

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了MYSQL架构详解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

单机版mysql容易出现单点故障,所以需要搭建多台mysql服务器,mysql架构有很多种,目的都是热备份,多活,故障切换,负载均衡、读写分离等

一、主从复制架构

MYSQL架构详解

master主节点负责写入数据,slave从节点负责读取数据。实现了读写分离。应用与读多写少的业务场景。这种架构的缺点就是只有一个master,如果挂掉了,就无法写入数据了。而且master和slave数据还有同步延迟的风险。

MYSQL架构详解

这种架构是级联复制架构,用于解决读需求更多的业务场景。如果读压力加大,就需要更多的slave来解决,但是如果slave的复制全部从master复制,势必会加大master的复制IO的压力,所以就出现了级联复制,减轻master压力。缺点就是slave延迟更加大了。

二、主主架构

MYSQL架构详解

两个主节点,一个负责写,一个负责读,需要配合一个keepalived进行ip漂移,这样一个挂掉了,另一个可以继续工作。

MYSQL架构详解

上面这种架构,双主多从,解决了单master复制的压力大问题,减少了slave数据延迟,且双master可以减少单点故障。

由上面的架构可以看出,搭建mysql集群是一个很大的开销,绝大多数公司,用的还是单机版mysql。

三、MYSQL主从复制原理

MYSQL架构详解

  • 复制过程-异步复制 异步复制是MYSQL主从复制默认的方式,流程如下: 1.客户端提交sql语句至master的mysql服务器后,mysql服务器将sql语句写入binglog日志。并将事务进行提交,返回消息给客户端。 2.mysql服务中有个event监听器,监听binglog日志的变化,如果有变化,则通知dump线程。 3.master服务器的dump线程通知slave服务器的IO线程,有数据需要同步,slave服务器的IO线程从slave服务器的relay-log.info中获取binlog文件和pos位置(类似于Kafka中的偏移量,记录binlog日志的插入位置) 4.slave节点通过IO线程通知master节点slave的binlog文件和pos位置 5.根据slave的请求,master将相应的binlog文件和pos位置传给slave 6.slave获取到信息后,将信息写入relay-bin日志中。等待slave节点从relay-bin读取日志,同步数据。 7.slave节点写入relay-bin日志成功后,给master节点回复ack信息,通知master写入relay-bin日志成功。 8.master节点的dump线程通知服务将客户端写入的数据进行提交操作,然后给客户端相应消息。
  • 复制过程-半同步复制 1.客户端提交sql语句至master的mysql服务器后,mysql服务器将sql语句写入binglog日志。 2.mysql服务中有个event监听器,监听binglog日志的变化,如果有变化,则通知dump线程。 3.master服务器的dump线程通知slave服务器的IO线程,有数据需要同步,slave服务器的IO线程从slave服务器的relay-log.info中获取binlog文件和pos位置(类似于Kafka中的偏移量,记录binlog日志的插入位置) 4.slave节点通过IO线程通知master节点slave的binlog文件和pos位置 5.根据slave的请求,master将相应的binlog文件和pos位置传给slave 6.slave获取到信息后,将信息写入relay-bin日志中。等待slave节点从relay-bin读取日志,同步数据。 7.slave节点写入relay-bin日志成功后,给master节点回复ack信息,通知master写入relay-bin日志成功。 8.master节点的dump线程通知服务将客户端写入的数据进行提交操作,然后给客户端相应消息。

可以看出,异步复制中,master节点不管slave节点数据是否同步成功,都会将数据提交,返回客户端成功的消息。这样的风险就是slave节点数据同步不成功的话,客户端并不知道。所以引入了半同步复制,master节点等到slave节点写入relay-bin日志成功后,才提交事务数据,这样更有利于数据的同步性。需要注意的是,开启半同步复制后,如果slave节点挂了,则master一直等待slave节点的ack信息,默认等待10秒,如果还没收到slave的ack,则认为slave节点挂掉了,master节点会自动变成异步复制方式进行。

脚本宝典总结

以上是脚本宝典为你收集整理的MYSQL架构详解全部内容,希望文章能够帮你解决MYSQL架构详解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: