CloudDBA新功能上线--SQL过滤/限制/防火墙

1 前言

CloudDBA是阿里云数据库团队开发的智能诊断和优化平台,可以帮助用户更好使用阿里云数据库。
CloudDBA不断提升算法和规则,更好的匹配更多用户场景,刚刚上线了SQL过滤功能,用来解决某类SQL给系统带来的冲击。

2 功能描述

匹配用户设置的关键字和并发数,对某类SQL(SELECT/UPDATE/DELETE)进行按并发数限流,当这一类SQL的并发小于并发数的进到Server层,大于并发数的丢弃。
该功能只能用来救急,不适合长时间运行。

3 对业务的影响

3.1 收益

限制了问题SQL后,保障DB Server端能正常响应正常业务的语句,保障大部分的业务正常运转

3.2 弊端

如果设置了SQL防火墙,该SQL被限制后,应用端会收到1317错误,即

query execution was interrupted

4 适用场景

如果业务方能够接受舍小(小部分业务损失)保大(大部分业务正常运转),可以进行限流;
如果不能接受上述报错,就要接受整个业务被拖垮的可能。

4.1 能解决的场景

4.1.1 某类SQL并发急剧上升,影响正常业务

比如缓存穿透,或者异常调用,可能会造成原来并发不大的SQL语句,并发量突然上升

4.1.2 有数据倾斜SQL,影响正常业务

比如大促时拉取某个特别大的数据,造成整体系统繁忙

4.1.3 未创建索引SQL,影响正常业务

比如新上线SQL调用量特别大,又没有创建索引,造成整体系统繁忙

4.2 处理误区

4.2.1 切换主备

以前碰到上述情况,见有的运维人员是切换主备尝试解决上述问题,主备的配置是一样的,如果主库有问题,同样的请求到备库也是同样的问题,所以切换是解决不了问题的。

4.2.2 kill问题语句

kill语句是可以减少系统压力,未尝不是一种处理手段。但是,请求是不断进来的,不停kill语句手都酸了吧?

4.3 可以尝试的解决方法

上面提到这个功能只是应急手段那么如何才能解决该类问题呢?

  • 提高缓存命中率
  • 使用只读实例
  • 快速加索引

5 使用方式

5.1 路径

RDS控制台->找到具体实例->CloudDBA->问题诊断->SQL过滤
_21

5.2 找到要限制的SQL语句

通过"问题诊断"里面,观察到某类SQL执行特别慢,并发又特别多时,这条语句可能就是问题SQL,经过再三确认(根据经验,跟业务开发,跟老板)后就可以限制并发啦。
例如:
_22
想限制下面这类语句:

SELECT * FROM sbtest4 WHERE top_cmt_id=99738 AND status in (1,3)  and parent_cmt_id >= 0 order by add_time desc limit 0,20

就要执行下面的步骤

5.3 创建过滤规则

5.3.1 SQL类型

是限制SELECT语句还是限制UPDATE语句还是限制DELETE语句,安全起见默认支持SELECT语句,建议您也优先设置SELECT语句

5.3.2 最大并发度

该次限制的SQL最大允许在Server端跑多少个

5.3.3 限流时间

允许SQL过滤最大执行时间;超过了指定时间,就会自动终止该限制

5.3.4 SQL关键词

SQL过滤的匹配关键词,多个关键词之间以~分隔,不要有空格之类的特殊字符
接着上面的例子,SQL关键词我可以这样拼写

SELECT~FROM~sbtest4~WHERE~top_cmt_id~status~parent_cmt_id~order~add_time~desc

_23

5.4 重置/终止过滤规则

当遇到设置规则错误,或者想提前终止SQL过滤,可以执行该操作。
_24

5.5 查看过滤历史记录

凡是对该实例执行过SQL过滤功能的,都可以在这里查到记录,方便排查问题。
_25

6 注意事项

  • 该功能只能用来救急,不适合长时间运行
  • 安全起见默认支持SELECT语句,建议您也优先限制SELECT语句
  • 该功能只能运行在MySQL 5.6版本
  • 该功能是内核层面上的改进,无论是使用高安全链路还是普通链路都可以使用
  • 可以设置多个SQL过滤(根据不同的关键词)
  • 如果同一类型的SQL关键词设置了多次,限制的并发按这几个并发的和限制
  • 要限制的SQL语句匹配越严格越精准,对业务影响最小

如果设置的不够精准,例如SQL关键词是

SELECT~FROM~sbtest4

那匹配上述规则的SQL语句,哪怕是正常业务的,也可能被限制掉了

  • 被限制后的SQL在应用端会出现
1317 query execution was interrupted
  • 该限制只对被设置的实例生效,不影响主账号下面的其他实例
  • 该限制规则只对新链接有效,如果想使用该规则,在设置过规则后,需要把老链接手动kill(在CloudDBA里可做)

如果您在使用CloudDBA过程中有什么问题,或者好建议,欢迎进群
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js导出的xlsx无法打开_js文件操作之——导出Excel (js-xlsx)

前阵子跟server同学讨论一个Excel导出的需求,我说JS搞不定,需要server来做,被server同学强行打脸。今天研究了下,尼玛,不光可以,还很强大了!总结:经验是害人的,尤其是在发…

Linux上Svn环境搭建

一般情况下,Linux都是自带SVN环境的。 查看svn是否安装了 [14:50:28][rootVM60 ~]# rpm -aq subversion [14:50:30]subversion-1.6.11-9.el6_4.x86_64 [14:52:01][rootVM60 ~]# whereis svn [14:52:01]svn: /usr/bin/svn /usr/share/man/man1/svn.1.gz [14:55:…

android主流技术框架,android开发现在流行什么IDE和开发框架?

慕仙森idea, AS (android studio), adt, 其中 AS 是google 非常推荐的.看官网就知道了. 框架的话: xutils , andbase , volley等等,还有比较流行的UI界面效果,个性化控件等等.  关于 IDE 的优劣势. 个人认为:各有各的好处.  对于以前 Java 的开发人员来说(我就是的,嘿嘿) ,…

联想拯救者y7000加内存条_关于2020款联想拯救者Y7000、R7000和Y7000P,r7000p选哪个好?看这里就对了...

朋友咨询:作为传媒行业,经常用到ps,pr,lr,ae,au,flash,3d max,edius等这些软件,8000以内的预算,那么2020款联想拯救者Y7000、R7000和Y7000P&#…

Hivesql里的limit使用误区

select * from HIVE_D_MT_UU_H_SPARK limit 1000;读取前1000行。需求:在hive表前1000行里,过滤出不重复的refid,imsi。错误的写法:select distinct refid,imsi from HIVE_D_MT_UU_H_SPARK limit 1000;会去读取全表,把0~1000行的不…

android 释放bitmap fragment,,为什么重复Replace Fragment会内存泄漏

如图&#xff0c;当点击下面的两个按钮时&#xff0c;REPALCE上面的Fragmnet&#xff0c;共两个&#xff0c;反复切换时发生了内存泄漏这是Fragment的代码&#xff1a;public class Fragment2 extends Fragment {private List lb new ArrayList<>();NullableOverridepub…

Improved GAN

https://www.bilibili.com/video/av9770302/?p16 从之前讲的basic gan延伸到unified framework&#xff0c;到WGAN 再到通过WGAN进行Generation和Transformation 复习一下GAN&#xff0c; 首先我们有一个目标&#xff0c;target分布&#xff0c;Pdata&#xff0c; 蓝色部分表示…

cython加密代码python_利用Cython对python代码进行加密

利用Cython对python代码进行加密Cython是属于PYTHON的超集&#xff0c;他首先会将PYTHON代码转化成C语言代码&#xff0c;然后通过c编译器生成可执行文件。优势&#xff1a;资源丰富&#xff0c;适合快速开发。翻译成C后速度比较快&#xff0c;在windows环境中用cython加密后的…

Linux ftp 命令

[deepenvd26wyjl01 ~]$ ftp IP地址 Connected to 10.xxxx.191 (10.xxxx191). 220-FileZilla Server 0.9.53 beta 220-written by Tim Kosse (tim.kossefilezilla-project.org) 220 Please visit https://filezilla-project.org/ Name (10.xxxx.191:deepen): yzcloud 331 Passwo…

android viewpager 间隔,viewpager 系统兼容 clipChildren 页卡间距

此效果在4.4以下有个bug&#xff0c;两边的会有遮盖&#xff0c;但是一滑动就没事了。。。此时需要给viewpager设置onpagerchangedListener 刷新父布局invalidateviewpager.setPagerMargin();//设置页卡间隔viewpager.setOffscreenPageLimit(); 设置缓存数量viewpager的父布局…

python web验证码_python web框架Flask——手机短信验证码

下列代码都是以自己的项目实例讲述的&#xff0c;相关的文本内容很少&#xff0c;主要说明全在代码注释中。我是使用阿里云云通信的短信服务&#xff0c;第一次使用会摸不着头绪&#xff0c;这里我们需要做些准备工作&#xff1a;1、登陆自己的账号进入阿里云官网&#xff0c;没…

机器学习:样本集、验证集(开发集)、测试集

样本集、验证集&#xff08;开发集&#xff09;、测试集。 Ripley, B.D&#xff08;1996&#xff09;在他的经典专著Pattern Recognition and Neural Networks中给出了这三个词的定义。 Training set: A set of examples used for learning, which is to fit the parameters [i…

Linux ftp传送问题 WARNING! 258831 bare linefeeds received in ASCII mode

WARNING! 258831 bare linefeeds received in ASCII mode 原因是传输时ftp的传输类型不一致。 在上传的时候&#xff0c;选择传输类型为 二进制 在Linux上用ftp命令get的时候&#xff0c;也要设置二进制 ftp> binary // 设置传输方式为binary

html输入支付密码样式,基于JS实现类似支付宝支付密码输入框

基于JS实现类似支付宝支付密码输入框2019-01-06编程之家https://www.jb51.cc编程之家收集整理的这篇文章主要介绍了基于JS实现类似支付宝支付密码输入框&#xff0c;编程之家小编觉得挺不错的&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。本文实现的是一个类似支付…

海康+萤石云+云存储多少钱一个月_400万极清画质 萤石C6Wi智能家居摄像机

作为全球最大安防企业海康威视旗下子品牌&#xff0c;萤石以“家庭安防”切入智能家居市场&#xff0c;萤石C6Wi作为一款融合目前市面上云台摄像头最新设计和最全功能的产品&#xff0c;其外观设计获得多项国际大奖&#xff0c;支持2K分辨率(25601440)及4倍变焦拍摄、微光全彩、…

unzip 报错error [clas.zip]:  missing 1844 bytes in zipfile

error [clas.zip]: missing 1844 bytes in zipfile 解决方法&#xff1a; http://blog.csdn.net/zengmingen/article/details/78604574

Vue+axios统一接口管理

通过axios请求接口已经很简单了&#xff0c;但最近在做一个vue项目&#xff0c;想着把axios请求再封装一下&#xff0c;这样api就可以只在一处配置成方法&#xff0c;在使用的时候直接调用这个方法。 但咱们不用每个接口都定义成一个啰嗦的axios请求方法&#xff0c;既然是想简…

html网页 table布局实例,HTML用Table表格对网页布局

HTML是用于开发网页的“超文本标记语言”&#xff0c;今天我们一起来学习一下HTMLCSS网页布局中Table布局方式。常见的网页布局用CSS而言一般有经典行布局、经典列布局、双飞翼布局、圣杯布局等。今天小编教大家用Table表格布局。大家先来欣赏几个网页&#xff1a;这几个网页布…

vue设置输入框输入长度_Vue实现input宽度随文字长度自适应操作

业务需求&#xff0c;输入文字&#xff0c;后面的元要紧随其后&#xff0c;奈何input默认是有宽度&#xff0c;我想要达到&#xff0c;输入文字&#xff0c;动态改变input的宽度,试了很多方法&#xff0c;目前自己琢磨一种&#xff0c;有遇到问题的可以参考一下&#xff0c;直接…

JDBC 连接Hive 简单样例(开启Kerberos)

今天在移动的云平台上通过jdbc连接hive&#xff0c;发现云平台使用了 kerberos的认证。与宁波实验环境不同。 发现一文解决了问题&#xff0c;转载如下&#xff1a; 原文地址&#xff1a;http://blog.csdn.net/zengmingen/article/details/78605086 -----------------------…