本文介绍如何使用数据库自治服务DAS应对大促业务。
背景信息
数据库自治服务(Database Autonomy Service,简称DAS)是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助您消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。背景介绍
自2009年起,阿里巴巴每年双11大促业务的峰值和系统的峰值都在不断攀升。随着零售业和其他传统企业数字化转型更加迅速,将来还会有更多企业或平台开展大促业务。大促不仅包括以购物为主要导向的场景,如双11、618、聚划算等,也包括其他类似场景,如几亿人在线协同办公、千万学生并发上课等。
即使不在大促这样高并发的场景中,很多企业也面临着DBA人力资源不足,基础问题和优化问题任务特别多的时候,人员和系统响应会不及时,造成业务问题。而大促时,海量访问、连接风暴、复杂查询等情况对数据库的服务提出极高的要求。
DAS支持MySQL、PostgreSQL、PolarDB、Redis、MongoDB等数据库引擎,经过阿里巴巴业务场景的孵化和锤炼,形成强大的数据库自治能力。DAS已经帮助用户自动优化了超过4200万条SQL,自动回收了4 PB的空间,自动优化了27 TB的内存。
DAS在大促场景下的应用
在大促的过程中,数据库服务扮演了极其重要的角色,在实际业务场景中很多企业都是同时使用多个数据库,这给管理带来了很大难度,在大促的场景中,更加需要一个统一的企业级的数据库管理的平台,提供全局视角,能够高效的发现问题,对问题进行定位和诊断,并进行批量管理和灰度管控。在应用视角,自动同步标签,针对特定的集群和组进行特定的操作;在实例视角,DAS提供针对不同的实例,如MySQL实例等的直接操作。
- 在大促前,可以通过DAS帮助发现问题,容量评估,排除风险,优化空间,针对异常进行排查和诊断。
- 在大促的过程中,可以通过DAS的实时性能大盘进行盯屏,查看业务高峰期数据库是否运行正常,及时发现各类异常,对异常情况进行应急处理等。
- 在大促后,为了帮助企业对整个大促进行复盘和总结,DAS提供诊断报告,对数据库在大促期间的表现进行总结和呈现,为下一次大促做好经验沉淀和业务准备。
大促前
通过RDS数据库使用DAS服务。
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
- 在左侧导航栏中,选择自治服务。
直接使用针对企业级的数据库服务DAS(推荐)
大促中
- 盯屏:实时关注数据库是否正常
大促当天,最重要的工作就是盯屏,即时刻关注(特别是业务高峰期)数据库运作是否正常。DAS提供了多种盯屏方式,例如实时性能大盘、全局自定义监控大盘等,此处重点介绍如何使用实时性能大盘来监控数据库运作情况。
DAS提供了全局的实时性能大盘,可以查看所有接入实例的实时性能情况。如果您的业务正在大促或者正在进行变更,可以通过该功能实时确认数据库健康情况。
- 登录DAS控制台。
- 在左侧导航栏单击实时性能大盘。说明 实时性能页展示了所有接入状态为连接正常的实例实时性能状态,并且会自动刷新。
- 单击右上角的指标解释按钮查看每个指标的含义。说明 若某个实例出现问题,可直接单击实例ID进入实例详情页面查看。
- 查看异常SQL和异常会话
数据库是大部分应用的核心依赖。为防止数据库压力过大,一般都会在应用端做优化和控制。但在以下场景,也需要在数据库端做优化控制。
场景 说明 某类SQL并发急剧上升 例如缓存穿透或异常调用,可能会导致SQL并发量突然上升。 有数据倾斜SQL 例如大促时拉取某个特别大的数据,导致整体系统繁忙。 未创建索引SQL 例如SQL调用量特别大,并且没有创建索引,导致整体系统繁忙。 - 登录DAS控制台。
- 在左侧导航栏单击实例监控。
- 单击实例ID,进入实例详情页面,单击左侧导航栏的实例会话。
- 在实例会话页面,查看目标实例的实例会话和会话统计等详细信息。说明 您可以点击相关的会话,并查看SQL分析信息。
- 应急措施:SQL限流
大促当天,在缓存穿透、应用发布后产生烂SQL、应用流量突增等情况下,数据库会不断中止会话,当重启数据库实例或切换主备等常用数据库运维方案,都没有办法让数据库恢复稳定的场景下,DAS的SQL限流功能可以帮助您发现异常,并且自动找到需要限流的SQL。
- 设置SQL限流规则
目标SQL规则创建后,当应用端使用了同时包含所有关键词的SQL,就会收到1317错误
query execution was interrupted
。- 登录DAS控制台。
- 在左侧导航栏单击实例监控。
- 单击实例ID,进入实例详情页面,单击左侧导航栏的实例会话。
- 在实例会话页面,单击SQL限流。
- 在SQL限流(过滤)对话框,单击创建。
- 填入相应信息,单击创建。
配置 说明 SQL类型 选择SQL类型,取值如下:SELECT、UPDATE、DELETE。 最大并发度 SQL最大并发数,当包含关键词的SQL达到最大并发数时会触发限流策略。如果最大并发度为0,表示禁止包含该关键词的所有请求。 限流时间 SQL限流的生效时间。SQL限流是应急措施,建议您按实际需求设置限流时长,用完及时关闭。 SQL关键词 需要限流的SQL关键词。若您设置多个关键词,则SQL语句中需要同时包含这些关键词才会触发限流规则,多个关键词间用波浪线(~)分隔。
- 查看SQL限流建议
- 登录DAS控制台。
- 在左侧导航栏单击实例监控。
- 单击实例ID,进入实例详情页面,单击左侧导航栏的自治中心。
- 查看异常时间段的SQL限流建议。
- 单击限流。
- 开启自动SQL限流
自动限流规则开启后,当应用端执行了同时包含所有关键词的SQL语句,就会收到1317错误
query execution was interrupted
。- 登录DAS控制台。
- 在左侧导航栏单击实例监控。
- 单击实例ID,进入实例详情页面,单击左侧导航栏的自治中心。
- 在右上角单击开关设置。
- 在开关设置对话框中,打开开启自治服务开关,然后打开自动限流开关,设置自动限流触发条件。说明 例如:在可限流时间段内,自定义触发条件为当CPU使用率大于80%,同时活跃会话数大于64,且该现象持续时间超过5分钟时触发自动限流,同时自动开始跟踪,如果发现故障未消除,则自动回滚该限流操作。自动限流触发后,限流操作持续的时间不会超过最大限流时间。
- 设置SQL限流规则
- 关注高危SQL和SQL注入
大促当天,还需要关注是否有高危SQL和SQL注入。
- 高危SQL:DAS会根据预设的规则库,自动识别三种类型的高危SQL。
- DDL(新建表、修改表结构、修改索引、重命名表等操作)
- 全表更新(例如全表Update、全表Delete等操作)
- 大请求,默认规则是满足下面三个条件中的任意一个:
- 扫描行数大于等于10万
- 返回行数大于等于1万
- 更新行数大于等于1万
- SQL注入
SQL注入是指通过把SQL命令插入到Web表单、域名或页面请求中,最终达到欺骗服务器执行恶意的SQL命令,严重危害数据库的健康。DAS会持续不断地监控和识别数据库中是否存在SQL注入的情况,并且发现访问来源。
- 登录DAS控制台。
- 在左侧导航栏单击实例监控。
- 单击实例ID,进入实例详情页面,单击左侧导航栏的安全审计。
- 单击开启,在弹出框中单击确定。
- 高危SQL:DAS会根据预设的规则库,自动识别三种类型的高危SQL。
大促后
大促结束后,最重要的工作是总结,包括总结本次大促期间是否有异常情况发生,以及从SQL容量或者SQL表现角度总结经验,分析这次大促可以为下次大促沉淀和积累的经验,从而帮助下一次大促更顺利进行。
DAS提供了实例的诊断报告,辅助您的总结工作。您可以查看诊断报告,了解本次大促期间实例的运行信息,例如CPU占用率、Top 5慢SQL等。
- 登录DAS控制台。
- 在左侧导航栏单击实例监控。
- 单击实例ID,进入实例详情页面,单击左侧导航栏的诊断报告。
- 单击发起诊断,生成新的诊断报告。
- 点击对应诊断报告,查看诊断报告的详细内容。
总结
以上操作能够完成数据库在大促期间的业务准备、盯盘、问题处理、SQL优化等等工作,再到最终的复盘,贯穿整个大促业务场景,帮助企业更好地应对大促这个业务考验。
了解更多
- 前往数据库自治服务DAS,即可立即申请体验数据库自治服务DAS。
- 关注阿里云数据库微信公众号,回复关键字DAS,即可了解数据库自治服务DAS更多信息。