Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 모캠
- 프로세스
- IP
- action
- javascript
- 기술PM
- Site Reliability engineering
- SRE
- #Swagger-codegen
- fluentd
- AWS
- Redux
- Reducer
- #api 문서화
- 쿠버네티스 컨트롤러
- docker
- #스웨거
- #Swagger-ui
- 프로세스 통신
- 모두의캠퍼스
- #Swagger
- #Swagger-editor
- React.js
- 카카오게임즈
- ecs
- 쿠버네티스
- React
- Kubernetes
- 북딜
- server
반응형
Archives
- Today
- Total
탕구리's 블로그
MYSQL의 log에 대해 빠르고 간단하게 알아보자! 본문
반응형
mysql log의 종류는 크게 총 4개로 구성된다.
- error log → mysqld를 시작, 구동 또는 종료할 때 발생하는 에러 로그
- general log → established된 클라이언트 접속 및 클라이언트로부터 받는 명령문
- binary log → 데이터를 변명시키는 모든 명령문(replica 포함)
- slow log → long_query_time 시간보다 오래 실행되는 쿼리 + 인덱스 미사용 쿼리
mysql log는 별도의 경로를 지정하지 않으면 디폴트 경로(/var/log/mysql/error.log)에 저장된다.
경로 설정을 위해선 /etc/mysql/my.cnf의 “log_error=경로.log” 형태로 설정이 가능하다.
1. error_log
- mysqld의 시작 , 종료 시점을 가리키는 정보를 기록한다.
- mysqld가 자동으로 검사 또는 리페어해야 할 필요가 있는 테이블을 발견하게 되는 경우 에러로그에 기록한다.
- --log-error[=file_name] 옵션을 통해 경로 및 파일명을 설정할 수 있다.
2. general_log
- 일반 쿼리 로그는 mysqld의 일반적인 실행 결과를 기록한다.
- 클라이언트가 접속을 하거나 또는 접속을 끊을 때 정보를 기록한다.
- 일반 쿼리 로그는 클라이언트에서 에러를 의심할 경우 및 클라이언트가 mysqld에 보내는 것을 확인하기 위해 사용한다.
- general_log의 경우 기본 설정 상태는 OFF 상태 이므로 로그를 남기기 위해선 ON으로 변경해주어야 한다.
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file='/var/lib/mysql/general.log';
3. binary_log(binlog)
- 데이터의 변경이 일어나는 모든 명령문에 대한 기록이 되어있다.
- 명령문은 데이터 수정을 가리키는 이벤트(event) 형태로 저장된다.
- 명령문에 대한 업데이트 시간 정보도 포함된다.
- 트랜젝션을 사용하는 경우 바이너리 로그를 통해 백업을 진행해야 한다.
- 바이너리 로그를 활성화하는 경우 서버의 성능저하를 일으킬 수 있으므로 사용에 유의해야 한다.
# 특정 db의 bin_log 생성을 설정할 수 있다.
--binlog-do-db=db_name
# 특정 db의 bin_log 생성을 무시할 수 있다.
--binlog-ignore-db=db_name
3-1. binary_log 종류
- Statement-based logging
- Insert, Update, Delete에 대한 SQL 문들이 포함된다.
- 로그 파일에 적은 데이터가 기록되며, 로그 파일에 필요한 저장 공간이 줄어드는 장점이 있다.
- 백업에 대한 복구는 Replay처럼 수행되며 빠르게 복원이 수행될 수 있다.
- Row-based logging
- 각 행에 대한 변화를 기록한다.
- 각 행의 변경 사항을 이진 로그에 기록하므로 로그 파일의 크기가 매우 빠르게 증가할 수 있으며 지연이 발생할 수도 있다.
- Statement-based + Statement-based 혼합형
4. slow-query-log
- 슬로우 쿼리 로그는 실행 시간이 long_query_time 보다 길게 걸리는 모든 SQL 명령문으로 구성된다.
- long_query_time의 최솟값 및 디폴트 값은 각각 1과 10이다.
- 활성화를 위해서는 mysqld를 --log-slow-queries[=file_name] 옵션 설정이 필요하다
# 로그 파일 경로 및 on/off 여부 확인
SHOW VARIABLES LIKE '%slow_query%';
# long_query_time 설정 및 설정 시간 확인
SHOW VARIABLES LIKE '%long_query%';
set global long_query_time=5;
# slow-query-log에서 확인 가능한 항목들
Time : 쿼리가 종료된 시점 (Time에서 Query_time 만큼 빼면 시작된 시점)
User@Host : 실행한 사용자 계정
Query_time : 쿼리가 실행되는데 걸린 전체 시간
Rows_examined : 이 쿼리가 처리되기 위해 접근한 레코드 수
Rows_sent : 실제 보낸 쿼리
참고 : https://dataonair.or.kr/db-tech-reference/d-guide/dbms-2/?mod=document&uid=62464
반응형
'Conception > Database' 카테고리의 다른 글
데이터베이스 트랜잭션(Transaction)에 대하여 알아보자! (0) | 2018.03.01 |
---|---|
DB Index 에 대해 알아보자 (0) | 2018.01.18 |
정보처리기사 실기 데이터베이스 이론 (0) | 2017.06.09 |
스키마 개념과 설명 (0) | 2017.06.04 |
Comments