Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Cloud DB for MySQL
- 6.2.7
- Maria
- RDBMS
- NOSQL
- RDS
- vacuum
- Docker
- slack
- DML
- OD
- MyISAM
- ncloud
- Replication
- mysql
- ROLLBACK
- cdb
- jmeter
- zabbix
- postgresql
- REDIS
- opensource
- Connection
- maxclients
- online ddl
- NCP
- 성능테스트
- InnoDB
- mongo
- autovacuum
Archives
- Today
- Total
개인 공부
[ 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()
■ 참조
반응형
'MySQL & Maria' 카테고리의 다른 글
[ MYSQL ] NCP - Cloud DB for MySQL 구축 (0) | 2023.01.19 |
---|---|
[ MySQL ] 괜찮아 보이는 블로그 추천 (0) | 2023.01.10 |
[ MySQL ] Memory ( Use. performance_schema / sys ) (0) | 2022.12.16 |
[ MySQL & MariaDB ] OS Buffer Cache 공간 확인 ( Use. Percona ) (0) | 2022.11.21 |
[ MySQL ] MTS ( Multi Thread Slave ) (1) | 2022.11.17 |