MySQL运维实战之ProxySQL(9.6)SQL黑名单

俊达2年前技术文章831

利用mysql_query_rules表中的error_msg字段,可以实现SQL黑名单的功能。如果规则设置了error_msg,当SQL语句匹配这条规则时,proxysql会直接将error_msg的内容返回给客户端。


当遇到一些大查询严重影响数据库性能时,可以使用proxysql规则临时屏蔽这些SQL。


查询stats_mysql_query_digest

可以先从stats_mysql_query_digest查询需要屏蔽的SQL,这里我们选择按查询的digest精确屏蔽某一类SQL:

mysql> select * from stats.stats_mysql_query_digest limit 1\G
*************************** 1. row ***************************
        hostgroup: 101
       schemaname: information_schema
         username: user1
   client_address:
           digest: 0x7ae1f8f3a35c883d
      digest_text: select * from information_schema.tables as t limit ?
       count_star: 1
       first_seen: 1690941618
        last_seen: 1690941618
         sum_time: 2822
         min_time: 2822
         max_time: 2822
sum_rows_affected: 0
    sum_rows_sent: 1



配置屏蔽规则

我们选择按查询的digest来屏蔽,往mysql_query_rules写入如下规则:

insert into mysql_query_rules
(rule_id, username, digest, error_msg, active, apply, comment )
values (10, 'user1', '0xa6843869f14d13ce', 'request denied by rule' ,1,1, 'request denied by rule');

load mysql query rules to runtime;
save mysql query rules to disk;


需要注意,屏蔽规则的rule_id需要比其它规则的rule_id小,proxysql是按rule_id的顺序依次判断是否匹配规则。


测试屏蔽效果

使用digest,屏蔽的是一类SQL,如果SQL只是传入的参数有差异,则SQL的digest一样,那么也会匹配该规则:

mysql> select * from information_schema.tables limit 1;
ERROR 1148 (42000): request denied by rule

mysql> select * from information_schema.tables limit 2;
ERROR 1148 (42000): request denied by rule


相关文章

开源大数据集群部署(三)集群mysql数据库部署

开源大数据集群部署(三)集群mysql数据库部署

1、mysql部署在hd1.dtstack.com主机root权限下安装配置Ø  在安装目录/root/bigdata目录下解压包tar -xvJf mysql-8.0.31-linux-glibc2...

Ranger-hdfs插件部署

Ranger-hdfs插件部署

部署在两个namenode节点解压插件cd /opt/hadooptar -xzvf ranger-2.4.0-hdfs-plugin.tar.gz -C /opt/cd /opt/ranger-2....

MySQL运维实战(2.4) SSL认证在MySQL中的应用

MySQL支持使用tls进行通信。tls主要有几个作用对客户端、服务端之间的通信数据进行加密。包括客户端发往服务端的SQL,服务端返回给客户端的数据。客户端可以验证服务端的身份。服务端也可以验证客户端...

oracle v$archive_log视图过期信息清理

      在使用RMAN命令删除归档后,查询v$archived_log视图会发现name列为空了,但其他列的信息还保留,时间长了会留下很多过期的信息,影响维护工作,需要将过期的信息删除。 出现这样...

oracle gi安装报错PRCR-1079 : Failed to start resource ora.cvu

安装gi执行root.sh报错:PRCR-1079 : Failed to start resource ora.cvu安装gi执行root.sh报错:PRCC-1014 : LISTENER_SCA...

Elasticsearch查询慢日志配置

shard级别的查询慢日志会将慢查询(查询和获取阶段)记录到elasticsearch_cluster_index_search_slowlog.log日志中。设置查询慢日志各种级别下的阀值,同时也支...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。