支撑日均百亿次护航,数据库自治服务DAS在双11护航中焰炼升华-阿里云开发者社区

开发者社区> 阿里云数据库> 正文

支撑日均百亿次护航,数据库自治服务DAS在双11护航中焰炼升华

简介: 第12个双11已圆满结束,但对技术的探索永不止步。每年双11,不仅仅是剁手族的狂欢节,更是数据人的“大考”,是检验阿里云数据库技术团队技术水平与技术创新实践的舞台。本站已陆续推出双11护航背后的数据库技术实践与经验分享系列干货文章,敬请关注!今天为数据库自治服务DAS的技术解析。

引言

每年一度的双11购物狂欢节,数据库自治服务DAS以持续的创新为之保驾护航, 同时也在延续它一次次华美的蜕变。 从最初面向DBA的工具化辅助诊断,到2017年Self-driving Platform理念提出,开始孵化和锤炼数据库自治能力,2018年DAS自治能力逐步覆盖集团全网数据库实例,如自动SQL优化、自动空间、自动异常修复等, 2019年11月,为更好服务客户,混合云数据库管理HDM+ CloudDBA+自治能力,正式升级为数据库自治服务DAS,将锻炼出来的技术,通过云这样的开放平台汇聚起来,不仅服务自己,还可以服务我们的客户,又一次完成了蜕变。

唯有担当,才能蜕变出生命的华美。 2020年的双11,DAS以更加稳定、完备的自治能力,护航范围兼顾集团和云上客户。在集团,依托全网覆盖的数据库自治能力,自动SQL优化已累计实现超4900万慢SQL自动优化,自动空间优化累计优化超4.6P,自动异常修复覆盖电商等多场景数十万实例,自动处理异常覆盖超90%,实现“1-5-10”异常自愈能力, 即1分钟发现,5分钟定位,10分钟恢复 ,为双11大促数据库稳定性提供了强有力的保障,同时也带来大量人力投入成本节省。同时,DAS为数十万的云上客户提供了大促全生命周期护航,从大促前的健康巡检、风险识别、问题修复、SQL优化等,从到大促中的自动SQL限流、自动扩容、护航大盘,到大促后的现场保存、大促总结,大促期间共产生了上百万份的巡检报告、每天进行数百亿次异常检测,为近万的实例提前发现异常、并完成自动修复和优化,实现故障自动消除,帮助客户平稳度过双11。

数据库自治服务DAS

DAS核心理念本身也是来源于过往双11对数据库智能化技术趋势的思考,阿里拥有业界最富有经验的DBA,海量的性能诊断数据, 如何把阿里巴巴丰富数据库领域知识、经验、大数据以及机器智能技术结合起来,为数据库加上“自动驾驶”引擎,在数据库稳定性、效率、成本上实现最大化。 在云原生时代,更是如此,应用开发者期望能够专注于自身的业务创新,而彻底摆脱数据库运维负担,让数据库高度自治。工业界和学术界在自治数据库方向达成了高度的一致,如CMU创建自治数据项目Peloton,旨在实现混合负载下的全自治。数据库自治服务DAS,就是以数据库自动驾驶为理念,基于数据驱动、专家经验和机器学习的智能化驱动,让数据库具备自感知,自恢复,自优化、自安全能力,就如同汽车被赋予自动驾驶能力。

1.png

图: 数据库自治服务(DAS)核心理念

上图是数据库自治服务(DAS)核心理念示意图, 这些也是它在整个设计、研发、落地过程中,被始终如一地遵循和贯彻的理念:

• 数据驱动,通过海量实时数据收集,如性能指标,负载SQL的请求日志、运维变更日志等等, 以此为基础,构建探测能力,具备环境、态势的实时感知、异常实时发现能力;
• 机器学习和数据库领域专家经验的深度融合,可以根据业务场景自己做出决策,具备自我决策能力;
• 自动执行能力,根据自治中心决策,自动进行任务编排,自动完成决策的执行;

最后通过打造闭环能力来实现它们之间的协调, 最终实现自治能力,如从异常发现,到基于根因分析的全局决策,再到修复、优化的决策执行,最后到持续的效果跟踪评估,反馈与回滚等,整个闭环,实现了无人工参与的自治场景支持。同时,数据库自治服务系统自身具备不断构建自学习能力,例如异常的自动标注、案例系统、异常模拟、量化反馈评估等,依托线上业务场景的丰富性积累,沉淀大量案例,以案例为驱动,加速自我进化,不断提升自治的有效性。

基于以上理念,数据库自治服务(DAS)已拥有 6大核心自治特性:7 x 24实时异常检测、故障自愈、自动优化、智能调参、自动弹性、智能压测。下面逐一展开,并辅以双11期间的实际案例,来看看它们的具体表现。

DAS核心自治技术

7 x 24实时异常检测

2.png

图: 7 x 24实时异常检测

DAS的7X24实时异常检测通过机器学习算法,实时对数据库的Workload进行异常检测,相比传统基于阈值的告警方式,能够更及时的发现数据库的异常,而不是靠故障驱动。数据指标采集链路实现上百项数据库性能指标、以及负载SQL请求日志等,海量数据的离在线处理与存储,基于机器学习和数据库领域预测算法,实现各业务数据库实例的持续模型训练,结合流式和大数据分析计算框架,进行实时模型预测和实时的异常检测分析。相比传统基于规则和基于预值的方式,实时异常检测具备以下优势:

• 检测范围更广,例如不仅限监控指标, 还包括SQL、日志、锁等;
• 实现准实时的检测,大大超前传统方式发现异常;
• 基于AI和异常驱动的检测技术,而非故障驱动的检测;
• 具备周期性识别能力,自适应业务特征,拥有提前预测能力等

3.png

表: 常见Workload 场景时序特征

如上表,现实中常见的workload场景,如毛刺特征、周期性特征、趋势性特征、均值偏移特征等, 异常检测服务都能够准确自动识别,并支持多种时序特征叠加识别,识别出异常后, 会触发基于根因的全局诊断分析,以及后续的异常恢复、优化自治场景。

故障自愈

通过7 x 24实时异常检测, 数据库实例异常完成实时检测发现,DAS自动进行根因分析,自动执行相关止损/修复操作,帮助数据库自动恢复,减少对企业业务的影响。例如,自动SQL限流就是其中典型自治场景。如下图是双11期间自动SQL限流一个实际案例:

4.png

图: 自动SQL限流案例

某自治服务接入实例,于2020年11月5日12点31分,活跃会话数和CPU开始骤然飙升,DAS异常检测中心于12点33分确定此次飙升为一次数据库异常而非抖动尖刺,触发SQL自动限流根因诊断,12点34分诊断完成,共发现两条导致该次异常的问题SQL,发现问题SQL后随即发起自动限流,活跃会话数开始降低,存量已提交问题SQL执行结束后,活跃会话数开始急速恢复,CPU使用率同时也恢复到正常。整个过程满足“1-5-10”异常自愈能力, 即1分钟发现,5分钟定位,10分钟恢复。

外置式SQL自动优化

数据库自治服务(DAS) 基于全局workload和真实的业务场景,持续对数据库进行SQL Review和优化,就像有一个不知疲倦的专业DBA一直在守护着您的数据库。

5.png

图: 自动SQL优化中SQL优化诊断

按照经验,约80%的数据库性问题可通过SQL优化手段解决,但SQL优化一直以来都是一个非常复杂的过程,需要多方面的数据库领域专家知识和经验,另外,由于SQL工作负载不断变化,SQL优化还是一项非常耗时繁重的任务,这些都决定了SQL优化是一项高门槛,高投入且非常专业的工作。数据库自治服务(DAS) 基于全局workload和真实的业务场景,持续对数据库进行SQL Review和优化,就像有一个不知疲倦的专业DBA一直在守护着您的数据库,将SQL优化推向了更高的境界。同时,DAS的SQL诊断能力本身又有与传统与众不同的技术特征,如:

• 它采用外置式的,基于代价模型方式,实现索引、语句改写推荐,以及性能瓶颈问题识别和推荐,避免传统规则式的,过于机械化,推荐质量无法保证,无法量化性能提升收益等问题;
• 测试用例形式化特征库,线上案例的自动反馈提取技术,以及阿里巴巴的应用场景多样性, 我们构建了足够覆盖度的;
• 基于全局的Workload优化,基于Workload特征,例如SQL执行频率,读写比等进行优化,最大限度地,消除局部优化的片面性弊端;

下面是双11期间自动SQL优化一个实际案例:某自治服务接入实例, DAS于11月7日通过负载异常检测到因慢SQL引起的负载异常,自动触发SQL优化闭环,优化上线后,经过持续24小时优化效果跟踪完成优化收益评估,优化效果显著,如优化之前后的平均RT及扫描行数如下图所示:

6-1.png

图: 自动SQL优化前平均RT及扫描行数


6-2.png

图: 自动SQL优化后平均RT及扫描行数

据统计,在优化之前,被优化SQL的平均扫秒行数为148889.198,平均RT为505.561毫秒。而优化之后,平均扫描行数为12.132,大约降为优化前的万分之一,而平均RT降至0.471毫秒,也大约降低到优化前的千分之一。

自动弹性

云上数据库提供基于计算规格的选项以及存储容量供用户选择,当用户业务Workload规模变化时可适当进行弹性扩缩容,但对于云原生应用而言,数据库能够根据业务Workload的变化自动决定最合适的规格,使用最小的资源完成业务所需的数据库容量,是用户所期望的,这也是数据库“自治”能力的体现。DAS基于AI的时序列预测,能够自动对数据库的业务模型、容量水位进行计算和预测,实现及时按需(或先知先觉式)自动扩缩容。

DAS的自动弹性实现了一套完整的数据闭环,包含性能采集、决策中心、算法模型、规格建议模块、管控执行以及任务跟踪评估等。性能采集负责对实例进行实时性能数据采集,涉及数据库的多项性能指标信息、规格配置信息、实例运行会话信息等;决策中心模块则会根据当前性能数据、实例会话列表数据等信息进行全局判断,以基于根因的全局自治,例如可通过SQL限流来解决当前计算资源不足的问题则会采取限流处理;若确实为突增的业务流量,则会继续进行弹性服务流程;算法模型是整个DAS 自动弹性服务的核心,负责对数据库实例的业务负载异常检测和容量规格模型推荐进行计算,解决核心的扩容时机、扩容方式、计算规格选择问题;规格建议校验将产出具体建议,并针对数据库实例的部署类型和实际运行环境进行适配,并与当前区域的可售卖规格进行二次校验,确保的建议能够顺利在管控侧进行执行;管控执行负责按照产出的规格建议进行分发执行;状态跟踪最后用于衡量和跟踪规格变更前后数据库实例上的性能变化情况。

下面是双11期间自动SQL优化一个实际案例:

7.png

图: 自动弹性案例

某自治服务接入实例,用户的业务流量不断上升,实例(PolarDB)的CPU使用率不断飙高并达到了高负载状态,此时DAS的Autoscaling算法精确的识别出了实例当前的异常状态,于是自动为实例增加了两个只读节点,实例的CPU使用率成功降到了较低的水位;在维持该状态两个小时后,用户实例的流量依然在不断上升,并第二次触发DAS的Autoscaling,DAS Autoscaling将实例的规格从4核8GB升级到8核16GB,并平稳持续了10多个小时,帮助用户顺利度过了业务高峰期。

智能压测

8.png

图: 轻量级、个性化的智能压测

DAS提供的“智能压测”服务能够帮助用户在上云或在业务大促前评估所需的数据库规格容量(将在后续章节重点介绍);规格自动扩容AutoScale能力能够帮助用户在指定配置的数据库性能阈值,或根据DAS内置智能化策略自动动触发扩缩容动作,从而一定程度上解决了用户做规格评估和管理的负担。

传统的压测方案大部分基于现有的压测工具,如sysbench、TPCC等,其最大的问题是这些压测工具对应的SQL与真实业务差距太大,压测结果无法准确反映出真实业务的性能和稳定性。DAS提供的智能压测服务是基于用户真实业务的workload,因此压测结果可以直接体现在不同压力下的性能和稳定性变化。达到该目标,智能压测需要解决如下挑战:

• 在不能采集大量SQL的情况,如何提供长时间压测,如7x24小时稳定性压测。因为SQL采集需要时间和存储成本,在给定部分SQL的情况,DAS需要生成满足业务要求的SQL。
• 并发回放能力。DAS需要保证和真实业务一致的并发,并能够提供倍速(如2倍速、10倍速等)和峰值压测功能。

DAS通过自动学习业务模型,自动生成符合压测时间的真实业务Workload,同时提供给用户更丰富的压测场景,帮助用户解决大促、数据库选型等问题。

智能调参

数据库的参数成百上千,用户的业务场景多种多样,靠人肉的方式很难讲参数调整为最优的配置,通过基于机器学习技术,和智能压测相结合,可以为每个数据库实例的自动推荐最优的参数模版。云上常用数据库如MySQL、PolarDB配置参数多达几百个,同时每个参数的范围从几十到几万,甚至几十万不等。配置参数的过程相当于从巨大的多维空间中搜索出满足目标(如提升TPS,或降低latency)的参数值。DBA通常是通过经验,或者直接使用默认参数值设定配置。然而,不同workload,不同硬件对应的参数都会发生变化,就算有经验的DBA也无法保证对参数配置的有效性,云上大量的中小企业甚至没有专门的运维人员,对于最优参数基本无法设定和调整。因此,数据库参数设置存在如下挑战:

• 参数组合空间巨大,全部遍历为NP-hard
• 调参依赖经验,无法保证参数的有效性
• 云上Workload存在多样性,不同Workload的参数不同
• 硬件(规格)异构,不同硬件规格下,对应的参数不同

9-1.png

图: 智能调参系统示意图


9-2.png

图: 智能调参算法

DAS通过高效的机器学习手段,将调参看做黑盒优化问题,进行迭代学习,对于不同Workload的TPS提升有15%-55%,整个过程能在3-5个小时约100个迭代步内完成。基于阿里巴巴集团内部丰富的Workload和硬件基础设施,离线学习出不同种类workload和硬件规格的特征和参数,再通过偏序关系的匹配和Meta Learning,在线拟合出适配给定目标workload的模型,通过少量迭代便可以快速学习出目标workload的参数值,可以在缩短到1个小时以内约10-30步以内找出理想的参数。

结束语

通过数据库自治服务DAS,可以帮助企业节省90%的数据库管理成本,降低80%的运维风险,让用户可以更集中在业务创新,让业务持续行驶在快车道上。在阿里,我们以十一年为一个轮回思考双 11,今年是双 11 新轮回的起点。数据库自治服务DAS跟随着它、护航着它,基于创新的蜕变将持续延续。

了解更多详情可点击:https://www.aliyun.com/product/hdm

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云数据库
使用钉钉扫一扫加入圈子
+ 订阅

帮用户承担一切数据库风险,给您何止是安心!

官方博客
链接