我这里的实验环境:

单机proxysql+mgr单主,已经配置好了读写分离策略。这些都不是本文的重点,就一带而过吧。


我下面只贴基于sql指纹的阻断的配置。




我们这里先查看下当前proxysql的 query rule表

</>复制代码

  1. none rule_idactivedigestmatch_patternre_modifiersdestination_hostgroupapply
  2.  runtime_mysql_query_rules
  3. rule_id  active  digest             match_pattern         re_modifiers destination_hostgroup  apply 
  4.                             .FOR $  CASELESS                                 
  5.                                            CASELESS

 

先重置下统计信息,方便下面的实验结果的查看

</>复制代码

  1. none   stats_mysql_query_digest_reset

 

连接proxysql的sql端口,去执行些sql模拟业务查询操作

</>复制代码

  1. sbtest
  2.  id  sbtest2  id   id    
  3. id   
  4.            
  5.            
  6. rows    sec
  7. sbtest
  8.  idpad  sbtest2  id   idpad  
  9. id  pad                                                   
  10.              
  11.              
  12. rows    sec
  13. sbtest 
  14.  idpadkfrom sbtest2 
  15.  pad   
  16.   pad  k  
  17.    
  18. id       pad                                                          k       
  19.     
  20.     
  21.  rows    sec

 

去proxysql 后台看下捕获到的sql指纹信息如下:

</>复制代码

  1. none  hostgroupcount_starsum_timedigestdigest_text  stats_mysql_query_digest   digest_text
  2.  hostgroup  count_star  sum_time  digest              digest_text                                                                   
  3.                                 id  sbtest2  id  id  
  4.                                idpad  sbtest2  id  idpad