
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
MySQL服务器的编程应用随着互联网的不断发展而逐渐覆盖到了各个不同的行业领域之中,而本文我们就通过案例分析来简单了解一下,MySQL服务器常见问题分析。
MySQL中读写分离是经常用到了的架构了,通过读写分离实现横向扩展的能力,写入和更新操作在源服务器上进行,从服务器中进行数据的读取操作,通过增大从服务器的个数,能够极大的增强数据库的读取能力。
MySQL中的高可用架构越已经呈现出越来越复杂的趋势,但是都是才能够基本的一主一从演化而来的,所以这里来弄明白主从的基本原理。
先来弄明白主从和主备,以及双主模式之间的区别
双主
mysql
有两个主库,每个主库都能进行读写,并且两个主库之间都能进行数据的同步操作。
主从
mysql
主从中,数据写入在主节点中进行,数据读取在从节点中进行,主库会同步数据到从库中。
主备
mysql
主备,备库只是用来进行数据备份,没有读写操作的发生,数据的读取和写入发生在主库中,主库会同步数据到备库中。
下面讨论的数据延迟,主要是基于主从模式。主从,主备,双主数据同步原理一样,这里不展开分析了。
读写分离的架构
常用的读写分离有下面两种实现:
1、客户端实现读写分离;
2、基于中间代理层实现读写分离。
基于客户端实现读写分离
客户端主动做负载均衡,根据select、insert进行路由分类,读请求发送到读库中,写请求转发到写库中。
这种方式的特点是性能较好,代码中直接实现,不需要额外的硬件支持,架构简单,排查问题更方便。
缺点需要嵌入到代码中,需要开发人员去实现,运维无从干预,大型代码,实现读写分离需要改动的代码比较多。
mysql
基于中间代理实现读写分离
中间代理层实现读写分离,在MySQL和客户端之间有一个中间代理层proxy,客户端只连接proxy,由proxy根据请求类型和上下文决定请求的分发路由。
mysql
带proxy的架构,对客户端比较友好。客户端不需要关注后端细节,连接维护、后端信息维护等工作,都是由proxy完成的。但这样的话,对后端维护团队的要求会更高。而且,proxy也需要有高可用架构。因此,带proxy架构的整体就相对比较复杂。
不过那种部署方式都会遇到读写分离主从延迟的问题,因为主从延迟的存在,客户端刚执行完成一个更新事务,然后马上发起查询,如果选择查询的是从库,可能读取到的状态是更新之前的状态。
MySQL中如何保证主从数据一致
MySQL数据进行主从同步,主要是通过binlog实现的,从库利用主库上的binlog进行重播,实现主从同步。
来看下实现原理
在主从复制中,从库利用主库上的binlog进行重播,实现主从同步,复制的过程中蛀主要使用到了dumpthread,I/Othread,sqlthread这三个线程。
IOthread:在从库执行startslave语句时创建,负责连接主库,请求binlog,接收binlog并写入relay-log;
dumpthread:用于主库同步binlog给从库,负责响应从IOthread的请求。主库会给每个从库的连接创建一个dumpthread,然后同步binlog给从库;
sqlthread:读取relaylog执行命令实现从库数据的更新。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。