云数据库RDS for MySQL自治限流和SQL限流

简介

SQL限流

针对新上业务不能及时发包优化的SQL和突发流量导致CPU等资源100%瓶颈的场景,SQL限流功能通过控制既定SQL规则的并发度协助业务侧及时流控,保证核心业务的稳定运行。

自治限流

流量高峰常常是不可预测的,这给运维带来非常大的工作负担。为了防止出现问题不能够立即响应解决的情况,自动化的运维保障工具应运而生。自治限流功能自动检测到数据库CPU利用率等异常,根据既定业务优先级进行限流处理,保证核心业务的稳定运行。

用户可以根据业务情况,按照数据库或者用户进行限流。将非核心数据库或非核心用户业务配置为限流对象,可以保障核心业务不受影响。

须知

云数据库 RDS for MySQL实例状态为“正常”和“存储空间满”时可以进行扩容。

云数据库 RDS for MySQL实例最大可自动扩容至4000GB。

如果是主备实例,针对主实例设置自动扩容时,会同时对其备实例生效

云数据库RDS for MySQL配置SQL限流和自治限流

SQL限流约束限制

1.当SQL语句匹配多条限流规则时,优先生效最新添加的规则,之前的规则不再生效。

2.SQL限流规则关键字有顺序要求,只会按顺序匹配。如:a~and~b 只会匹配 xxx a>1 and b>2,而不会匹配 xxx b>2 and a>1。

3.SQL语句并发控制旨在解决用户某类突发的过高并发的SQL导致MySQL实例不稳定场景。

4.若复制时延过大,云数据库RDS for MySQL只读实例新增或删除限流规则时,不会立刻生效。

5.以下场景不受SQL限流的限制:

−系统表不限制。

−不涉及数据查询的不限制,如select sleep(xxx);。

−root账号在特定的RDS for MySQL版本范围内不限制。

配置SQL限流

操作步骤

步骤 1登录管理控制台

步骤 2单击管理控制台左上角的,选择区域和项目。

步骤 3选择“数据库 > 云数据库 RDS”,进入RDS信息页面。

步骤 4在云数据库RDS for MySQL“实例管理”页面,选择目标实例,单击DS for MySQL实例名称,进入实例的“基本信息”页签。

步骤 5在左侧导航栏选择“智能DBA助手 > 历史诊断”。

步骤 6选择“全量SQL > SQL限流”。

步骤 7在“SQL限流”页面,开启SQL限流开关。

步骤 8单击“新建SQL限流规则”,选择需要限流的SQL类型、关键字以及最大并发数。


说明:云数据库RDS for MySQL关键字规则举例详细说明:例如关键字是"select~a",含义为:select以及a为该并发控制所包含的两个关键字,~为关键字间隔符,即若执行SQL命令包含select与a两个关键字视为命中此条并发控制规则。

云数据库RDS for MySQL最大并发数:即满足同一规则的语句最大并发数,超过最大并发数会被拒绝执行。

步骤 9确认无误后,单击“确定”。

步骤 10如果不需要此条限制,在SQL限流列表单击“删除”。在弹框中单击“确定”。

----结束

配置自治限流

操作步骤

步骤 1登录管理控制台

步骤 2单击管理控制台左上角的,选择区域和项目。

步骤 3单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。

步骤 4在云数据库RDS for MySQL“实例管理”页面,选择目标实例,单击实例名称,进入实例的“基本信息”页签。

步骤 5在左侧导航栏选择“智能DBA助手 > 历史诊断”。

步骤 6选择“全量SQL > 自治限流”。

说明:云数据库RDS for MySQL“自治限流”模块为付费的高级智能运维包功能,请您先升级运维包。

步骤 7单击“升级”,在弹框中,了解云数据库RDS for MySQL增值功能以及费用说明。

步骤 8升级云数据库RDS for MySQL运维包后,单击,设置实例限流范围、限流时间、限流策略,当相关条件满足时会自动流控,保证核心业务运行稳定。

步骤 9自动流控后,可以结合业务情况判断是否需要kill会话,具体请参见实时会话

----结束

云数据库RDS for MySQL常见问题

云数据库RDS for MySQL常见问题

  • 云数据库 RDS for MySQL是否支持存储过程和函数?

    云数据库 RDS for MySQL支持存储过程和函数。

    l存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,提高数据处理的效率。

    l存储过程和函数的区别

    −函数必须有返回值,而存储过程没有

    −存储过程的参数可以使用IN, OUT, INOUT 类型;而函数的参数只能是IN类型的

    创建存储过程和函数请参见官方文档

  • RDS数据库实例支持的最大数据连接数是多少

    云数据库RDS服务对此未做限制,取决于数据库引擎参数的默认值和取值范围,例如MySQL引擎的max_connections和max_user_connections参数,用户可在参数模板自定义。

    RDS for MySQL数据库实例的连接数请参考RDS for MySQL 性能白皮书中各规格的连接数。

    连接数支持在线修改,具体方法请参考修改实例参数

    支持命令方式修改最大连接数。

    a.查看最大连接数。

    show global variables like 'max_connections';

    b.在my.cnf文件中修改mysqld下参数max_connections的值。

    [mysqld]

    max_connections = 1000

  • 数据超过了RDS for MySQL实例的最大存储容量怎么办?

    1.随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,建议用户扩容磁盘空间,确保磁盘空间足够。

    如果原有规格的磁盘已是最大,请先升级规格

    云盘实例可以设置存储空间自动扩容,在实例存储空间达到阈值时,会触发自动扩容。

    2.针对数据空间过大,可以删除无用的历史表数据。

    a.如果实例变为只读状态,您需要先联系客服解除只读状态;如果实例非只读状态,则可以直接执行删除操作。

    b.查看物理文件大小Top50库表,识别可以删除的历史表数据,具体操作请参见容量预估

    c.可在业务低峰期对碎片率高的表执行optimize优化,以便释放空间:

    清理整张表使用DROP或TRUNCATE操作;删除部分数据,使用DELETE操作,如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间。

    3.如果是RDS for MySQL Binlog日志文件占用过多,可以清理本地Binlog日志,来释放磁盘空间。

    4.针对大量排序查询导致的临时文件过大,建议优化SQL查询。

    查询数据库慢SQLTop SQL,分析数据量大,行数多,响应时间长的SQL语句,并进行优化。

    5.您还可以订阅实例健康日报来获取SQL及性能分析结果,包括慢SQL分析、全量SQL分析、性能 & 磁盘分析、性能指标趋势图,当发生风险点时及时收到诊断报告。

    具体操作请参见诊断日报

  • 如何查看RDS的存储空间使用情况?

    步骤 1登录管理控制台。

    步骤 2单击管理控制台左上角的,选择区域和项目。

    步骤 3单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。

    步骤 4在“实例管理”页面,选择指定的实例,单击实例名称。

    步骤 5进入“基本信息”页面,在“存储空间”模块查看存储空间使用情况。

    ----结束

  • RDS实例删除后,备份是否会保留?

    云数据库实例删除后,手动备份默认为您保留,需要手动删除,并按照备份空间计费标准收取相应的费用。实例冻结后,备份不会收取费用。

    自动备份、binlog备份及相关的备份文件会自动删除。

专题内容推荐

活动规则

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动时间: 2020年8月12日-2020年9月11日

活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;