当前位置: 首页 > article >正文

一次慢改表引发的线上死锁事故复盘

一次慢改表引发的线上死锁事故复盘一、事故背景在一次常规的数据库表结构变更过程中对某核心业务表执行了慢改表操作使用 pt-online-schema-change。操作开始后短时间内触发报警部分接口响应时间显著上升出现请求超时影响约千级请求整个故障持续时间较短约几十秒通过手动干预终止异常事务后恢复。二、事故经过简要11:22:38执行慢改表11:22:40发现接口延迟升高11:22:45尝试中断操作但响应延迟11:22:50排查数据库发现长事务并手动终止11:23:09系统恢复正常三、直接原因在执行慢改表前未检查数据库中是否存在长事务导致慢改表过程中无法获取必要的锁资源从而进入锁等待最终引发类似死锁的阻塞现象。四、什么是“慢改表”在 MySQL 中对大表执行 DDLData Definition Language 数据定义语言如ALTER TABLE通常会带来严重问题表锁metadata lock数据重建业务写入阻塞因此在生产环境中通常采用在线变更方案例如pt-online-schema-change其核心思路是创建新表目标结构在旧表上创建 trigger同步增量数据分批拷贝历史数据最终通过 rename 完成切换整个过程避免了长时间锁表实现“在线变更”。五、关键知识点Metadata LockMDL这是本次事故的核心。MySQL 在访问表时会自动加metadata lock元数据锁普通查询SELECT → 持有MDL读锁DDL操作如 ALTER / CREATE TRIGGER → 需要MDL写锁锁冲突规则读锁共享可以并存 写锁排他必须等待所有读锁释放六、事故根因分析关键1. 长事务的存在系统中存在未提交的事务例如BEGIN;SELECT*FROMtable;-- 未提交该事务会长期持有MDL读锁2. 慢改表的行为pt-online-schema-change 在执行过程中需要创建 triggerDDL操作 → 需要MDL写锁3. 冲突产生此时出现操作锁长事务MDL读锁pt-oscMDL写锁等待中pt-osc 被阻塞4. 为什么会影响业务请求问题并不会停在“阻塞”这一层而是继续扩大pt-osc 已经占用部分资源连接、锁等新的业务请求进入数据库请求开始排队等待锁最终表现为请求RTResponse Time 响应时间升高接口超时系统报警七、为什么“Ctrl C”无法立即中断这是一个常见误区。MySQL 中DDL操作如创建 trigger正在等待锁的线程不会立即响应中断信号因此Ctrl C 可能延迟甚至无效必须通过KILL或处理阻塞源长事务八、正确的操作流程慢改表标准 Playbook为了避免类似问题再次发生所有线上慢改表操作必须遵循标准化流程。该流程不仅包含“是否能执行”的判断还包括“如何安全执行”。1. 执行前检查强制步骤1检查长事务SELECTtrx_id,trx_started,trx_mysql_thread_id,trx_queryFROMinformation_schema.innodb_trx;重点关注事务运行时间trx_started30秒需要评估风险60秒必须处理SQL内容trx_query全表扫描大查询未提交事务若存在长事务优先联系业务方确认紧急情况下可执行KILLthread_id;2检查锁等待情况SHOWPROCESSLIST;或SHOWENGINEINNODBSTATUS;确保当前数据库没有异常锁竞争3检查表结构SHOWCREATETABLEyour_table;确认表是否存在主键必须是否已有 triggerpt-osc 不支持2. 执行慢改表标准命令推荐使用 pt-online-schema-change 工具。示例命令pt-online-schema-change\--host127.0.0.1\--port3306\--userxxx\--passwordxxx\--databaseyour_db\--tableyour_table\--alterADD COLUMN new_col INT DEFAULT 0\--chunk-size1000\--max-loadThreads_running25\--critical-loadThreads_running50\--sleep0.1\--set-varsinnodb_lock_wait_timeout50\--print\--execute关键参数说明--alter要执行的DDL语句--chunk-size分批拷贝的数据量影响性能与风险--max-load数据库负载阈值超过自动暂停--critical-load极限负载超过直接终止--sleep每批之间的休眠时间用于降压--print输出执行过程建议开启3. 执行过程监控在慢改表执行期间需要持续观察系统状态1观察执行进度pt-osc 会输出当前进度如 10%、20%2观察数据库负载SHOWPROCESSLIST;关注Threads_running是否出现大量 Waiting 状态3异常处理若出现卡顿或异常检查是否有新产生的长事务必要时终止异常连接无法恢复时中断操作Ctrl C 或 KILL4. 执行完成后的确认1确认数据一致性SELECTCOUNT(*)FROMyour_table;2确认业务状态接口响应时间RT错误率3旧表处理慢改表会保留旧表如_old表DROPTABLE_old_table;建议保留一段时间后再删除用于回滚兜底5. 总结慢改表并不是“无风险操作”其安全性依赖于执行前的环境检查尤其是长事务执行中的负载控制执行后的完整验证任何一步缺失都可能导致线上故障。九、总结这次事故的本质可以归结为一句话在线DDL虽然避免了长时间锁表但仍依赖 metadata lock。一旦存在未提交的长事务会阻塞DDL获取锁进而引发锁等待甚至死锁最终影响业务请求。十、可沉淀的工程经验所有线上DDL必须有前置检查步骤长事务是线上数据库的隐形杀手不要相信“慢改表一定安全”必须建立标准化 playbook 并严格执行十一、后续优化方向建立慢改表执行 checklist强制流程增加长事务监控与报警自动化检测脚本执行前校验低峰期执行变更操作

相关文章:

一次慢改表引发的线上死锁事故复盘

一次慢改表引发的线上死锁事故复盘 一、事故背景 在一次常规的数据库表结构变更过程中,对某核心业务表执行了慢改表操作(使用 pt-online-schema-change)。操作开始后,短时间内触发报警: 部分接口响应时间显著上升出现请…...

有些路看起来很难走,其实是在带你慢慢变强

生活里,很多人都希望自己走的是一条轻松一点、顺利一点的路。最好努力了就能有结果,付出了就能被看见,遇到的问题也都能很快解决。可真正经历过一些事情后才会发现,人生并不会总按照理想的节奏前进。很多时候,那些让人…...

突破可视化边界:Charticulator重新定义数据叙事的技术实践

突破可视化边界:Charticulator重新定义数据叙事的技术实践 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 在数据可视化领域,传统工具往往…...

【帮宝抑菌膏】宝宝额头起红疹子怎么办?宝妈必看的原因与护理指南

宝宝额头突然冒出一片片红疹子,不仅让宝宝难受哭闹,更让新手父母揪心不已。作为深耕母婴护理领域十余年的专业品牌,帮宝凭借丰富的育儿指导经验和科学护理方案,为宝妈们提供全方位的解决方案。当发现宝宝额头起红疹子时&#xff0…...

OpenCascade实战:TopoDS_Shape数据结构的高效遍历与优化策略

1. TopoDS_Shape数据结构基础解析 在OpenCascade中,TopoDS_Shape是构建三维模型的基石。这个看似简单的类实际上包含了三个关键数据成员:myTShape、myLocation和myOrient。理解这三个字段的运作机制,是高效操作模型的前提。 myTShape是一个智…...

用Multisim 14.0复刻经典:手把手教你搭建一个能校时的数字电子钟(附完整仿真文件)

用Multisim 14.0打造高精度数字电子钟:从原理到仿真的完整实践指南 在数字电路的学习过程中,没有什么比亲手搭建一个功能完整的数字电子钟更能检验学习成果了。这个看似简单的项目实际上涵盖了振荡器、分频器、计数器、译码显示和校时电路等数字电路的核…...

如何用Obsidian构建你的个人知识管理系统:终极完整指南

如何用Obsidian构建你的个人知识管理系统:终极完整指南 【免费下载链接】kepano-obsidian My personal Obsidian vault template. A bottom-up approach to note-taking and organizing things I am interested in. 项目地址: https://gitcode.com/gh_mirrors/ke/…...

Windows右键菜单终极清理指南:3步让你的右键菜单重获新生

Windows右键菜单终极清理指南:3步让你的右键菜单重获新生 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为每次右键点击文件时弹出的杂乱菜单而…...

OpenClaw龙虾推出官方中国镜像站,由字节跳动提供支持

文章目录前言龙虾是谁?为啥它搞个镜像站这么重要?中国镜像站来了:地址是 mirror-cn.clawhub.com背后的故事:腾讯、字节、龙虾的"三国演义"镜像站的意义:不只是个"加速器"怎么用?手把手…...

如何用ContextMenuManager彻底掌控Windows右键菜单?4阶段优化法让操作效率提升300%

如何用ContextMenuManager彻底掌控Windows右键菜单?4阶段优化法让操作效率提升300% 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单是…...

零下20度实测:国产SysMax PCAN FD在寒区标定中的稳定性与兼容性全记录

零下20度极限挑战:SysMax PCAN FD在寒区汽车电子标定中的实战全解析 当清晨的内蒙古满洲里气温骤降至-20℃,大多数电子设备早已进入"冬眠"状态,而我们的汽车电子标定工作却必须继续。在这个被称为"中国冷极"的地区&#…...

Oracle 数据库中的 REF 类型与触发器的使用

在 Oracle 数据库中,引用类型(REF)是对象类型之间关联的一种强大工具。特别是在复杂的企业应用中,REF 类型可以帮助我们建立对象间的引用关系,模拟现实世界的关系模型。本文将通过一个实际的例子,介绍如何在 Oracle 中使用 REF 类型,以及如何通过触发器(Trigger)来确保…...

如何快速配置跨平台鼠标连点器:终极效率提升指南

如何快速配置跨平台鼠标连点器:终极效率提升指南 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界面美观 ,操作直…...

Qwen3.5-2B轻量模型评测:端侧推理延迟、功耗、准确率三维平衡点实测

Qwen3.5-2B轻量模型评测:端侧推理延迟、功耗、准确率三维平衡点实测 1. 模型概述 Qwen3.5-2B是通义千问团队推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。该模型专为低功耗、低门槛部署场景设计&#xf…...

Pixel Aurora Engine部署案例:边缘计算设备(Jetson Orin)轻量化部署

Pixel Aurora Engine部署案例:边缘计算设备(Jetson Orin)轻量化部署 1. 项目背景与价值 Pixel Aurora Engine是一款基于AI扩散模型的创意工具,专为生成复古像素艺术设计。其独特的8-bit游戏风格界面和高效生成能力,使…...

新零售系统开发的关键要素

新零售系统开发需要整合线上线下资源,实现数据驱动的智能化运营。以下是核心开发要点:技术架构设计采用微服务架构实现系统模块化,支持高并发场景。前端可选用React/Vue构建跨平台应用,后端推荐Spring Cloud或Node.js。数据库根据…...

基于七自由度车辆模型的 UKF 与 EKF 参数估计之旅

基于七自由度车辆模型的UKF,EFK对质心侧偏角,横摆角速度,纵向车速的估计。 七自由度车辆动力学模型 UKF无迹卡尔曼滤波 EKF扩展卡尔曼滤波 质心侧偏角 横摆角速度 纵向车速 参数估计 提供参考文献pdf 车辆模型建模word文档 UKF学习文档等在车…...

类OpenClaw智能体优选指南,企业级+个人级全覆盖

2026年初,OpenClaw开源智能体框架凭借“自主规划、工具调用、端到端执行”的核心能力,打破传统AI“只对话不行动”的壁垒,在GitHub迅速斩获25万星标,引发全球科技圈热潮,国内厂商纷纷入局推出类OpenClaw产品&#xff0…...

零代码构建智能安防平台:WVP-GB28181-Pro的5个技术突破

零代码构建智能安防平台:WVP-GB28181-Pro的5个技术突破 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持…...

DistroAV技术解析:NDI网络视频传输的OBS插件解决方案

DistroAV技术解析:NDI网络视频传输的OBS插件解决方案 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 在当今的直播和内容创作领域,网络视频传输技…...

快速使用 Docker 设置 Nexior AI 平台

Nexior 是一个开源项目,允许用户轻松部署自己的 AI 应用网站,功能包括 AI 问答、Midjourney 绘图、知识库问答、艺术二维码等。用户无需自己开发 AI 系统、购买 AI 账户或担心 API 支持和支付系统配置,提供零启动成本和无风险的方式通过 AI 获…...

告别“假系”与“低挂”,云酷智能安全带重塑房建、桥梁及外墙装修的高空作业安全

在房建、桥梁建设及外墙装修场景中,吊篮作业的高空坠落风险始终悬而未决。传统管理模式下,“人员不系安全带”或“低挂高用”的违规行为屡禁不止。云酷智能安全带通过物联网技术实现实时监测,已成功应用于中交、中建、中铁等央企项目&#xf…...

2026长沙GEO优化公司权威实测:基于稳定性与转化效率的TOP5服务商深度推荐

2026长沙GEO优化公司权威实测:基于稳定性与转化效率的TOP5服务商深度推荐2026年,生成式AI搜索已深度重塑商业决策与品牌获客的路径。在全国GEO(生成式引擎优化)的版图中,长沙凭借活跃的数字经济生态与扎实的产业基础&a…...

Cesium性能优化:你可能不知道的onTick事件监听器内存泄漏问题

Cesium性能优化:你可能不知道的onTick事件监听器内存泄漏问题 在构建长时间运行的WebGIS应用时,Cesium的流畅渲染往往被视为首要目标。但许多开发者忽略了一个隐形杀手——未被正确清理的onTick事件监听器。这些看似无害的代码片段,会在用户毫…...

阿里云物联网平台OTA升级避坑指南:从版本号上报到Bin文件拉取的全流程排错

阿里云物联网平台OTA升级全链路排错实战手册 当设备固件需要远程更新时,OTA技术无疑是救星。但现实往往比理想骨感——版本号莫名失踪、升级包半路"走失"、设备在关键时刻"装聋作哑"。这些问题不仅耽误进度,更可能让生产线停摆。本文…...

2026年AI Agent元年:从对话式交互到自主任务执行的跨越

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...

CN3881-规格书 如韵电子 10A 降压型同步单节锂电池充电管理集成电路

概述: CN3881 是一款可使用太阳能供电的 PWM 降压模式单节锂电池充电管理集成电路,可独立对单 节锂电池充电进行管理,具有封装外形小,外围元器件少和使用简单等优点。 CN3881 采用涓流,恒流和恒压充电模式,非常适合单节…...

3分钟掌握:如何在Windows上直接安装Android应用的终极方案

3分钟掌握:如何在Windows上直接安装Android应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经遇到过这样的情况:手机上有…...

速腾RS-M1激光雷达到手后,Windows电脑上5分钟搞定点云可视化(保姆级避坑指南)

速腾RS-M1激光雷达开箱实战:Windows系统5分钟点云可视化全攻略 拆开速腾RS-M1激光雷达包装箱的那一刻,多数人的第一反应既兴奋又忐忑——这台价值数万元的设备能否快速展现它的三维感知能力?作为一款广泛应用于机器人导航、三维测绘的高精度雷…...

intv_ai_mk11惊艳效果展示:输入‘设计一个碳中和主题PPT’→大纲+每页文案+视觉建议

intv_ai_mk11惊艳效果展示:输入设计一个碳中和主题PPT→大纲每页文案视觉建议 1. 效果预览:从简单指令到完整PPT方案 当我向intv_ai_mk11输入"设计一个碳中和主题PPT"这个简单指令时,它在30秒内就生成了一个专业级的完整方案。这…...