slow_query_log general_log 테이블 설정 방법
mysql 및 mariadb에서 영구적으로 슬로 쿼리 및 SQL general log가 쌓이도록 설정하는 방법을 안내합니다.
우선 아래와 같이 서버에서 my.cnf 파일을 엽니다.
vi /etc/my.cnf
위 파일을 열면 여러 가지 설정이 주르륵 나옵니다. 여기에서 [mysqld]라고 표시된 아래쪽으로 이동합니다.
거의 초반부에 있을 겁니다.
[mysqld]
socket=/tmp/mysql.sock
datadir=/home/mysql_data
basedir = /usr/local/mysql
#user = mysql
#bind-address = 0.0.0.0
#
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
port = 23306
#dns query
skip-name-resolve
#connection
max_connections = 1000
max_connect_errors = 1000
wait_timeout= 60
#slow-queries
#slow_query_log = /home/mysql_data/slow-queries.log
#long_query_time = 3
#log-slow-queries = /home/mysql_data/mysql-slow-queries.log
##timestamp
explicit_defaults_for_timestamp
symbolic-links=0
### log
log-error=/home/mysql_data/mysqld.log
pid-file=/tmp/mysqld.pid
###chracter
character-set-client-handshake=FALSE
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci
symbolic-links=0
##Password Policy
#validate_password_policy=LOW
#validate_password_policy=MEDIUM
### MyISAM Spectific options
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
뭐 이런 화면이 쭉 나올 겁니다.
여기에서 마지막 부분으로 이동을 합니다.
그리고 아래와 같이 parameter를 입력해 줍니다.
general_log=on
log_output='TABLE'
slow_query_log=1
slow_query_log_file = /home/mysql_data/slow_query.log
long_query_time = 5
여기에서 하나하나 설명을 드려보겠습니다.
general_log=on 은 SQL log의 기록 여부를 on/off로 입력하는 것입니다. on으로 입력합니다.
log_output='TABLE' 은 SQL log를 테이블에 쌓을 거냐 파일로 쌓을 거냐라는 의미입니다. 둘 다 선택도 가능합니다. 전 테이블에 쌓길 원하기 때문에 TABLE 이라고 입력을 했습니다. 파일로 쌓길 원하시면 FILE, 그리고 둘다 원하면 TABLE, FILE이라고 입력하면 됩니다.
slow_query_log=1 은 slow 쿼리 로그를 남길 것인지에 대한 선택 값입니다. 1은 on, 0은 off입니다.
slow_query_log_file = /home/mysql_data/slow_query.log 는 slow 쿼리 로그 파일 경로를 입력하는 부분입니다.
long_query_time = 5는 slow 쿼리를 판별하는 기준입니다. 단위는 sec(초)입니다. 즉, 5초 이상 응답 시간이 소요되는 SQL을 slow 쿼리로 log를 남기겠다는 의미가 되겠습니다.
이렇게 원하시는 데로 설정을 한 뒤에는 MySQL 또는 Mariadb를 재시작해주시면 됩니다.
service mysql stop
service mysql start
그러고 나서 아래와 같이 SQL을 실행하시면 SQL log가 쌓인 것을 확인할 수 있습니다.
select * from mysql.general_log;
아래와 같이 결과가 나옵니다.
더불어서, slow query log를 간단하게 확인하는 방법이 있습니다.
mysqldumpslow -a /home/mysql_data/slow_query.log
위 명령어를 통해서 간단하게 slow 쿼리 결과를 확인할 수 있습니다.
유용하게 잘 쓰시길 바랍니다.
감사합니다.
by.sTricky
'Database > mariaDB administrator' 카테고리의 다른 글
mysql general_log shell script로 백업 관리 하기 (4) | 2020.06.25 |
---|---|
mysql ERROR 1118 row size too large 오류 해결 방안 (0) | 2020.06.23 |
MariaDB server PID file could not be found! 에러 조치 방법 (0) | 2020.06.03 |
MySQL을 이용해서 위경도 지점간 거리 구하기 (1) | 2020.06.01 |
Power BI 에서 mysql 데이터베이스 연결 하기 (3) | 2020.05.12 |