728x90
반응형

MySQL에서 수행되는 쿼리들 중에서 Elapsed Time 설정 시간 이상 되는 쿼리를 Log 파일로 저장하는 방법이다.

 

1. 현재 설정 확인

 

mysql> show variables like 'slow%' ;

+---------------------+--------------------------------+

| Variable_name       | Value                          |

+---------------------+--------------------------------+

| slow_launch_time    | 2                              |

| slow_query_log      | OFF                            |

| slow_query_log_file | /var/lib/mysql/mmysql-slow.log |

+---------------------+--------------------------------+

 

 

2. 파라미터 수정

/etc/my.cnf 파일의 [mysqld] 밑에 다음과 같이 파라미터 설정.

Log 경로를 다른 곳으로 하고자 한다면 디렉토리를 만들고 slow_query_log_file 파라미터 값을 지정해 준다.

 

[root@mmysql ~]# vi /etc/my.cnf

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

 

[mysqld]

#

생략...

 

#SlowQuery

slow_query_log=1

#slow_query_log_file=/tmp/slow.log    <-- 1 이상 되는 SQL 로깅

long_query_time=1

 

... 생략

 

 

3. 파라미터 적용

파라미터 적용은 reload 또는 restart

[root@mmysql ~]# service mysqld restart

Stopping mysqld:                                           [  OK  ]

Starting mysqld:                                           [  OK  ]

 

[root@mmysql ~]# mysql

mysql> show variables like 'slow%' ;

+---------------------+--------------------------------+

| Variable_name       | Value                          |

+---------------------+--------------------------------+

| slow_launch_time    | 2                              |

| slow_query_log      | ON                             |

| slow_query_log_file | /var/lib/mysql/mmysql-slow.log |

+---------------------+--------------------------------+

3 rows in set (0.00 sec)

mysql> show variables like 'long_query%' ;

+-----------------+----------+

| Variable_name   | Value    |

+-----------------+----------+

| long_query_time | 1.000000 |

+-----------------+----------+

 

 

4. 테스트

실제 Slow Query 로그파일에 기록 되는지 테스트를 통하여 확인

mysql> select sleep(3) ;

+----------+

| sleep(3) |

+----------+

|        0 |

+----------+

1 row in set (3.00 sec)

 

[root@mmysql log]# tail -f /var/lib/mysql/mmysql-slow.log

 

# Time: 2016-08-10T08:39:22.737497Z

# User@Host: root[root] @ localhost []  Id:    52

# Query_time: 3.004938  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0

use tpch;

SET timestamp=1470818362;

select sleep(3);


반응형

+ Recent posts