本文介绍如何使用数据库自治服务DAS应对大促业务。

背景信息

数据库自治服务(Database Autonomy Service,简称DAS)是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助您消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。

背景介绍

自2009年起,阿里巴巴每年双11大促业务的峰值和系统的峰值都在不断攀升。随着零售业和其他传统企业数字化转型更加迅速,将来还会有更多企业或平台开展大促业务。大促不仅包括以购物为主要导向的场景,如双11、618、聚划算等,也包括其他类似场景,如几亿人在线协同办公、千万学生并发上课等。

即使不在大促这样高并发的场景中,很多企业也面临着DBA人力资源不足,基础问题和优化问题任务特别多的时候,人员和系统响应会不及时,造成业务问题。而大促时,海量访问、连接风暴、复杂查询等情况对数据库的服务提出极高的要求。

DAS支持MySQL、PostgreSQL、PolarDB、Redis、MongoDB等数据库引擎,经过阿里巴巴业务场景的孵化和锤炼,形成强大的数据库自治能力。DAS已经帮助用户自动优化了超过4200万条SQL,自动回收了4 PB的空间,自动优化了27 TB的内存。

s

DAS在大促场景下的应用

在大促的过程中,数据库服务扮演了极其重要的角色,在实际业务场景中很多企业都是同时使用多个数据库,这给管理带来了很大难度,在大促的场景中,更加需要一个统一的企业级的数据库管理的平台,提供全局视角,能够高效的发现问题,对问题进行定位和诊断,并进行批量管理和灰度管控。在应用视角,自动同步标签,针对特定的集群和组进行特定的操作;在实例视角,DAS提供针对不同的实例,如MySQL实例等的直接操作。

大促对数据库的性能、运维等等各个方面都是一个极大的考验,从大促前需要做足准备,对数据库的整个情况进行全面的摸底,做好大促中的应急预案,大促进行时对整个业务进行监控,及时进行风险应对和问题处理,到大促后的总结复盘,DAS都可以提供良好的应对方案。
  • 在大促前,可以通过DAS帮助发现问题,容量评估,排除风险,优化空间,针对异常进行排查和诊断。
  • 在大促的过程中,可以通过DAS的实时性能大盘进行盯屏,查看业务高峰期数据库是否运行正常,及时发现各类异常,对异常情况进行应急处理等。
  • 在大促后,为了帮助企业对整个大促进行复盘和总结,DAS提供诊断报告,对数据库在大促期间的表现进行总结和呈现,为下一次大促做好经验沉淀和业务准备。

大促前

通过RDS数据库使用DAS服务。

  1. 登录RDS管理控制台
  2. 在左侧单击实例列表,然后在上方选择实例所在地域。
    选择地域
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中,选择自治服务(原CloudDBA)里的各个功能。
    s

直接使用针对企业级的数据库服务DAS(推荐)

  1. 登录DAS控制台
    s
  2. 您可以执行如下几种操作:
    巡检评分
    1. 单击左侧导航栏巡检评分
      d
      说明 巡检评分可以帮助DBA发现数据库目前存在的问题。包括资源利用率的查询、TOP慢SQL的查询、SQL优化建议以及库表优化相关的信息。
    2. 单击报告查看实例详情。
      s
      说明 更多步骤详情请参见TOP慢SQL
    智能压测
    1. 单击左侧导航栏智能压测创建并生成压测报告。
      d
      说明 智能压测可使用真实业务场景评估数据库容量、兼容性等,可自动获取源端真实的流量,支持随意放大压测流量,支持极限压测,并且能够自动完成目标端数据快照创建,并直接生成压测报告。具体步骤请参见智能压测
      d
    优化SQL
    1. 单击左侧导航栏请求分析 > 全量请求识别SQL。
      as
    2. 单击优化按钮。
      s
    3. 查看优化建议。
      s
    优化空间
    1. 单击左侧导航栏空间分析
      d
      说明 支持剩余可用天数预测、大表识别、表空间碎片识别和优化。
    异常发现与诊断
    在DAS自治中心,您可以直接看到选定时间范围内发生过的异常事件、优化事件、弹性伸缩事件和其他事件。DAS会对核心指标进行7x24小时的异常检测,自动进行会话诊断、SQL诊断、容量诊断,确认造成异常的原因,并给出优化或止损的建议,并且在您授权的情况下,自动进行优化或止损操作,具体请参见自治中心

大促中

  • 盯屏:实时关注数据库是否正常

    大促当天,最重要的工作就是盯屏,即时刻关注(特别是业务高峰期)数据库运作是否正常。DAS提供了多种盯屏方式,例如实时性能大盘、全局自定义监控大盘等,此处重点介绍如何使用实时性能大盘来监控数据库运作情况。

    DAS提供了全局的实时性能大盘,可以查看所有接入实例的实时性能情况。如果您的业务正在大促或者正在进行重大变更,可以通过该功能实时确认数据库健康情况。

    1. 登录DAS控制台
    2. 在左侧导航栏单击实时性能大盘在
      说明 实时性能页展示了所有接入状态为连接正常的实例实时性能状态,并且会自动刷新。
    3. 单击右上角的指标解释按钮查看每个指标的含义。as
      说明 若某个实例出现问题,可直接单击实例ID进入实例详情页面查看。
      d
  • 查看异常SQL和异常会话

    数据库是大部分应用的核心依赖。为防止数据库压力过大,一般都会在应用端做优化和控制。但在以下场景,也需要在数据库端做优化控制。

    场景 说明
    某类SQL并发急剧上升 例如缓存穿透或异常调用,可能会导致SQL并发量突然上升。
    有数据倾斜SQL 例如大促时拉取某个特别大的数据,导致整体系统繁忙。
    未创建索引SQL 例如SQL调用量特别大,并且没有创建索引,导致整体系统繁忙。
    1. 登录DAS控制台
    2. 在左侧导航栏单击实例监控s
    3. 单击实例ID,进入实例详情页面,单击左侧导航栏的实例会话
    4. 实例会话页面,查看目标实例的实例会话会话统计等详细信息。s
      说明 您可以点击相关的会话,并查看SQL分析信息。
  • 应急措施:SQL限流

    大促当天,在缓存穿透、应用发布后产生烂SQL、应用流量突增等情况下,数据库会不断中止会话,当重启数据库实例或切换主备等常用数据库运维方案,都没有办法让数据库恢复稳定的场景下,DAS的SQL限流功能可以帮助您发现异常,并且自动找到需要限流的SQL。

    • 设置SQL限流规则

      目标SQL规则创建后,当应用端使用了同时包含所有关键词的SQL,就会收到1317错误query execution was interrupted

      1. 登录DAS控制台
      2. 在左侧导航栏单击实例监控s
      3. 单击实例ID,进入实例详情页面,单击左侧导航栏的实例会话
      4. 实例会话页面,单击SQL限流
      5. SQL限流(过滤)对话框,单击创建
      6. 填入相应信息,单击创建d
        配置 说明
        SQL类型 选择SQL类型,取值如下:SELECT、UPDATE、DELETE。
        最大并发度 SQL最大并发数,当包含关键词的SQL达到最大并发数时会触发限流策略。如果最大并发度为0,表示禁止包含该关键词的所有请求。
        限流时间 SQL限流的生效时间。SQL限流是应急措施,建议您按实际需求设置限流时长,用完及时关闭。
        SQL关键词 需要限流的SQL关键词。若您设置多个关键词,则SQL语句中需要同时包含这些关键词才会触发限流规则,多个关键词间用波浪线(~)分隔。
    • 查看SQL限流建议
      1. 登录DAS控制台
      2. 在左侧导航栏单击实例监控s
      3. 单击实例ID,进入实例详情页面,单击左侧导航栏的自治中心
      4. 查看异常时间段的SQL限流建议。l
      5. 单击限流123
    • 开启自动SQL限流

      自动限流规则开启后,当应用端执行了同时包含所有关键词的SQL语句,就会收到1317错误query execution was interrupted

      1. 登录DAS控制台
      2. 在左侧导航栏单击实例监控s
      3. 单击实例ID,进入实例详情页面,单击左侧导航栏的自治中心
      4. 在右上角单击开关设置
      5. 开关设置对话框中,打开开启自治服务开关,然后打开自动限流开关,设置自动限流触发条件。55
        说明 例如:在可限流时间段内,自定义触发条件为当CPU使用率大于80%,同时活跃会话数大于64,且该现象持续时间超过5分钟时触发自动限流,同时自动开始跟踪,如果发现故障未消除,则自动回滚该限流操作。自动限流触发后,限流操作持续的时间不会超过最大限流时间。
  • 关注高危SQL和SQL注入

    大促当天,还需要关注是否有高危SQL和SQL注入。

    • 高危SQL:DAS会根据预设的规则库,自动识别三种类型的高危SQL。
      • DDL(新建表、修改表结构、修改索引、重命名表等操作)
      • 全表更新(例如全表Update、全表Delete等操作)
      • 大请求,默认规则是满足下面三个条件中的任意一个:
        • 扫描行数大于等于10万
        • 返回行数大于等于1万
        • 更新行数大于等于1万
    • SQL注入

      SQL注入是指通过把SQL命令插入到Web表单、域名或页面请求中,最终达到欺骗服务器执行恶意的SQL命令,严重危害数据库的健康。DAS会持续不断地监控和识别数据库中是否存在SQL注入的情况,并且发现访问来源。

      1. 登录DAS控制台
      2. 在左侧导航栏单击实例监控s
      3. 单击实例ID,进入实例详情页面,单击左侧导航栏的安全审计
      4. 单击开启,在弹出框中单击确定d

大促后

大促结束后,最重要的工作是总结,包括总结本次大促期间是否有异常情况发生,以及从SQL容量或者SQL表现角度总结经验,分析这次大促可以为下次大促沉淀和积累的经验,从而帮助下一次大促更顺利进行。

DAS提供了实例的诊断报告,辅助您的总结工作。您可以查看诊断报告,了解本次大促期间实例的运行信息,例如CPU占用率、Top 5慢SQL等。

  1. 登录DAS控制台
  2. 在左侧导航栏单击实例监控s
  3. 单击实例ID,进入实例详情页面,单击左侧导航栏的诊断报告
  4. 单击发起诊断,生成新的诊断报告。
  5. 点击对应诊断报告,查看诊断报告的详细内容。s

总结

以上操作能够完成数据库在大促期间的业务准备、盯盘、问题处理、SQL优化等等工作,再到最终的复盘,贯穿整个大促业务场景,帮助企业更好地应对大促这个业务考验。

了解更多

DAS产品详情可以用钉钉扫码查看:s
关注微信公众号回复关键字DAS: s