2025-08-19
오늘 배운 것
4.4 MySQL 로그 파일
4.4.1 에러 로그 파일
- MySQL이 실행되는 도중에 발생하는 에러나 경고 메시지가 출력되는 로그 파일
4.4.1.1 MySQL이 시작하는 과정과 관련된 정보성 및 에러 메시지
- 에러 로그 파일로 잘 설정되었는 지 의도한대로 적용되었는지 확인해야 하는 경우
- MySQL의 설정 파일을 변경
- 데이터베이스가 비정상적으로 종료된 이후 다시 시작하는 경우
- 판단 기준
- 서버 정상 작동 여부
- 특별한 에러 혹은 경고성 메시지 존재 여부
4.4.1.2 마지막으로 종료할 때 비정상적으로 종료된 경우 나타나는 InnoDB의 트랜잭션 복구 메시지
- 서버가 비정상적 또는 강제적으로 종료시 다시 시작되면서 완료되지 못한 트랜잭션을 정리하고 디스크에 기록되지 못한 데이터가 있다면 다시 기록하는 재처리 작업을 함
- 간혹 문제가 있어 복구가 안될 때, 에러메시지를 출력하고 서버 다시 종료됨
innodb_force_recovery
파라미터 변수 값 조정하여 서버 기동후 데이터 복원(1~6)
4.4.1.3 쿼리 처리 도중에 발생하는 문제에 대한 에러 메시지
- 사전 예방이 어려우며, 주기적으로 에러 로그 파일을 검토하는 과정에서 알게되는 에러 메시지
4.4.1.4 비정상적으로 종료된 커넥션 메시지(Aborted connection)
- 클라이언트 애플리케이션에서 정상적으로 접속 종료를 하지 못하고 프로그램이 종료된 경우
- 혹은 네트워크에 문제가 있어서 의도하지 않게 접속이 끊어지는 경우
- 이 에러 메시지가 아주 많이 기록 된다면 커넥션 종료 로직 검토해보기
4.4.1.5 InnoDB의 모니터링 또는 상태 조회 명령(SHOW ENGINE INNODB STATUS 같은)의 결과 메시지
- InnoDB의 테이블 모니터링, 락 모니터링, InnoDB의 엔진 상태를 조회하는 명령은 상대적으로 큰 메시지를 에러 로그 파일에 기록
- 따라서 모니터링 이후에는 다시 비활성화 해서 에러 로그 파일이 커지지 않게 만들어야 한다.
4.4.1.6 MySQL 종료 메시지
- 가끔 MySQL이 아무도 모르게 종료돼있거나 때로는 아무도 모르게 재시작 되는 경우
- 왜 종료 되었는지 확인하는 유일한 방법
-
아무런 종료 메시지가 없거나 스택 트레이스와 같은 내용이 출력되는 경우
→ 세그먼테이션 폴트로 비정상적으로 종료 된것
→ 따라서 스택 트레이스를 가능한 참조하여 버그 파악 후 해결
4.4.2 제너럴 쿼리 로그 파일(제너럴 로그 파일, General log)
- MySQL이 쿼리 요청을 받으면 해당 쿼리의 성공 여부와 상관 없이 모든 쿼리가 시간 단위로 기록
4.4.3 슬로우 쿼리 로그
- MySQL 서버의 쿼리 튜닝 목적
- 서비스 적용전 전체적으로 튜닝
- 검토 대상이 쿼리가 전부라 모두 튜닝하면됌
- 서비스 운영 중 전체적인 성능 저하 검사 혹은 정기적인 점검을 위한 튜닝
- 정확한 튜닝 대상을 찾기 어려움 → 슬로우 쿼리 로그로 튜닝 대상 파악 가능
- 서비스 적용전 전체적으로 튜닝
- 설정한 시간 이상 실행된, 즉 정상적인 쿼리 중 시간이 많이 소요된 쿼리만 기록됨
- 슬로우 쿼리 로그 내용
Rows_examined
&Rows_sent
- 집합 함수가 아닌 쿼리에 대하여 접근 행은 많은데 정작 보낸 행이 적다면 튜닝해볼 가치가 있음