Mysql主备延迟的来源
首先,有些部署条件下,备库所在机器的性能要比主库所在的机器性能差。
一般情况下,有人这么部署时的想法是,反正备库没有请求,所以可以用差一点儿的机器。或者,他们会把 20 个主库放在 4 台机器上,而把备库集中在一台机器上。
其实我们都知道,更新请求对 IOPS 的压力,在主库和备库上是无差别的。所以,做这种部署时,一般都会将备库设置为“非双 1”的模式。
但实际上,更新过程中也会触发大量的读操作。所以,当备库主机上的多个备库都在争抢资源的时候,就可能会导致主备延迟了。
当然,这种部署现在比较少了。因为主备可能发生切换,备库随时可能变成主库,所以主备库选用相同规格的机器,并且做对称部署,是现在比较常见的情况。
追问 1:但是,做了对称部署以后,还可能会有延迟。这是为什么呢?
这就是第二种常见的可能了,即备库的压力大。一般的想法是,主库既然提供了写能力,那么备库可以提供一些读能力。或者一些运营后台需要的分析语句,不能影响正常业务,所以只能在备库上跑。
我真就见过不少这样的情况。由于主库直接影响业务,大家使用起来会比较克制,反而忽视了备库的压力控制
。结果就是,备库上的查询耗费了大量的 CPU 资源,影响了同步速度,造成主备延迟。
这种情况,我们一般可以这么处理:
1 一主多从。除了备库外,可以多接几个从库,让这些从库来分担读的压力。
2通过 binlog 输出到外部系统,比如 Hadoop 这类系统,让外部系统提供统计类查询的能力。
其中,一主多从的方式大都会被采用。因为作为数据库系统,还必须保证有定期全量备份的能力
。而从库,就很适合用来做备份。
备注:这里需要说明一下,从库和备库在概念上其实差不多。在我们这个专栏里,为了方便描述,我把会在 HA 过程中被选成新主库的,称为备库,其他的称为从库。
追问 2:采用了一主多从,保证备库的压力不会超过主库,还有什么情况可能导致主备延迟吗?
这就是第三种可能了,即大事务。大事务这种情况很好理解。因为主库上必须等事务执行完成才会写入 binlog,再传给备库
。所以,如果一个主库上的语句执行 10 分钟,那这个事务很可能就会导致从库延迟 10 分钟。
不知道你所在公司的 DBA 有没有跟你这么说过:不要一次性地用 delete 语句删除太多数据。其实,这就是一个典型的大事务场景。
比如,一些归档类的数据,平时没有注意删除历史数据,等到空间快满了,业务开发人员要一次性地删掉大量历史数据。同时,又因为要避免在高峰期操作会影响业务(至少有这个意识还是很不错的),所以会在晚上执行这些大量数据的删除操作。
结果,负责的 DBA 同学半夜就会收到延迟报警。然后,DBA 团队就要求你后续再删除数据的时候,要控制每个事务删除的数据量,分成多次删除
。
另一种典型的大事务场景,就是大表 DDL。这个场景,我在前面的文章中介绍过。处理方案就是,计划内的 DDL,建议使用 gh-ost 方案(这里,你可以再回顾下第 13 篇文章《为什么表数据删掉一半,表文件大小不变?》中的相关内容)。
追问 3:如果主库上也不做大事务了,还有什么原因会导致主备延迟吗?
造成主备延迟还有一个大方向的原因,就是备库的并行复制能力。这个话题,我会留在下一篇文章再和你详细介绍。其实还是有不少其他情况会导致主备延迟,如果你还碰到过其他场景,欢迎你在评论区给我留言,我来和你一起分析、讨论。由于主备延迟的存在,所以在主备切换的时候,就相应的有不同的策略。
总结
- 从库硬件不如主库
- 大事务
思考
- 哪些原因会导致主备延迟?
Mysql主备延迟的来源相关推荐
- 京东一面:MySQL 主备延迟有哪些坑?主备切换策略
大家好,我是Tom哥 作为一名开发同学,大家对 MySQL 一定不陌生,像常见的 事务特性.隔离级别 .索引等也都是老生常谈. 今天,我们就来聊个深度话题,关于 MySQL 的 高可用 一.什么是高可 ...
- Mysql主备延迟的原因
1.备库所在的机器性能比主库所在的机器相差很多 解决办法:换机器 2.备库压力大 解决办法:一主多从 3.大事务,新增的的binlog文件过大,在备库中执行时间过长 解决办法:避免大事务,一次性删除大 ...
- 《MySQL——主备切换流程与主备延迟》
目录 主备切换 主备延迟的原因 可靠性优先策略的主备切换流程 可用性优先策略的主备切换流程 主备切换 主备切换分为主动运维与被动操作. 软件升级.主库所在机器按计划下线为主动运维. 主库所在机器掉电为 ...
- 美团面试官:MySQL主备、主从、读写分离你知道多少?
一.MySQL主备的基本原理 在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行.这样可以保持节点B和A的数据是相同的.当需要切换的时候,就切成状态2. ...
- mysql 主备及时_MySQL高可用(二)主备延时如何解决?
从上篇文章我们知道主备同步是依赖于 binlog,主库负责生产 binlog,备库负责消费 binlog,从而实现主备同步. 今天我们来学习一下主备同步里的一个重点的问题:主备延时. 主备延时,简单来 ...
- mysql主备有几种方式,mysql 主备 主从 主主模式介绍
mysql 主备 主从 主主模式介绍 单点故障的情况不可避免,而且单副本的存储方案早已无法满足业务的可靠性要求,单机可靠性就就两个9,也就是一年大概有3.65天不可用.因此一般情况下我们至少也会上个双 ...
- MySQL主备复制原理、实现及异常处理
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 什么原因可能导致主备延迟?
主备延迟最直接的表现是,备库消费中转日志(relay log)的速度,比主库生产 binlog 的速度要慢. 备库所在机器的性能要比主库所在的机器性能差.这种部署现在比较少了.因为主备可能发生切换,备 ...
- mysql 主备心跳监测配置_mysql主备配置
目录 mysql主备2 一.master配置:2 1. 修改配置文件 2 2. 登录添加账号并赋权限 2 3. 查看master信息 2 二.slave配置:2 1. 修改配置文件 2 2. 重启登录 ...
最新文章
- 困扰一周的奇葩bug:重复相似代码多,导致单片机程序跑飞
- bootstrap-table操作之“删除”
- mysql分库分表方案之sharding-jdbc使用(非demo示例)
- java 按钮设置图片_Java中如何设置带图片按钮的大小
- android小程序下线,关闭小程序
- Spring面试问题与解答
- zookeeper专题:zookeeper集群模式下,leader选举流程分析
- POJ1275Cashier Employment(查分约束系统)
- 下列有关计算机系统叙述正确,()下列有关计算机系统软件的叙述正确的是____
- 《深入理解Java虚拟机》 第4章 虚拟机性能监控与故障处理工具
- 强大的网页性能测试工具--Speed Tracer
- 无标题自用临时文档.C# | python交互
- Differential Privacy差分隐私
- 阿尔法贝塔剪枝——中国象棋人机对战
- env下pkgs --update没有反应直接退出的问题解决方法
- calcite mysql_Apache Calcite 简介
- 【python 笔记/小白快速入门python】python浅谈(一)犹抱琵琶半遮面
- java中的数组长度的计算
- 什么是招标控制价?与标底价有什么区别
- 用户增长分析——用户分群分析
热门文章
- 监控三剑客<cacti、nagios、zabbix>
- 《算法图解》——数组和链表
- macbook快捷键_MacBook 键盘的「fn」键有什么用
- python怎么加锁_Python开发【笔记】:加锁的最佳方案
- github使用指南_GitHub 上的 12 个骚操作
- winform的label内容居中_C# Winform label自定义大小与居中实现教程
- linux搜索文件中包含的字符
- ValueError: optimizer got an empty parameter list
- python 字符串转函数名_Python 使用函数名(字符串)调用函数(4种方法)
- android socket第三方库,OkSocket 一个Android轻量级Socket通讯框架