据相关报告显示,未来数字经济发展的核心是数据库,而数据库的核心是运维,各行各业每天都在上演着各类数据库与运维的故事,接下来的故事便与此相关。
D 用户之前一直使用虚拟机上自建的数据库服务,2019 年 3 月份迁移到华为云后直接购买了 RDS SQL Server 2016 标准版托管实例,此后系统一直稳定运行,最近因为业务量的增加出现了一些问题。一经发现,华为云方立马积极解决。
与数据库的三次“交锋”
第一次故障处理,快速帮助用户恢复业务
7 月中旬,D 用户虚拟机性能急速下跌,业务提交受影响。华为云后台监控也收到该实例的性能告警,CPU 突然上涨过阈值。为保障用户业务连续性,在征得客户同意后,华为云技术专家在后台对该实例进行性能优化,快速将用户的实例性能降低到合理水平,用户服务恢复正常运作。
图中为客户业务 7 月 2 日 14:00 出现问题时的 CPU 使用情况,从图中可以看到用户业务上升到 80%以上,华为云技术专家快速响应,在 14:30 左右将负载下降到 65%,帮助用户恢复业务正常运转,其后经过多次努力将用户压力降回原来的正常水平(25%左右)。
第二次故障处理,问题复现深挖根因
上次报障后华为云数据库运维人员在用户实例后台开启了深度事务监控,以保障下次问题出现时所有数据库服务上的事务均可追溯;同时针对该类事件现象准备了相关脚本,确保问题能够快速被追踪出来。
该问题在一周后再次复现,华为云方在收到运维自动预警的第一时间内登录用户后台,通过查询 DMV 动态视图分析当前实例上正在运行的 SQL 语句资源消耗情况,快速定位出该实例上资源消耗最高的语句,以及相关事务依赖关系。针对该语句 T-SQL 查询计划进行分析后发现,该语句的执行计划在缓存中频繁更新。
华为云方在查询这些表的索引信息后发现,其中一张表的索引碎片已经超过 50%的预警值,同时发现该表的索引碎片劣化异常。在将该表问题反馈给客户后,客户立马指出:“这张表数据量属于异常情况,正常应该是 10 多万,现在是 1 千万以上!”抓取到根因,华为云建议用户定时对该表进行周期性归档,避免数据暴涨。
第三次故障处理,持续帮助用户定位自身业务潜在风险
随后一周,用户业务偶发超时问题。为了帮助用户分析定位该问题的根因,华为云对客户发生问题时间段的所有日志明细进行了排查。
华为云首先抓取了用户问题发生的时间段 8 个小时内的所有日志进行分析;
其次根据其中的事件异常记录,逐级向上进行排查,最终确认引发超时的问题都属于同一类事件造成;
最后针对查询到的 273 次该类事件记录,从中找出问题的根因在于第一次事务提交中有更新锁存在,且第一次事件未正常提交后,该进程每两分钟又会自动发起一次重试,同时每次重试也依然会被锁住。
华为云方将日志中的具体异常明细提交给客户进行确认,同时组织视频会议,和客户方的技术人员一起逐一对怀疑点进行核对排查,最终确认该问题是因为近期用户业务形态发生改变才引入的新场景下的 BUG。
该问题在过去几年中从未发生过,超时是因为在同一个事务中向同一张表插入了类似数据,同时该表后台有一个表级触发器,会根据插入的数据更新其他表上的关联数据;在更新过程中因为该对象上相同数据更新未提交导致更新锁发生。
因此,华为云建议客户确认修改业务提交流程,降低事务粒度,一次插入、一次提交以规避该问题。针对客户方的应用服务器在该事务提交异常后,会每 60 秒重试一次,导致出现 8 个小时的异常提交事件,华为云提议客户修改重试次数上限为 3 次,并对每次请求进行独立闭环。
经过三次交锋,在用户业务量突然暴增,业务场景发生变化的情况下,华为云 RDS 运维人员采用专业技术手段帮助客户系统平稳地度过;同时应用上的缺陷也被识别出来,杜绝了隐患。
选择华为云 RDS 的理由:
1.相比自建数据库,RDS 服务有更加详细的数据库监控指标,能够比弹性云服务提供更多维度监控视角,给出更详细的监控日志和事件记录。
2.相比自建数据库,RDS 服务能定位出深层次的问题,包括应用的问题,从而一劳永逸地解决问题。
3.相比自建数据库,华为云有全栈数据库专家团队,可以帮助客户识别各种数据层面的深层次问题,比如索引、数据的分区、数据的类型、SQL 语句、慢 SQL 等等,让客户的 IT 人员更加聚焦应用,脱离繁重的运维。
请不要犹豫,少加班,防跑路,问题能托住,选择华为云数据库 RDS 服务!
目前,华为云数据库特惠专场正火爆进行,不限新老用户 5 折起,迁移后获赠 6 个月免费使用时长,更多详情了解请前往华为云官网。
本文转载自 HW 云数据库公众号。
评论