随着数字化转型的加速,信息量爆发式增长,用户对数据库运维能力要求更高,完成对数据库的高效智能管理,特别是业务异常、数据库异常时,数据库运维平台能自动定位故障并修复,或者提供有价值信息,帮助客户快速定位解决问题。

华为云数据库团队打造的RDS for MySQL智能DBA助手,为数据库管理人员带来了一站式数据库运维方案,可以帮助用户快速处理异常,维持业务平稳运行。最近,还新上线了自治限流功能,通过限流非核心业务SQL来保障核心业务平稳运行,下面MySql教程网将为您提供此项业内领先的功能的详细解读。

在遭遇流量高峰数据库异常时,怎样处理?

在实际运维场景下,客户由于业务变更或是业务高峰期会带来流量高峰,导致系统指标异常,案例CPU飙涨近100%,会话SQL处理变慢,活跃连接数增加,数据库响应异常甚至不能用。可能的原因有以下两方面:

SQL问题:SQL执行效率慢,如对无主键、无检索的表进行查询操作时,CPU和IO被加满。

流量问题:突发的流量急剧上升,数据库容量达到瓶颈,影响正常业务。

流量高峰时数据库异常解决方法:

针对以上问题,一般会使用两种形式去处理:

方式一:先分析异常SQL,定位后手动Kill会话;

方式二:简单直接,重启数据库。

但面对复杂问题,传统解决方法通常无法有效解决,定位解决问题花费时间长,造成业务损伤。针对这一挑战,业内选用限流的方式来处理,不区分业务,即不会区分限流SQL所在的库或是客户端用户,这可能造成无差别的kill会话,核心业务损伤。

本文介绍的自治限流功能是如何应对流量高峰时数据库异常这一潜在风险呢?

自治限流,是指通过预先设定限流策略,自动限制执行SQL的并发度,通过小部分业务损伤,保障核心业务的正常运转。具体来说,能通过以下三个策略去进行流控:

分库、分用户设定限流范围

自治限流功能支持分库、分用户两种形式设定,客户根据业务状况,识别核心业务库和客户端用户,按需挑选相应的限流方式。

按库设定:根据业务重要程度,挑选对特定的一个或是多个库进行限流,默认不区分库名。

按用户名设定:根据不同用户业务差别,挑选对特定的一个或是多个用户进行限流,默认不区分用户。

设定限流时间

通过设置限流时间窗(即自治限流功能只在该时间段起效)和每次最大限流时间(即自治限流生效后持续时间),方便定位SQL异常,请注意:同一天只在该时间窗内起效一次。

设定限流策略

条件1:根据业务状况,设定CPU利用率大于多少【且/或】活跃会话数大于多少,且上述条件持续时间大于多少分钟,会开启限流。

条件2:设定许可的最大活跃并发数,当前活跃会话数大于最大活跃会话数时,会把会话数清理到低于最大活跃会话数。

设置页面如下:

自治限流
自治限流

完成上述设置后,自治限流功能可以自动检测客户案例异常,开启限流策略后,根据配置的限流范围与时间,自动进行分库分用户限流处理,在确保核心业务SQL平稳运行的前提下,限定引起CPU飙涨的新上业务SQL,带来活跃会话数逐渐减少,CPU下降至标准值,QPS恢复到业务正常水平,数据库案例恢复正常。

流量高峰往往是不可预测的,数据库异常将不定期出现,这给运维带来非常大的挑战和工作负担。华为云数据库自治限流功能,通过分库与分用户限流方式,自动检测数据库异常,并及时进行限流处理,保障核心业务的稳定运行,极大缓解了DBA的运维压力,使之更聚焦数据架构模式以及数据价值挖掘等核心工作。

推荐阅读:Oracle数据库安全隐患排查及维护措施