故障分析 | 一次规律的 MySQL 主从延迟跳变

故障分析 | MongoDB 5.0 报错 Illegal instruction 解决 作者:任仲禹 爱可生 DBA 团队成员,擅长故障分析和性能优化,文章相关技术问题,欢迎大家一起讨论。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 去年七月的一声炮响,MongoDB Inc 给我们送来了 MongoDB 5.0 ,该版不仅带来了核心特性—时序集合,但若使用不慎还会给我们埋些小小的“坑”;如果您的环境正准备安装、试用或升级到 MongoDB 5.0 ,那不妨留步讨论下。 现象 先注明下,我的 Linux 版本为 CentOS Lin. 阅读详情

作者:李彬

爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。爱好有亿点点多,吉他、旅行、打游戏…

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


作为一名DBA,相信你一定处理过主从延迟,最近在生产中遇到一个比较有意思的延迟问题,在此与大家进行分享。

首先来看下MySQL延迟的相关监控:

或许你已经发现,这个监控曲线图不同于常见的延迟曲线,主要表现出以下两个特点:

1.延迟上升和下降的曲线几乎都是直上直下,并不是缓慢增长,是一种突变。

2.延迟曲线的最高点是一致的。

通过监控配置了解到,延迟检测获取的是Seconds_Behind_Master的值。既然出现了规律性的变化,那么我们可以通过一个简单的命令来抓取Seconds_Behind_Master的值,观察是否与监控的曲线变化一致。

# 观察曲线,五分钟内延迟会出现多次变化,所以本次共抓取5分钟,300次的Seconds_Behind_Master值
for i in {1..300}
do
    echo `date` `mysql -S /data/mysql/3306/data/mysqld.sock -uxxx -pxxx -e 'show slave status\G' | grep Second` >>/tmp/second.log
    sleep 1
done

查看/tmp/second.log的内容,可以看到Seconds_Behind_Master的值确实在0和71之间反复横跳。

为什么会出现这种现象呢?根据以往的经验,这种延迟大概率不是因为数据库压力大导致的,因为延迟曲线的变化过于规律。从其他角度进行排查,在对比主从服务器时间的过程中,终于捕捉到一个关键信息:从库的时间与主库的时间差基本在71S,这正好符合Seconds_Behind_Master跳动的最大值71。

或许有人会问,Seconds_Behind_Master在计算时不是会自动减去时间差吗?是的,从官方文档中我们可以看到,IO线程启动后,Seconds_Behind_Master在计算时确实会自动减去时间差,但很重要的一个前提是,这个时间差异在IO线程启动后"不会发生变化"。

所以,发生延迟跳变很大的一个可能是:IO线程启动后,该从库通过NTP或者其他方式进行了时间校正,导致Seconds_Behind_Master在计算时出现了误差。

那么如何解决呢?一种简单的处理方法是重启从库的IO线程,让其重新计算服务器时间之间的差值。但这种处理方法可能会导致延迟跳变的情况再次出现。最优解为先校正集群中所有服务器的时间,在时间一致的情况下,再重启IO线程。在校正服务器时间前,有几点是需要我们关注的:

第一,业务是否使用了调用系统时间的函数?一种可能的场景是:直接登录到数据库服务器上导入SQL脚本,这时调整服务器时间有风险,需要业务侧进行评估。

第二,校正时间时,主库的时间是向前校正还是向后校正?正常来说,时间向前校正(例如00:03校正为23:58)的业务影响是大于向后校正的。比如在insert一条数据时,create_time时间字段为00:03,之后时间校正为23:58,校正后在00:03之前又进行了一次update操作,这时就会出现update_time在create_time之前的现象。

第三,在进行时间校正时,如果时间差异过大,可以分多次进行缓步校正,即控制每次校正的时间幅度,而不是通过一次操作就校正为正确的时间,这样也可以在一定程度上降低对业务的影响。

一个建议是:如果业务逻辑强依赖于时间字段,可靠的做法是停掉应用的连接或者配置为只读,再进行时间校正和重启IO线程的操作。

参考:https://dev.mysql.com/doc/refman/5.7/en/show-slave-status.html

故障分析 | bgsave 导致 redis 定期卡顿案例一则 作者:任坤 现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 1、背景 线上有套 redis 主从,版本4.0,开发抱怨说经常会出现周期性卡顿。 应用日志显示每隔10多分钟出现一次,一个普通调用就需要执行1s左右,然后自动恢复,get/set 均受影响 2、诊断 查看 redis qps 和 cpu 监控,均未发现有用线. 阅读详情

相关推荐

SAP生产订单成本‘还原’实战:从标准成本到实际费用,一步步拆解差异来源(附物料分类账提示)

本文深入解析SAP生产订单成本差异分析的全过程,从标准成本到实际费用的追踪方法,揭示差异根源的六维分析法。特别强调物料分类账(CKMLCP)在成本还原中的关键作用,帮助财务人员精准定位价格差异、用量差异等问题,提升制造业成本管理的效率和准确性。

weixin_28705087的博客 531

mysql服务器掉电重启后无法启动

掉电mysql启动失败

qq_42840854的博客 813

Design Compiler时序约束实战:如何用set_clock_uncertainty解决时钟抖动问题?

本文深入探讨了在Design Compiler时序约束实战中,如何精准运用set_clock_uncertainty命令解决时钟抖动等非理想性问题。文章详细解析了该命令在时钟树综合前后的不同应用策略、建立时间与保持时间的差异化设置,并对比了其与set_clock_jitter的适用场景,旨在帮助数字IC设计工程师制定稳健的时序约束,为后端物理实现预留合理的安全裕量,从而高效达成时序收敛。

weixin_29196891的博客 299

解决mysql 因Innodb意外终止无法启动的问题

解决方法 1.如果数据不重要或已经有备份,只需要恢复mysql启动 进入mysql目录,一般是:/usr/local/var/mysql/ 删除ib_logfile* 删除ibdata* 删除所有数据库物理目录(例如数据库为test_db,则执行rm -rf test_db) 重启动mysql 重新建立数据库或使用备份覆盖 2.如果数据很重要且没有备份 可以使用innodb_force_recovery参数,使mysqld跳过恢复步骤,启动mysqld,将数据导出然后重建数据库。 in.

sinat_30175689的博客 1161

从零到一:Mx_yolo本地训练与K210部署实战指南

本文详细介绍了从零开始进行Mx_yolo本地模型训练到K210部署的全流程实战指南。涵盖环境配置、数据准备、模型训练与调优、模型转换及K210部署等关键步骤,并提供了常见问题解决方案和性能优化技巧,帮助开发者高效完成AI模型在嵌入式设备的落地应用。

weixin_29081163的博客 251

手把手教你用CEFSharp打造防关联指纹浏览器(附完整代码)

本文详细介绍了如何基于CEFSharp框架,从零开始构建一个企业级的防关联指纹浏览器。通过剖析核心架构、多进程隔离实现、动态指纹混淆(如Canvas、WebGL)的实战代码,以及代理集成与性能优化,为跨境电商、广告投放等场景提供了一套可控、安全的开源解决方案。

fern8的博客 959

故障分析 | MySQL 无法启动,提示 missing……

作者:姚远 专注于 Oracle、MySQL 数据库多年,Oracle 10G 和 12C OCM,MySQL 5.6,5.7,8.0 OCP。现在鼎甲科技任顾问,为同事和客户提供数据库培训和技术支持服务。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 故障描述 MySQL 数据库服务器的 CPU 和主板都换了,重新开机,发现 MySQL 无法启动!!! 提示: Ignoring the redo log due to missing MLOG_C.

ActionTech的博客 764

扣子(coze)实战|手把手教你搭建AI换装自动化工作流

摘要:本文介绍了使用Coze平台搭建AI换装工作流的详细教程。工作流包含模特图片上传、服装替换、任务提交和智能轮询等模块,通过change_model插件实现异步换装处理,并内置30秒循环查询机制。该工具支持自定义API密钥对接不同AI服务商,目前已上线共享空间并提供会员服务(59.8元/年)和VIP课程(499元/年),包含100+智能体和实战案例资源。完整体验地址见文中链接。

yueyehuguang的博客 1842

mysql 数据库因异常断电导致表损坏无法启动问题

centos7 因异常断电导致mysql 无法启动的问题。

Darrenlsc的博客 2367

CMOS传输门(互补开关)实战指南 | 设计优化 + 常见问题解析

本文深入解析CMOS传输门(互补开关)的设计优化与常见问题,涵盖导通特性、版图设计、高频应用及混合信号设计等关键领域。通过实测数据和优化技巧,帮助工程师解决衬底连接、信号完整性等实际问题,提升数字和模拟混合信号设计的效率与可靠性。

weixin_29229989的博客 161

YOLOv11改进 - C3k2融合 | C3k2 融合 ARConv 自适应矩形卷积:动态调整卷积核形状与采样点

本文介绍了将自适应矩形卷积(ARConv)模块与YOLOv11相结合的方法。ARConv是针对遥感图像全色锐化任务设计的创新卷积模块,可自适应调整卷积核形状与采样点数量,解决传统卷积刚性限制,实现高效特征提取。其工作流程包括学习卷积核高度和宽度、选择采样点数量、生成采样图、卷积实现与空间自适应增强。我们将集成ARConv的C3k2_ARConv模块引入YOLOv11,对相关代码进行修改和注册,并配置了yolov11 - C3k2_ARConv.yaml文件。实验脚本显示,该结合方式应用于目标检测任务。

魔改工程师的博客 1005

mysql5.6服务器突然掉电后一个mysql实例无法启动的修复(更新中可能最后没法解决)...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34413802的博客 346

生成mm grounding dino的onnx模型并在x-anylabeling中使用

X-AnyLabeling 是一款cvhub开发的交互式自动标注工具,其基于AnyLabeling进行构建和二次开发,在此基础上扩展并支持了许多的模型和功能,并借助Segment Anything和YOLO等主流模型提供强大的 AI 支持。其最新版基于grounding dino可以实现开放词汇检测及生成掩码。2024年,MMDet 3.3.0提出了 MM-Grounding-DINO。

blanokvaffy的博客 1728

mysql数据启动大量报错且无法启动(The InnoDB memory heap is disabled,Status: NOT_KILLED)故障排查...

   mysql数据启动大量报错且无法启动(The InnoDB memory heap is disabled,Status: NOT_KILLED)故障排查   周一上班巡检发现公司的有一组mysql主从同步进程报警,登录报警服务器,进行查看排查步骤如下:   1,首先登录保障服务器,执行mysql命令登录mysql,发现报错,提示SOCK无法连接详如下:   ERROR 2002...

无锋剑 2630

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

故障分析 | MySQL 主从延时值反复跳动

作者:徐文梁爱可生DBA成员,负责客户项目的需求和维护。目前在数据库新手村打怪升级中。喜欢垂钓,如果你也喜欢垂钓,可以约个晴好天气,咱们一边钓鱼一边聊聊数据库,岂不快哉。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

ActionTech的博客 480

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

故障分析 | Bad handshake,升级 5.7.28 引起的“血案”

作者:陈俊聪 任职于中移信息基础平台部数据库组,负责 MySQL 数据库运维工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 引言 作为一名 DBA 碰到过升级出问题需要回退么?碰到过回退还解决不了问题么?我有幸遇到了一次凶险的升级“血案”。问题来自协助客户升级 MySQL,以修复一个安全漏洞。升级版本为 5.7.30,但这个问题源于 5.7.28,并且影响 5.7.28 以上的版本,所以文章主要对比 5.7.27 和 5.7.28 版本。 .

ActionTech的博客 5318

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

故障分析 | 一条 SELECT 语句跑崩了 MySQL ,怎么回事?

作者刘开洋爱可生交付服务团队北京DBA,对数据库及周边技术有浓厚的学习兴趣,喜欢看书,追求技术。本文来源原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。在很多疑难问题的排查中,小编最近又遇到了一个select语句执行就会导致MySQL崩溃的问题,特来分享给大家。...

ActionTech的博客 2794

故障分析 | ClickHouse 集群分布式 DDL 被阻塞案例一则

作者:任坤 现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 1、背景 线上有套10节点clickhouse集群,5分片 * 2副本,版本19.7.3。 开发执行一个创建分布式表的操作,9个节点都成功返回,有个节点报错,返回信息如下: Code: 159. DB::Exception: Received from 127..

ActionTech的博客 2675

故障分析 | 一次因为超过最大连接数的登陆限制

作者:王翔飞 爱可生研发团队测试成员,负责数据库管理平台的测试工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文关键字:最大连接数、TCP协议、MySQL协议、参数配置 现象 在测试某功能时,将 mysql 的最大连接数设置为 120,使用 sysbench 并发 200 插入数据, 上述错误是预期内的结果,因为 sysbench 的 200 个并发超过了 mysql 实例最大连接数; 随后,修改 sysbench 并发数为 100(.

ActionTech的博客 2565

故障分析 | MySQL 临时表空间数据过多导致磁盘空间不足的问题排查

作者:宗杨 爱可生产品交付团队成员,主要负责公司运维平台和数据库运维故障诊断。喜爱数据库、容器等技术,爱好历史、追剧。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 一、事件背景 我们的合作客户,驻场人员报告说一个 RDS 实例出现磁盘不足的告警,需要排查。 告警信息: 告警内容: 数据库 data 磁盘不足,磁盘占用 80% 以上 数据库 binlog 磁盘不足,磁盘占用 80% 以上 二、排查过程 登陆告警的服务器,查看磁盘空间,并寻找大容量.

ActionTech的博客 2260

故障分析 | 有效解决 MySQL 行锁等待超时问题【建议收藏】

作者:xuty 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 一、背景 #### 20191219 10:10:10,234 | com.alibaba.druid.filter.logging.Log4jFilter.statementLogError(Log4jFilter.java:152) | ERROR | {conn-105...

ActionTech的博客 2213

故障分析 | MySQL 启动遭遇 Permission denied 失败案例一则

作者:任坤现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

ActionTech的博客 2100

故障分析 | MySQL 使用 load data 导入数据错误的一个场景

作者:刘晨网名 bisal ,具有十年以上的应用运维工作经验,目前主要从事数据库应用研发能力提升和技术管理相关的工作,Oracle ACE ,腾讯云TVP,拥有 Oracle OCM & OCP 、EXIN DevOps Master 、SCJP 等国际认证,国内首批 Oracle YEP 成员,OCMU 成员,《DevOps 最佳实践》中文译者之一,优快云 & ITPub 专家博主,公众号"bisal的个人杂货铺",长期坚持分享技术文章,多次在线上和线下分享技术主题。本文来源:原创投稿。

ActionTech的博客 1987

故障分析 | MySQL:唯一键约束失效

作者:胡呈清 爱可生 DBA 团队成员,擅长故障分析、性能优化,个人博客:https://www.jianshu.com/u/a95ec11f67a8,欢迎讨论。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 最近遇到一个故障:单主模式5节点 MGR 集群,在使用 mysqlshell 导入数据时,所有secondary节点报错唯一键冲突退出集群。最终得到的结论是:mysqlshell importTable() 导入数据时会做 SET uniqu.

ActionTech的博客 1980

故障分析 | MySQL : slave_compressed_protocol 导致 crash

作者:胡呈清 爱可生 DBA 团队成员,擅长故障分析、性能优化,个人博客:https://www.jianshu.com/u/a95ec11f67a8,欢迎讨论。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 现象 MySQL版本:8.0.18 create.sql:zabbix 初始化脚本,包含建表、插入数据语句,10M+大小 一个新客户,部署了一套我司的数据库管理平台,接管进来一主两从实例,其中一主一从在无锡机房,为半同步复制,另一个从库在北京.

ActionTech的博客 1951

故障分析 | MySQL 相同 SQL 不同环境执行时间不一样案例分析

书写SQL时,心里要明白哪种执行计划是最优的,比如多张表关联时,是否可以适当利用标量子查询、排除干扰驱动表选择因素,使执行计划简单稳定。

ActionTech的博客 1941
上一篇: 故障分析 | OceanBase 一则函数报错问题分享
下一篇: 技术分享 | 如何优雅的删除 Zabbix 的 history 相关历史大表
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值