MySQL 관련 Log 종류에 대해서 다시 정리해 보았다.
Binary Log 관련하여 추가 정리 및 Parameter 정리는 더 추가 해야겠다.
아래 내용들은 역활에 대해서 많이들 알고 있으며 평소에도 자주 보는 것들이다.
이것보다 더 자세한 Parameter 를 검색해서 정리하여 추가해 봐야겠다.
1. Error Log
- log_error 파라미터에 경로 정의
- 경로를 정의하지 않으면 daradir 파라미터에 설정된 경로에 *.err 로 생김
- MySQL 이 시작하는 과정과 관련된 정보성 및 에러 메시지 저장
- 마지막으로 종료할 때 비정상적으로 종료된 경우 나타나는 InnoDB의 트랜잭션 복구 메시지
- innodb_force_recovery 파라미터를 0보다 큰 값으로 설정하고 재시작 추천
- 쿼리 처리 도중에 발생하는 문제에 대한 에러 메시지
- 비정상적으로 종료된 컨넥션 메시지(Aborted connection)
- max_connect_errors 시스템 변수 값이 터무니 없이 낮을 경우 발생할 수도 있음
- 네트워크 문제일 경우도 있음
- InnoDB의 모니터링 명령이나 상태 조회 명령("Show Engine Innodb Status") 의 결과 메시지
- MySQL의 종료 메시지
2. General Log file
- MySQL 서버에서 실행되는 쿼리를 기록
- 쿼리가 실행되기 전에 MySQL 이 쿼리 요청을 받으면 바로 기록하기 때문에 쿼리 실행 중 에러가 발생해도 로그파일에 기록
- 5.1.12 이전에는 "general-log" 이며, 이상에서는 "general_log_file" 로 파라미터 정의
- 5.1 이상에서는 쿼리 로그 파일이 아닌 테이블에 저장하도록 설정이 가능 -> log_output 파라미터에 의해 결정
- general log 영구 적용
$ vi /etc/my.cnf
general_log = 1
general_log_file = /var/log/mysql_general.log
$ service mysqld restart
- mysql> set global general_log = off;
3. Slow Query log
- log_query_time 파라미터를 이용하여 초 단위로 설정 하여 이상의 시간이 소요된 쿼리가 모두 기록
- 쿼리가 정상적으로 실행이 완료 되어야 Slow Query log에 기록될 수 있음
(정상적으로 실행이 완료됐고 실행하는 데 걸린 시간)
- slow 관련 설정은 Dynamic 으로 set global 명령으로 재시작 없이 수정 가능
mysql> show variables like 'slow%';
mysql> show variables like 'long%';
mysql> show variables like 'log%';
mysql> set global show_query_log = ON;
mysql> set global show_query_log = OFF;
mysql> set global long_query_time = 10;
ex) 5.1 미만
long_query_time = 1
log_slow_queries = /var/log/mysql-slow.log
ex) 5.1 이상
log-output = File 또는 Table
slow-query-log = 1
long_query_time = 10
slow_query_log_file = /var/log/mysql-slow.log
log-bin=/home/mysql_log/bin_log/bin # 빈로그 저장 설정 및 저장할 디렉토리 지정
binlog_cache_size = 2M # binlog cache 사이즈
max_binlog_size = 50M # bin로그 최대 파일 사이즈
expire_logs_days = 10 # 보관기간
- 인덱스를 사용하지 않는 쿼리 추출용 옵션 변수 on/off
mysql> log_queries_not_using_indexes = off
#==========================================================================================================================================
# Time : 110202 12:13:14 => 쿼리 종료 시간
# User@Host: root[root] @ localhost [] => 쿼리 실행한 사용자
# Query_time : 15.407663 => 수행시간 Lock_time : 0.000198 => Update문을 실행하기 위해 테이블 락을 기다렸다는 의미 Row_sent: 0 =>쿼리 결과의 몇건을 클라이언트로 보냈는지 표시 Rows_examined : 5 => 쿼리가 처리되기 위해 몇건의 데이터를 검색 했는지 카운트
Update tab set fd=100 where fd=10;
#==========================================================================================================================================
- MyISAM 이나 Memory Storage Engine 에서는 테이블 단위의 잠금을 사용하기에 select 쿼리도 1초 이상 소요될 가능성 있음.
- InnoDB도 select 쿼리에 대해 lock_time 이 0이 아니는 경우가 생기지만 MySQL Engine 레벨에서 설정한 테이블 잠금 때문일 가능성이 있음
- 사용자가 " Lock Table 테이블 " 명령으로 획득한 잠금에 의해서 생긴 슬로우 쿼리는 로그에 기록되지 않음
4. Binary Log와 Relay Log
- 바이너리 로그파일은 마스터 MySQL 서버에 생성되고 릴레이 로그는 슬레이브 MySQL 서버에 생성된다는 것 말고는 바이너리 로그와 릴레이 로그 파일의 내용이나 포맷은 동일
- 바이너리 로그파일에는 Select 등의 문장은 포함되지 않고 DML 쿼리가 기록
- mysqlbinlog 를 이용하여 바이너리 파일을 텍스트로 변형 가능
ex) mysqlbinlog binlog.000012 > binlog.sql
ex) Slave와 Master 동기화 방법
- mysql> stop slave stuats;
mysql> change master to master_log_file = 'binlog.000013', master_log_pos = '443232';
mysql> start slave status;
[추가내용]
'MySQL' 카테고리의 다른 글
[MySQL] mysqllbinlog event_type: 19 (0) | 2016.10.20 |
---|---|
[MySQL] Binary log 정리 (0) | 2016.10.18 |
[MySQL] Query 관련 수정 (Index) (0) | 2016.09.29 |
[펌][MySQL] 대용량 테이블의 경우 성능 개선을 위한 10 가지 방안 (0) | 2016.08.03 |
[MySQL] Stored Procedure 장단점 (2) | 2016.07.19 |