slow query 를 기록하도록 설정하고 통계 파일 생성 ()
배경
1.최근에 갑자기 시스템이 DBMS 가 query 실행 시 일정시간 보다 오래걸리는 경우 (8/1)
db 설정 (* mac 에서 brew 로 mysql 을 설치했고 이후 슬로우 쿼리를 기록하도록 설정을 바꿨다)
-
터미널에서 mysql 에 접속
mysql -u root -p
-
mysql 에 접속해서 값을 확인한다
SHOW GLOBAL VARIABLES like 'slow_%';
-
slow_query_log 값이 'OFF' 에서 'ON' 으로 바꿔주고 4초가 넘는 쿼리를 mysql_slow.log 에 기록되도록 설정했다
SET GLOBAL slow_query_log_file='/var/log/mysql/mysql-slow.log';SET GLOBAL slow_query_log=1;SET GLOBAL long_query_time=4;
slow_query_log | ON |
slow_query_log_file | /var/log/mysql/mysql-slow.log |
- mysql 재시작한다
mysql.server restart
이후 다시 설정값을 확인하면 slow_query_log 값이 'ON'으로 변한 것을 알 수 있다
분석 -(1)
- mysql 에 접속해 10초 실행 쿼리를 동작시킨다
mysql> select sleep(10);+-----------+| sleep(10) |+-----------+| 0 |+-----------+1 row in set (10.01 sec)
2./var/log/mysql/mysql-slow.log
파일 내용에 슬로우 쿼리 내용이 기록되며
아래 방법을 사용해 통계 파일도 생성이 가능하다
분석
터미널에서
mysqldumpslow -s c /var/log/mysql/mysql-slow.log > slow_result.log
~/ 위치에 slow_result.log가 생성된다
분석 -(2)
Install the MySQL slow query analyser pt-query-digest on Mac
슬로우 쿼리 위해 스크립트 설치
cd ~
curl -LO https://percona.com/get/pt-query-digestchmod +x pt-query-digest
./pt-query-digest --help
./pt-query-digest --type='slowlog' /var/log/mysql/mysql-slow.log > parsed_mysql-slog.log
https://www.glenscott.co.uk/install-mysql-slow-query-analyser-pt-query-digest-mac/
local 에서 슬로우 쿼리는 잘 발생하지 않는거 같다 일반적인 로그도 기록하도록 설정하고 파일을 분석해보자
SHOW GLOBAL VARIABLES;
SET GLOBAL general_log_file='/var/log/mysql/mysql-general.log';SET GLOBAL general_log =1;
mysqldumpslow -s c /var/log/mysql/mysql-general.log > general_result.log
./pt-query-digest --type='genlog' /var/log/mysql/mysql-general.log > parsed_mysql-general.log
참고
https://darksharavim.tistory.com/917 https://neocan.tistory.com/406 https://nirsa.tistory.com/227 https://www.howtogeek.com/devops/how-to-enable-mysqls-slow-query-log/