728x90
반응형
4.4. MySQL 로그 파일
에러 로그 파일
- 실행 도중 발생하는 에러/경고 메시지를 담은 로그 파일
- 생성 경로:
my.cnf
의log_error
에 정의 되어있는 경로에 생성 - 에러 로그 파일에 기록되는 다양한 메시지 유형:
- 설정 파일 변경 혹은 비정상적 종료 이후 재시작인 경우
- 예. 설정 변경이 있을 경우, 해당 로그를 통해 설정이 의도대로 설정이 되어있는지 확인
- 비정상적 종료 이후 트랜잭션 복구 시 발생한 경우
- 복구에 실패할 경우를 대비하여 에러 로그 확인 필요
- 해당 에러 로그를 보면서
innodb_force_recovery
파라미터 설정 필요
- 쿼리 처리 도중 에러가 발생한 경우
- 클라이언트 앱에서 정상적으로 연결 종료를 하지 못한 경우
- 이 로그를 확인하여 앱의 접속 종료 로직을 검토할 수 있음
max_connect_errors
: 클라이언트에서 발생한 에러의 횟수가 넘을 경우 MySQL 서버에서 블락
- 테이블 모니터링 / 락 모니터링 / 엔진 상태 조회하는 경우
- 상대적으로 큰 메시지를 에러 로그 파일에 저장함
- 모니터링을 계속 활성화해두면 로그 파일이 너무 커져 파일 시스템 공간이 고갈될 수 있음
- MySQL 서버의 종료되는 경우
- 왜 MySQL 서버가 죽는지 확인 가능
- 누가 해당 서버를 직접 죽였으면
Received SHUTDOWN from user ...
로 확인 가능 - 직접 안죽였으면
Segmentation fault
로 비정상적으로 종료된것으로 판단 가능
- 설정 파일 변경 혹은 비정상적 종료 이후 재시작인 경우
제너럴 쿼리 로그 파일
- 쿼리 로그를 활성화해 실행되는 쿼리들의 목록 확인 가능
general_log_file
파라미터로 제너럴 로그 파일 경로 설정 (혹은 별도 테이블에 저장도 가능)- 슬로우 쿼리라는 다르게 실행되기 전에 기록이 되는 로그
슬로우 쿼리 로그 파일
- MySQL 서버의 쿼리 튜닝
- 서비스 적용 전 튜닝
- 서비즈 적용 후 운영 중 성능 저하 검사 및 정기점검
- 후자일 경우 어떤 쿼리가 문제인지 파악하기 위해 슬로우 쿼리 로그 파일 사용
long_query_time
보다 오래걸린 쿼리들을 모두 기록- 여기서 기록되는 쿼리는 모두 정상적으로 실행이 완료된 쿼리들만 기록이 됌
log_output
옵션을 통해 테이블 혹은 파일로 저장할지 선택 가능
# Time:2020-07-19T15:44:22.178484+09:00
# User@Host:root[root] @ localhost [] Id: 14
# Query_time:1.180245 Lock_time:0.002658 Rows_sent:1 Rows_examined:2844047
use employees;
SET timestamp=1595141060;
select emp_no, max(salary) from salaries;
- 예제 설명:
- Time: 쿼리가 종료된 시점 / 시작시간은 Time - Query_time으로 계산 가능
- Query_time: 쿼리 실행 소요시간
- Lock_time: MySQL 엔진 레벨에서의 테이블 잠금에 대한 대기시간 (잠금 체크와 같은 코드 실행부분까지 포함)
- InnoDB: MySQL의 잠금 처리는 엔진 레벨과 스토리지 엔진 레벨의 두가지 레이어로 처리
- MyISAM: 테이블 단위의 잠금을 사용하여 SELECT 쿼리라도 Lock_time이 길수도 있음
- 다만, InnoDB에서도 SELECT 쿼리의 Lock_time이 길수 있는데, 이유는 InnoDB의 레코드수준의 잠금이 아닌 MySQL 엔진 레벨에서 설정한 테이블 잠금 때문일수도 있음
- 즉, InnoDB에서 슬로우 쿼리 로그의 Lock_time은 도움이 별로 안됌
- Rows_Sent: 실제 몇건의 처리 결과를 보냈는지 나타냄
- Rows_examined: 쿼리가 처리되기 위해 몇건의 레코드에 접근했는지 나타냄
- 슬로우 쿼리 / 제너럴 로그 파일의 내용이 너무 많아 검토하기 어려울 경우, Percona Toolkit의 pt-query-digest 스크립트를 사용하여 빈도/처리성능별로 쿼리 정렬 가능
- 슬로우 쿼리 통계
- 모든 쿼리를 대상으로 슬로우 쿼리 로그의 실행 시간 / 잠금 대기 시간 등에 대해 평균/회소/회대값 표시
- 슬로우 쿼리 통계
- 실행 빈도 및 누적 실행 시간순 랭킹
- 같은 모양의 쿼리라면 동일한 Query ID를 갖게 됌
- 쿼리별 실행 횟수 및 누적 실행 시간 상세정보
- 특정 쿼리에 대한 자세한 내용을 보여줌
728x90
반응형
'책 > RealMySQL' 카테고리의 다른 글
RealMySQL 5.1 - 트랜잭션 (0) | 2023.04.04 |
---|---|
RealMySQL 4.3 - MyISAM 스토리지 엔진 아키텍처 (0) | 2023.03.18 |
RealMySQL 4.2 - InnoDB 스토리지 엔진 아키텍쳐 (2) (0) | 2023.02.19 |
RealMySQL 4.2 - InnoDB 스토리지 엔진 아키텍쳐 (1) (0) | 2023.02.19 |
RealMySQL 4장 - 4.1 MySQL 엔진 아키텍처 (0) | 2023.01.20 |