首页 > 数据库 > MySQL > 正文

MySQL主从延时的处置方法是什么

2024-07-24 12:33:41
字体:
来源:转载
供稿:网友
  本篇内容主要讲解“MySQL主从延时的处理方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL主从延时的处理方法是什么”吧!
  
  为什么主从延时这么大?
 
  MySQL主从延时的处理方法是什么
 
  答:MySQL使用单线程重放RelayLog。
 
  应该怎么优化,缩短重放时间?
 
  答:多线程并行重放RelayLog可以缩短时间。
 
  多线程并行重放RelayLog有什么问题?
  
  如何做到呢?
 
  答:设计一个哈希算法,hash(db-name) % thread-num,库名hash之后再模上线程数,就能很轻易做到,同一个库上的写操作,被同一个重放线程串行执行。
 
  画外音:不同库上的重放,是并行的,就起到了加速做用。
 
  这个方案有什么不足?
 
  答:很多公司对MySQL的使用是“单库多表”,如果是这样的话,仍然只有一个库,还是不能提高RelayLog的重放速度。
 
  启示:将“单库多表”的DB架构模式升级为“多库多表”的DB架构模式。
 
  画外音:数据量大并发量大的互联网业务场景,“多库”模式还具备着其他很多优势,例如:
 
  (1)非常方便的实例扩展:DBA很容易将不同的库扩展到不同的实例上;
 
  (2)按照业务进行库隔离:业务解耦,进行业务隔离,减少耦合与相互影响;
 
  (3)非常方便微服务拆分:每个服务拥有自己的实例就方便了;
 
  “单库多表”的场景,多线程并行重放RelayLog还能怎么优化?
 
  答:即使只有一个库,事务在主库上也是并发执行的,既然在主库上可以并行执行,在从库上也应该能够并行执行呀?
 
  新思路:将主库上同时并行执行的事务,分为一组,编一个号,这些事务在从库上的回放可以并行执行(事务在主库上的执行都进入到prepare阶段,说明事务之间没有冲突,否则就不可能提交),没错,MySQL正是这么做的。
 
  解法:基于GTID的并行复制。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表