登录
首页 >  数据库 >  MySQL

高性能MySql系列-读写分离/主从复制/主从复制延时解决方案

来源:SegmentFault

时间:2023-01-21 20:57:16 183浏览 收藏

积累知识,胜过积蓄金银!毕竟在##column_title##开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《高性能MySql系列-读写分离/主从复制/主从复制延时解决方案》,就带大家讲解一下MySQL知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

读写分离

基于MySql自身提供的主从复制架构,写操作请求发往主库,读操作请求发往从库。一个主库可以挂多个从库。主库完成写操作后,将数据通过binlog方式同步给从库。

主从复制工作原理

主库完成写操作后,将变更写入binlog日志,从库的IO线程从主库的binlog日志拉取拷贝数据变更日志,写入到relay中继日志,然后从库的SQL线程从relay日志中重放sql写操作,完成数据的同步。

主从复制延时较长解决方案

由于从库从主库拷贝日志以及串行执行SQL的特点,在高并发情况下,从库与主库的数据同步是有延时的。换句话说,在主库刚写入的数据,在从库不一定立马能读到。这就需要一定的策略来解决这个问题。
常见的解决方案有两种(均基于MySql提供的机制):
1.半同步复制:在主库写入数据时,强制串行同步到从库,等待至少一个从库的IO线程写入relay中继日志并回复ack报文后,才认为写操作完成。
2.并行复制:从库开启多个SQL线程,并行执行relay日志的不同库的binlog变更操作,然后并行重放SQL变更操作,相比串行能够达到降低延时的目的。

另外,在应用程序和MySql架构层面,也有如下方案:
1.设计多主结构,单个主库写压力过大导致的延时问题,分摊到多个主库,能够降低同步延时。
2.刚写入的数据,如果想立马读出来,就不从从库读,改为强制从主库读取,避免延时导致的读取不到数据问题。
3.重写代码,对于不要求立马读出来的业务场景,尽可能不立马读数据,等一会再读。

文中关于mysql的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《高性能MySql系列-读写分离/主从复制/主从复制延时解决方案》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表