마리아 디비 Slow Log

blzae·2024년 8월 28일

Slow Log 설정

show variables like 'slow_query%';
+---------------------+-------------------------------+
| Variable_name       | Value                         |
+---------------------+-------------------------------+
| slow_query_log      | ON                            |
| slow_query_log_file | mariadb-setting-test-slow.log |
+---------------------+-------------------------------+

현재 Slow Query Log에 대한 설정을 본다.

설정 해준 적도 없는데 켜져 있는거 보니 디폴트 설정인 것 같다.

  • 마지막에는 OFF 상태로 수정 할 것이다.
# MariaDB Slow Log Location
slow_query_log = off
long_query_time = 10
slow_query_log_file = /var/lib/mysql/query_log/slow/db_slow.log

my.cnf 파일에 slow_log 설정을 추가 한다.

  • off 상태로 설정한다.
service mariadb restart

my.cnf 수정사항을 반영한다.

MariaDB [(none)]> show variables like 'slow_query%';

+---------------------+-------------------------------------------+
| Variable_name       | Value                                     |
+---------------------+-------------------------------------------+
| slow_query_log      | OFF                                       |
| slow_query_log_file | /var/lib/mysql/query_log/slow/db_slow.log |
+---------------------+-------------------------------------------+

slow log 파일 위치 변경 된 것을 확인 한다.

cd /var/lib/mysql/

mkdir query_log # 쿼리 로그 폴더 생성
chown mysql:mysql /var/lib/mysql/query_log # query_log 폴더 소유자, 그룹 mysql 변경

이 위에는 general_log 설정을 했다면 할 필요가 없다.

mkdir /var/lib/mysql/query_log/slow # slow 로그 저장 폴더 생성
chown mysql:mysql /var/lib/mysql/query_log/slow # slow 폴더 소유자, 그룹 mysql 변경

touch /var/lib/mysql/query_log/slow/db_slow.log # slow 로그 저장 파일 생성
chown mysql:mysql /var/lib/mysql/query_log/slow/db_slow.log # slow 로그 파일 소유자, 그룹 mysql 변경

로그 파일 저장 폴더와 파일 생성 과정이고 소유자와 그룹을 mysql 로 변경하여 마리아 디비가 접근 읽기, 쓰기 가능하게 만들어준다.

service mariadb restart

my.cnf 수정사항을 반영한다.

정상 동작 확인

일단 OFF 상태인 slow_query_log를 ON 상태로 변경 해준다.

마리아 데이터베이스 재시작 까지 한다.

show variables like 'slow_query%';

+---------------------+-------------------------------------------+
| Variable_name       | Value                                     |
+---------------------+-------------------------------------------+
| slow_query_log      | ON                                        |
| slow_query_log_file | /var/lib/mysql/query_log/slow/db_slow.log |
+---------------------+-------------------------------------------+

slow_query_log가 ON 상태인 것을 확인

SELECT sleep(10), 'sleep query';

현재 slow query를 잡아내는 시간을 10초로 설정을 해놨다.

10초 동안 동작하는 쿼리를 실행 해본다.

SELECT sleep(10), 'sleep query';
+-----------+-------------+
| sleep(10) | sleep query |
+-----------+-------------+
|         0 | sleep query |
+-----------+-------------+
1 row in set (10.00 sec)

10초 쿼리가 정상적으로 실행 된 것을 확인 했다.

이제 slow log를 확인 해보자

cat db_slow.log

/usr/sbin/mysqld, Version: 10.2.43-MariaDB (MariaDB Server). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
/usr/sbin/mysqld, Version: 10.2.43-MariaDB-log (MariaDB Server). started with:
Tcp port: 0  Unix socket: (null)
Time                 Id Command    Argument
# Time: 230914 14:07:35
# User@Host: root[root] @ localhost []
# Thread_id: 8  Schema:   QC_hit: No
# Query_time: 10.000382  Lock_time: 0.000000  Rows_sent: 1  Rows_examined: 0
# Rows_affected: 0
SET timestamp=1694668055;
SELECT sleep(10), 'sleep query'; -- 15번째 줄

15번째 줄에 위에서 실행한 쿼리가 남아있는 것을 확인할 수 있다.

부가적인 다른 정보도 볼 수 있다.

0개의 댓글