MySQL同步延迟,是个难题

数据库 MySQL
在mysql应用中,最让人揪心的就是同步延迟问题,原因是多方面的,但带来的负面影响非常大,甚至都无法解释。

 [[335802]]

本文转载自微信公众号「虞大胆的叽叽喳喳」,作者虞大胆 。转载本文请联系虞大胆的叽叽喳喳公众号。 

在mysql应用中,最让人揪心的就是同步延迟问题,原因是多方面的,但带来的负面影响非常大,甚至都无法解释。

mysql作为最流行的关系型数据库之一,它的强项可能并不是速度,并行复制能力也并不强,所以如果你要重度依赖mysql,那么必须意识到同步延迟可能是常态。

那么如何尽量去避免呢?

1:应用解决方案

在开发中,假设延迟是存在的,对于核心业务必须要严谨,比如说文章队列,如果获取不到从库文章信息,是不是再一次投递队列,或者从主库查询,尽量减少延迟带来的影响,当然设计的复杂度就增加了。

如果你重度依赖缓存,那么如何避免缓存信息是脏的,这更难解决。

2:减负

mysql无法是增删改查,要保持数据量可控,我最喜欢在不影响应用的前提下删除数据,看似很low的解决方案其实很管用。

尽量减少慢查询,以前同步延迟都是查询带来的,但这次却不是,而是队列大量更新和插入带来的,比如说每天全量推送用户,长时间高并发写,同步不可避免,所以一定要控制并发写入和更新量。

3:选择合适的解决方案

mysql尽量作为存储使用,因为大规模的查询和更新并不是它的优势,所以非核心业务,可以考虑redis和mongodb,尤其是队列解决方案,不建议使用mysql,或者说有多套解决方案。

4:拆分

受限于mysql本身机制,可以通过升级mysql版本,提升并行复制能力。或者根据不同的场景,使用多个库,甚至多个mysql实例,避免核心服务受影响。

一方面服务能够解耦,另外也方便扩展。这也是分而治之的解决思路之一。

5:负载均衡

有的时候发现某些从库不延迟,就一台延迟,可以通过策略,摘除这台从库,但必须意识到,这只是临时解决方案,出现大量的延迟,说明问题可能已经比较严重了。

目前规模还小,如果大了呢?那时候可能是灾难性的。

 

责任编辑:武晓燕 来源: 虞大胆的叽叽喳喳
相关推荐

2017-06-21 08:30:20

MySQL原因解决办法

2018-02-01 13:22:50

数据库MySQL同步延迟

2017-12-27 13:07:52

数据库MySQL主从复制

2019-01-24 09:04:50

Kubernetes存储容器

2019-07-16 06:30:19

MySQL同步延迟数据库

2015-03-30 15:28:42

创业创业融资七牛

2019-08-29 07:04:29

网络延迟IP网络

2023-12-28 11:18:01

MySQL数据库级联从库

2022-08-18 08:24:19

Mysql数据库

2020-08-20 08:23:48

MySQL数据库技术

2011-07-19 10:13:44

IPv6IPv6规划

2022-06-13 06:20:42

setStatereact18

2018-11-21 08:28:30

Docker业务容器

2017-09-12 08:03:29

数据库MySQL主库

2023-09-07 08:15:58

场景同步异步

2019-02-28 14:04:28

内存固定分配存储

2018-04-04 13:44:59

数据库MySQL延迟

2019-05-14 16:17:03

MySQL延迟从库数据库

2009-06-12 14:09:36

软件外包
点赞
收藏

51CTO技术栈公众号