생계/MySQL2024. 9. 15. 12:35

mysql 에서 사용하는 로그들 정리해보자 

1. General log 

general log 를 활용하면 client 에서 어떤 쿼리들을 mysql server 에 보내는지 확인 할수 있다. 

 1) Binary log 와의 차이

general log 는 서버에 쿼리 요청이 들어오는 순서대로 로그에 기록된다. 
반면 binary log 는 실행시간에 따라 기록이 된다. 
또한 binary log 는 select 는 포함하지 않는다. 
general log 는 조회 쿼리도 포함되기에 log 의 양이 많다.  

 2) output 종류 (slow 동일)

아래 log_output 을 아래 세가지 중 하나를 선택할 수 있다. 
none 으로 설정을 하면 우선순위가 앞서며 general_log=on 으로 설정해도 로그가 남지 않는다. 

 - file      =>  *.log 를 생성
 - table   =>  *.csv 를 생성 
 - none 

table 을 선택하면 general_log 이름으로 DB에서 조회가 가능해진다. 
테이블을 사용하는데 size 가 걱정되어 테이블 사이즈를 조회하는 쿼리를 날리면 0 으로 나온다. 
이것은 general_log 테이블이 테이블이라는 object 에 쌓는 것이 아니고
실제로는 CSV 엔진으로 general_log.CSV 라는 파일에 덤프를 쌓고 있기 때문이다. 

 3) Table output 의 장점 

 - query 에 조건문을 넣어서 질의 하는 것이 가능해진다.
 - 원격에서도 확인이 가능 
 - csv 파일 접근 가능한 스프레드시트에서 활용이 가능해진다. 


 4) general log 사용하기 

show variables like 'general%';
set global general_log=on;
set global log_output='TABLE';
set global general_log=off



2. Slow log

실행된 쿼리 중 오래 돌았던 쿼리를 기록. 

남기는 기준은 long_query_time 파라미터 (min 0, default 10)

사용여부 : slow_query_log = 0 disable, 1 enable
파일이름 : slow_query_log_file=file_name

general log 와 마찬가지로 log_output 이 table 일 경우 CSV 엔진을 사용하여 *.CSV 파일을 만든다. 

size 가 커질 경우 조회

3. Bin/relay log 

data 를 변경하는 statement 를 기록. select 는 포함되지 않는다.

복제서버 구조에서 source 쪽의 binlog 를 target 에 전달하면 target 의 relay log 에 동일한 포맷으로 기록된다.

로그포맷 형식에는 아래 3가지가 있다. 

  - Statement-Based Logging (SBL)

  - Row-Based Logging  (RBL) 

  - Mixed

binmysqlbinlog

 

4. Error log 

mysqld 를 운영, 중지, 시작시 만나게 되는 에러를 기록 

 - 기동관련 정보성 및 에러메시지
 - 비정상종료 복구 메세지
 - 쿼리처리 도중 발생 에러메시지 
 - aborted connection
    max_connect_errors
    
 - innodb모니터링, show engine innodb status 결과 
 - mysql 종료메시지

 

이렇게 정리해놓고 봐도 알수있는게 mysql 은 네이밍에 일관성이 없는 것이 특징이다.  

반응형
Posted by 돌고래트레이너