새소식

MySQL & Maria

[ MySQL ] ProxySQL Query 빈도수 통계 작업

  • -
반응형

- ProxySQL를 사용하는 곳에서 하루 동안 실행되는 Query의 빈도수 체크를 하고 싶어 했다.

- ProxySQL의 경우 ProxySQL로 들어오는 Query에 대한 통계를 저장하는 Table이 존재한다.

- Python을 이용하여 하루동안 실행되는 Query를 저장 DB에 Insert 하는 것을 짜보자

 

■ Query_check.py

1. ### SELECT STATE 

 - ProxySQL에서 하루동안 실행되는 Query를 Select 해 온다.

 

2. ### Insert Zabbix 

 - ### IF EXISTS QUERY IN ZABBIX SERVER : 저장 DB에 ProxySQL에서 가져온 쿼리가 존재한다면 

 - ### IF NOT EXISTS QUERY IN ZABBIX SERVER == NEW QUERY INSERTED TO PROXYSQL SERVER : 저장 DB에 ProxySQL에서 가져온 쿼리가 존재하지 않는다면

 

[root@db-proxy001 ~]# cat yun.py 
#!/bin/python2 
import pymysql
import sys
import os

#### SELECT STATE 
db=pymysql.connect(
   user='admin',
   password='admin',
   host='localhost',
   port=6032
)
cursor = db.cursor()
sql="select hostgroup,schemaname,username,digest_text,min_time,max_time,count_star from stats_mysql_query_digest where username='gseek' and digest_text !='select ?' and  digest_text !='COMMIT' and digest_text !='set autocommit=?' order by 7 desc;"
cursor.execute(sql)
result=cursor.fetchall()
db.close


#### Insert Zabbix
zabbix=pymysql.connect(
 user='monitor',
 password='monitor',
 host='192.168.100.182',
 db='gm_state',
 port=3306
)
cursor = zabbix.cursor()

select_sql="select exec_count_tot from proxy_query_digest where  username='gseek' and curdate > date_add(now(), interval -10 MINUTE) and digest_text like %s"
for (a,b,c,d,e,f,g) in result:
 print('%'+d+'%')
 cursor.execute(select_sql,('%'+d+'%'))
 result=cursor.fetchall()

 ### IF EXISTS QUERY IN ZABBIX SERVER
 if len(result) != 0:
  print(result[0])
  as_is_cnt=map(int,result[0])
  exec_count=int(g) - as_is_cnt[0] 
  print(exec_count)
  insert1_sql = "insert into proxy_query_digest(hostgroup,schemaname,username,digest_text,min_time,max_time,exec_count_tot,exec_count,curdate) values (%s,%s,%s,%s,%s,%s,%s,%s,now());"
  cursor.execute(insert1_sql,(a,b,c,d,e,f,g,exec_count))

 ### IF NOT EXISTS QUERY IN ZABBIX SERVER == NEW QUERY INSERTED TO PROXYSQL SERVER
 else:
  insert1_sq2 = "insert into proxy_query_digest(hostgroup,schemaname,username,digest_text,min_time,max_time,exec_count_tot,curdate) values (%s,%s,%s,%s,%s,%s,%s,now());"
  cursor.execute(insert1_sq2,(a,b,c,d,e,f,g))

zabbix.commit()
zabbix.close()

 

 

■ 참조

https://blog.naver.com/PostView.naver?blogId=theswice&logNo=221297469749&parentCategoryNo=&categoryNo=44&viewDate=&isShowPopularPosts=false&from=postList

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.