zoukankan      html  css  js  c++  java
  • ProxySQL环境下,快速处理异常会话的方法(黑名单、KILL)

    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》
  • 相关阅读:
    阿里云 k8s 部署 Spring Cloud Alibaba 微服务实践 (四) 自动化部署
    阿里云 k8s 部署 Spring Cloud Alibaba 微服务实践 (三) 服务观测
    阿里云 k8s 部署 Spring Cloud Alibaba 微服务实践 (二) 部署微服务程序
    阿里云 k8s 部署 Spring Cloud Alibaba 微服务实践 (一) 部署 Nacos
    C++知识点
    libmkl 学习笔记
    基于tesseract-OCR进行中文识别
    poco编译与运行
    Linux下的I/O复用与epoll详解(转载)
    高并发网络编程之epoll详解(转载)
  • 原文地址:https://www.cnblogs.com/autopenguin/p/12501344.html
Copyright © 2011-2022 走看看