ProxySQL环境下,快速处理异常会话的方法(黑名单、KILL)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

ProxySQL环境下,快速处理异常会话的方法:

1 定位需要处理的异常会话

当程序存在异常、SQL效率大幅下降等情况出现时,可能导致对后端数据库不堪重负,此时需要快速终止会话,保护后端数据库能提供正常的服务。

在该环节中,可以定位出“客户端IP”、“异常SQL”、“使用的数据库用户名”、“访问的Schema”等信息,以上信息越多越能准确地终止异常会话

2 为异常会话设置黑名单

注意:对于当前大部分的应用程序而言,均设置了数据库重连的功能,这意味这如果只是单纯地终止会话,往往难以起到应有的效果。因此比较好的做法是在终止前,先设置异常会话黑名单,自动的阻止异常请求的进入。以下各小节则介绍了常见的黑名单设置方法。

注意:由于路由规则根据rule_id顺序应用的,因此可以预留前100个ID用于做异常会话的黑名单
此时,该IP应用发起请求时,将报错ERROR 1148 (42000): Blocking Error Connection

2.1 阻止特定IP的请求

假设异常的请求来源于11.25.151.20这个IP,则登录ProxySQL管理端后,对黑名单设置的步骤及操作过程如下。

Admin> insert into mysql_query_rules(rule_id,active,client_addr,error_msg,apply)
values (1,1,'11.25.151.20','Blocking Error Connection', 1);

--将内存暂存配置加载为运行配置(不需要将配置存至disk)
Admin> load mysql query rules to runtime;

2.2 阻止特定IP的特定SQL

假设异常的请求来源于11.25.151.20这个IP,异常请求为INSERT,则登录ProxySQL管理端后,对黑名单设置的步骤及操作过程如下。

Admin> insert into mysql_query_rules(rule_id,active,client_addr,match_digest,error_msg,apply)
values (1,1,'11.25.151.20','^INSERT*','Blocking Error Connection', 1);

--将内存暂存配置加载为运行配置(不需要将配置存至disk)
Admin> load mysql query rules to runtime;

^INSERT*正则表达式,代表以INSERT开头的任意SQL语句。

3 终止异常会话

在ProxySQL环境下,终止会话使用KILL CONNECTION+[session_id]的语法。

[session_id]即为stats_mysql_processlist.SessionID字段。

例如,要批量终止test_user用户的会话,则可按如下语句拼接出终止会话的SQL。

Admin> SELECT 'KILL CONNECTION '||SessionID||';', 
    cli_host, srv_host, command
FROM stats_mysql_processlist
WHERE user='test_user';

参考资料:

  1. 《ProxySQL Wiki》

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
SQL Windows
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
47 4
|
6月前
|
监控 Linux Shell
Linux脚本的作用是监控IP登录失败次数
Linux脚本的作用是监控IP登录失败次数
71 1
|
关系型数据库 MySQL Windows
MySQL启动时显示:发生系统错误 5。拒绝访问解决办法
MySQL启动时显示:发生系统错误 5。拒绝访问解决办法
MySQL启动时显示:发生系统错误 5。拒绝访问解决办法
|
SQL 关系型数据库 MySQL
MySQL kill会话不起作用?
MySQL kill会话不起作用?
177 1
|
Shell Linux
linux配置超时不操作自动退出登录TMOUT
linux配置超时不操作自动退出登录TMOUT
1491 0
|
关系型数据库 MySQL C++
|
SQL Oracle 关系型数据库
实现批量Kill Oracle会话进程
有时业务DML高并发操作会导致表出现很多锁的情况,甚至需要登录服务器kill进程才能完全解锁,此时就需要能够批量Kill Oracle会话进程的脚本,来减轻操作的压力。
1519 0
|
安全 Linux 网络安全
这些年积攒的系统起不来以及root登陆异常排查的点
最近在整理文档,这些年陆陆续续写了好多个不同排查点的文档去记录系统起不来,以及root登陆异常的案例,今天整理一下放出来,希望大家可以喜欢
这些年积攒的系统起不来以及root登陆异常排查的点
|
SQL 数据库 Windows
SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析
原文:SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析 今天遇到一个很奇怪的情况,发现一个会话异常,这个会话只是在执行一个简单的存储过程,里面使用了链接服务器(Linked Server)查询另外一台服务器数据(存储过程里面没有任何显性事务、UPDATE、D...
2051 0