|

MariaDB: Slow Query Log 설정

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

MariaDB에서 Slow Query Log 설정을 할 경우 Mariadb 10.2 버전부터 etc/my.cnf.d/ 폴더안에 mysql-clients.cnf 및 server.cnf 파일로 나뉘게 되었습니다. mysql 이라도 폴더를 확인한 후에 설정 내역에 따라 확인하면 되겠습니다.

먼저 etc/my.cnf.d/server.cnf 파일에 적용하는 방법에 대해 알아 보겠습니다.

 Slow Query
Slow Query는 수행하는 데 오랜 시간이 걸리는 쿼리입니다. 응답 시간이 길어질 경우 서비스의 품질이 저하되기 때문에 Slow Query Log를 설정해서 지속적인 모니터링을 통해 개선이 필요한 사항 중 하나입니다.

✅ Slow Query Log 설정하기

vi /etc/my.cnf.d/server.cnf

# This group is read by both MariaDB and MySQL servers
[mariadb]    ## [mariadb] 설정 아래가 아닐 경우 에러 발생이 됩니다.
[mysqld]  ## 설정 아래가 아닐 경우 에러 발생이 됩니다.
slow_query_log=1  ## 1은 ON 0은 OFF 
## 슬로우 쿼리 로그의 경로 설정 후 임의 IP 주소로 이름 설정되거나 파일명 같이 생성
slow_query_log_file=/var/lib/mysql/mariadb-slow.log
long_query_time=1  ## 1초를 초과하는 쿼리에 대해 기록 한다는 것 | 테스트를 위해 0.001 초 등으로 설정이 가능.
log_slow_rate_limit=5  ## 슬로우 쿼리 최대 실행 시간 설정
:wq

ll /var/lib/mysql/
-rw-rw----. 1 mysql mysql    425984 Feb 13 15:10 aria_log.00000001
-rw-rw----. 1 mysql mysql        52 Feb 13 15:10 aria_log_control
-rw-rw----  1 mysql mysql         9 Feb 13 15:10 ddl_recovery.log
-rw-rw----  1 mysql mysql       790 Feb 13 15:10 ib_buffer_pool
--- 생략 ---
-rw-rw----  1 mysql mysql       286 Feb 13 15:10 ip-172-31-11-71-slow.log
--- 생략 ---

vi ip-172-31-11-71-slow.log

ip-172-31-11-71-slow.log(서버 IP) 파일로 Slow Query Log를 열어서 확인할 수 있습니다.

✅쿼리 로그 만들기(테스트 위한)


MariaDB [(none)]> select sleep(60);
+-----------+
| sleep(60) |
+-----------+
|         0 |
+-----------+
1 row in set (1 min 0.000 sec)

설정 내역 확인

MariaDB [(none)]> show variables like 'slow_query_%';
+---------------------+-------------------------------+
| Variable_name       | Value                         |
+---------------------+-------------------------------+
| slow_query_log      | ON                            |
| slow_query_log_file | /var/lib/mysql/slow-query.log |
+---------------------+-------------------------------+
2 rows in set (0.001 sec)

✅ Slow Query Log 확인하기

use iamroot;
select max(wr_comment) as max_comment from g4_write_ja
                  where wr_parent = '92' and wr_is_comment = 1;
# Time: 120809 16:08:15
# User@Host: iamroot[iamroot] @  []
# Query_time: 253  Lock_time: 0  Rows_sent: 1  Rows_examined: 419562
select max(wr_comment) as max_comment from g4_write_ja
                  where wr_parent = '92' and wr_is_comment = 1;
# Time: 120809 16:08:17
# User@Host: iamroot[iamroot] @  []
# Query_time: 94  Lock_time: 0  Rows_sent: 0  Rows_examined: 640675
use iamroot;
SELECT count(*) from comment where boardcode=1045552594 and boardidx=274;
# Time: 120809 16:08:23
# User@Host: iamroot[iamroot] @  []
# Query_time: 183  Lock_time: 0  Rows_sent: 1  Rows_examined: 268576

-------------------------------------------------------------------------------------------------
로그 내용 중 각 항목에 대한 설명은 아래와 같습니다.

# Query_time: 2.906063  Lock_time: 0.000026  Rows_sent: 0  Rows_examined: 133323
Query_time : 쿼리 수행시간 
Lock_time : 테이블 LOCK 이 걸린시간
Row_sent : 쿼리 처리 결과 ROW 수
Rows_examined : 쿼리 처리 대상의 ROW 갯수 

✅ Slow Query 빠르게 중단 시키기

슬로우 쿼리로 인해 Load Average가 올라갈 경우 먼저 ps -ef 명령어로 DB 관련 PID를 kill 시킨 후 슬로우 쿼리를 점검 해 보면 되겠습니다.

mysql> SHOW PROCESSLIST;
+----+--------+--------------+---------+---------+------+-------+-------------
| Id | User   | Host         | db      | Command | Time | State | Info        
+----+--------+--------------+---------+---------+------+-------+-------------
|  5 | root   | localhost    | STARPL3 | Query   | 2048 | init  | INSERT INTO
| 13 | root   | localhost    | NULL    | Query   |    0 | NULL  | show processlist
| 14 | lapoly | Canopus:3750 | STARPL3 | Sleep   |  160 |       | NULL        
| 15 | lapoly | Canopus:3751 | NULL    | Sleep   |  386 |       | NULL        
+----+--------+--------------+---------+---------+------+-------+-------------

mysql> KILL 5
마리아디비(MariaDB) 로고

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • 리눅스 톰캣 ERR_TOO_MANY_REDIRECTS 에러

    톰캣으로 운영 중인 서버에서 크롬으로 접속 시 “ERR_TOO_MANY_REDIRECTS” 오류가 발생하는 경우, 톰캣 ERR_TOO_MANY_REDIRECTS 에러 원인과 해결 방법 ✅ ERR_TOO_MANY_REDIRECTS 톰캣 및 아파치 재시작(아파치 정지 되어 있었음) / “ERR_TIMED_OUT” 오류로 변경 이후에 사이트 접속 확인되었으나 사이트에 연결할 수 없음www.kgrda.re.kr에서 응답하는 데 시간이 너무 오래 걸립니다. 다음 방법을 시도해 보세요. 연결 확인 프록시 및 방화벽…

  • 데이터베이스; DBMS, SQL 이해

    1. 데이터베이스란 데이터베이스(DataBase:DB)는 데이터가 모여 있는 저장소입니다. 저장소는 구조화 된 정보 또는 데이터의 조직화 되어 있는 모음입니다. 데이터베이스에는 IT를 포함한 여러 분야에서 폭 넓게 사용되고 있습니다. 카카오톡이나 네이버 라인 등을 이용해 발송한 메시지, 버스/지하철의 교통카드, 네이버 쇼핑 및 네이버 주문 등을 통해 구매한 정보 등이 모두 DataBase에 기록됩니다. 2. DBMS DataBase는 데이터베이스 관리…

  • vsftpd 530 에러와 533 에러 발생 시 해결 방법

    리눅스 서버에서 vsftpd 데몬이 설치되어 있는 서버에서 530 에러가 나는 경우가 있습니다. ✅ vsftpd 530 에러 시 확인 사항 1. Selinux 해제 Selinux를 잘 다루면 좋겠지만 Selinux로 당장에 FTP 접속이 되지 않는다면 해제를 진행해 줍니다. 2. 방화벽 설정 이번에 설정한 서버의 방화벽은 FirewallD 였습니다. FTP 서비스와 포트를 추가해 주고 재시작을 진행 해 줍니다….

  • mariadb-check 명령어: 테이블 자동 복구

    mariadb-check 명령어는 여러 테이블을 검사, 복구, 분석 및 최적화 할 수 있는 유지 관리 도구입니다. mariadb-check은 myisamchk 및 aria_chk과 다르게 서버에서 MariaDB가 실행 중이어야 합니다. mariadb-check 명령어 mysqlcheck 명령어와 동일한 명령어입니다. 10.5 이전 버전에서는 클라이언트에서 호출했으며, 기본 사용 방법은 다음과 같습니다. ✅ mariadb-check 명령어 기본 사용법 ✅ mariadb-check 옵션 ◻️–help 옵션 사용 옵션을…

  • [DBMS] MySQL, MariaDB 데이터베이스 &유저 생성

    MariaDB 데이터베이스 생성 및 삭제, 이름 변경 방법 그리고 유저 생성과 삭제에 대해 간단히 알아 보겠습니다. MariaDB 데이터베이스 생성과 삭제 먼저 데이터베이스 목록을 조회합니다. 데이터베이스 생성 test01로 데이터베이스를 생성합니다. 데이터베이스 삭제 데이터베이스 이름 변경 test01 데이터베이스를 test02로 변경하고 싶은 경우 test02 데이터베이스를 먼저 생성해야 합니다. 먼저 mysqldump로 test01 백업 파일을 생성합니다. test02로 복원합니다….

  • [DBMS] MariaDB cnf 파일 설정

    DBMS인 MariaDB를 설치하면 MariaDB cnf 파일 설정을 하게 되는데 MySQL MariaDB 환경설정 파일 mycnf는 /etc/my.cnf 경로에 있으며, /etc/my.cnf.d/ 디렉토리를 포함하는 설정이 기본으로 잡혀 있습니다. 11.3 버전 설치 시 화면입니다. ✅ MariaDB cnf 파일 구성: /etc/my.cnf.d 디렉토리 /etc/my.cnf.d 디렉토리 내의 구성은 다음과 같습니다. ✅ MariaDB Client와 Server의 차이 일반적으로 서버는 중앙 데이터 저장소가 있는…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 10   +   9   =