问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

26 - MySQL备库延迟几小时?

发布网友 发布时间:2022-10-06 20:58

我来回答

1个回答

热心网友 时间:2023-10-23 17:00

上文中我们介绍了几种可能导致备库延迟的原因。你会发现,这些场景里,不论是偶发性的查询压力,还是备份,对备库延迟的影响一般是分钟级的,而且在备库恢复正常以后都能够追上来。

但是,如果备库执行日志的速度持续低于主库生成日志的速度,那这个延迟就有可能成了小时级别。而且对于一个压力持续比较高的主库来说,备库很可能永远都追不上主库的节奏。

这就涉及到本文要介绍的话题:备库并行复制能力。

谈到主备的并行复制能力,我们要关注的是图中黑色的两个箭头。一个箭头代表了客户端写入主库,另一箭头代表的是备库上 sql_thread 执行中转日志(relay log)。如果用箭头的粗细来代表并行度的话,那么真实情况就如图所示,第一个箭头要明显粗于第二个箭头。

在主库上,影响并发度的原因就是各种锁了。由于 InnoDB 引擎支持行锁,除了所有并发事务都在更新同一行(热点行)这种极端场景外,它对业务并发度的支持还是很友好的。所以,你在性能测试的时候会发现,并发压测线程 32 就比单线程时,总体吞吐量高。

而日志在备库上的执行,就是图中备库上 sql_thread 更新数据 (DATA) 的逻辑。如果是用单线程的话,就会导致备库应用日志不够快,造成主备延迟。
在官方的 5.6 版本之前,MySQL 只支持单线程复制,由此在主库并发高、TPS 高时就会出现严重的主备延迟问题。

从单线程复制到最新版本的多线程复制,中间的演化经历了好几个版本。接下来,我们来看看MySQL 多线程复制的演进过程。

说到底,所有的多线程复制机制,都是要把图中只有一个线程的 sql_thread,拆成多个线程,也就是都符合下面的这个模型:

上图中,coordinator 就是原来的 sql_thread, 不过现在它不再直接更新数据了,只负责读取中转日志和分发事务。真正更新日志的,变成了 worker 线程。而 work 线程的个数,就是由参数 slave_parallel_workers 决定的。根据我的经验,把这个值设置为 8~16 之间最好(32 核物理机的情况),毕竟备库还有可能要提供读查询,不能把 CPU 都吃光了。

接下来,你需要先思考一个问题:事务能不能按照轮询的方式分发给各个 worker,也就是第一个事务分给 worker_1,第二个事务发给 worker_2 呢?

其实是不行的。因为,事务被分发给 worker 以后,不同的 worker 就独立执行了。但是,由于 CPU 的调度策略,很可能第二个事务最终比第一个事务先执行。而如果这时候刚好这两个事务更新的是同一行,也就意味着,同一行上的两个事务,在主库和备库上的执行顺序相反,会导致主备不一致的问题。

接下来,请你再设想一下另外一个问题:同一个事务的多个更新语句,能不能分给不同的 worker 来执行呢?

答案是,也不行。举个例子,一个事务更新了表 t1 和表 t2 中的各一行,如果这两条更新语句被分到不同 worker 的话,虽然最终的结果是主备一致的,但如果表 t1 执行完成的瞬间,备库上有一个查询,就会看到这个事务“更新了一半的结果”,破坏了事务逻辑的隔离性。

所以,coordinator 在分发的时候,需要满足以下这两个基本要求:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2198香辣虾是什么意思 虾什么梗 肖战 刻纸制作需要哪些步骤 好玩的生存游戏手游(好玩的生存游戏手游推荐) 北京电脑职业培训学校都有哪些北京电脑培训班都有哪些 欧盟商标注册需要提供什么资料? 怎么注册欧盟商标?需要准备哪些材料? 5g手机有什么好处 5g手机大概多少钱 口水臭是什么原因呢? 口水臭是什么原因 口水臭怎么改善 智能电视与网络电视区别 扬州狗市在哪个位置 江苏,扬州哪里有卖狗的,?? 扬州哪有卖狗的宠物商店,正规点的 扬州宠物店(附地址) 车有电有油打火没反应怎么回事 扬州哪里有狗买 儿脾醒颗粒婴儿能吃么 儿脾醒颗粒怎么样? 婴儿脾醒颗粒禁忌 儿脾醒颗粒有副作用吗 儿脾醒颗粒效果怎么样 儿脾醒颗粒的作用与功效 儿脾醒颗粒是治疗什么的 儿脾醒颗粒有什么功效 扬州有哪些地方可以买狗 TYPT950,戒指的里面是这样的字,请问是泰缘品牌吗 扬州邗江哪家宠物店信誉好(最好买过的),准备买个小型犬? 扬州哪里卖狗的,品种多的,最好在西区 扬州哪里有卖宠物狗的啊! mysql commit过程详述 开水泡黑花生会不会破坏营养? 花生怎么吃才补硒好呢 扬州哪里买狗放心点 河北省生态环境保护条例规定实行大气环境质量什么制度 三星9100为什么会自动下载图片 三星note3 微信里的图片一点开就自动下载到手机相册里是怎么回事? 三星手机打开网页就自动下载图片原因 松取名寓意 松取名有什么寓意 袁松这个名字的含义 三文鱼可以放冰箱保鲜吗 三文鱼能不能放冰箱保鲜 平和县失信被执行人信息能在风险信息网上查到吗? 苹果4s怎么恢复出厂设置密码是什么? 孙俪演过的所有电影日本人生了三个小孩? 有一部电视剧是孙俪主演,求这部电视剧的名字和在哪可以看? 少白头吃什么黑得快 少年白发吃什么会变黑 孙俪拍过的抗日电视剧 仓鼠抓着没事吧 人为什么老抓着过去不放?