MySQL에서 로깅과 모니터링을 통한 문제 해결

 

MySQL은 다양한 로그와 모니터링 기능을 제공하여 성능 저하나 오류를 빠르게 진단하고 해결할 수 있도록 도와줍니다.
실무에서 자주 사용하는 MySQL의 주요 로그 설정모니터링 방법, 그리고 이를 활용한 문제 해결 팁을 소개합니다.

 

MySQL의 주요 로그 종류

MySQL에서는 여러 종류의 로그를 통해 시스템 상태와 쿼리 흐름을 추적할 수 있습니다.

  • Error Log: 서버 시작, 중단, 오류 기록
  • General Query Log: 실행되는 모든 쿼리 기록
  • Slow Query Log: 일정 시간 이상 걸린 느린 쿼리 기록
  • Binary Log: 데이터 변경 이력 기록 (복제 및 PITR에 사용)

슬로우 쿼리 로그 설정 예시


SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 1; -- 1초 이상 소요되는 쿼리만 기록
SHOW VARIABLES LIKE 'slow_query_log_file';
  

 

문제 해결을 위한 로그 활용법

1. 슬로우 쿼리 분석으로 병목 식별

실행 시간이 긴 쿼리는 mysqldumpslow 또는 pt-query-digest 등의 도구로 분석하면, 병목 지점을 파악할 수 있습니다.

2. 에러 로그로 서비스 장애 추적

서버 다운, 커넥션 실패, 테이블 손상 등은 에러 로그에서 힌트를 찾을 수 있습니다.

3. 일반 쿼리 로그로 의심 쿼리 추적

특정 시간대에 집중된 과도한 요청이나 반복 쿼리를 확인할 때 유용합니다.

 

 Performance Schema로 실시간 모니터링

Performance Schema는 MySQL 5.5 이상에서 제공되는 성능 수집 및 진단 도구입니다. 쿼리 성능, 메모리 사용량, 락 대기 등을 확인할 수 있습니다.


-- 사용 중인 스레드 확인
SELECT * FROM performance_schema.threads;

-- 쿼리 이벤트 시간 분석
SELECT * FROM performance_schema.events_statements_summary_by_digest
ORDER BY AVG_TIMER_WAIT DESC LIMIT 5;
  

활성화 여부 확인


SHOW VARIABLES LIKE 'performance_schema';
  

 

외부 모니터링 도구 활용

MySQL은 외부의 오픈소스 또는 상용 모니터링 도구와 연동하여 더욱 직관적인 분석 환경을 구축할 수 있습니다.

  • Percona Monitoring and Management (PMM): 실시간 쿼리 분석, 대시보드 제공
  • Grafana + Prometheus: 시계열 모니터링 및 알림 설정 가능
  • MySQL Enterprise Monitor: Oracle의 공식 상용 도구

 

정리 및 권장 사항

  • 슬로우 쿼리 로그는 반드시 활성화하고 주기적으로 분석
  • 서비스 장애 시 에러 로그 먼저 확인
  • Performance Schema는 서버 리소스를 많이 사용하므로 필요한 항목만 활성화
  • 모니터링 도구와 알림 시스템을 연동하여 사전 대응 체계 구축