로깅
장애가 난 뒤 원인을 재현할 근거를 남기는 절이다. 슬로우 쿼리 로그는 기본적으로 꺼져 있고 에러 로그 시각은 기본적으로 UTC 이므로, 이 두 기본값을 그대로 둘지 구축 시점에 정한다.
슬로우 쿼리 로그
| 파라미터 | 기본값 |
|---|---|
slow_query_log |
비활성 |
slow_query_log_file |
host_name-slow.log(데이터 디렉터리) |
long_query_time |
10초 (최소 0, 마이크로초 해상도) |
log_queries_not_using_indexes |
비활성 |
[mysqld]
slow_query_log = ON
long_query_time = 1 # 예시값, 로그량을 보고 조정
log_queries_not_using_indexes = OFF
- 슬로우 쿼리 로그는 기본적으로 꺼져 있다. 문제를 나중에 재현하려면 처음부터 켜 둔다.
log_queries_not_using_indexes를 켜면 인덱스를 쓰지 않는 조회가 모두 기록된다.log_throttle_queries_not_using_indexes의 기본값0은 무제한이므로, 켤 때는 스로틀 값을 함께 지정한다.log_slow_admin_statements와log_slow_replica_statements도 기본 비활성이다.- 초기 락을 얻는 시간은 실행 시간에 포함되지 않는다.
mysqld는 문장을 실행하고 모든 락을 해제한 뒤 기록하므로, 로그 순서가 실행 순서와 다를 수 있다.
에러 로그
log_error_verbosity는 기본2, 최소1, 최대3이다.1은ERROR,2는ERROR·WARNING,3은ERROR·WARNING·INFORMATION을 남긴다.2이상이면 문장 기반 로깅에 안전하지 않은 문장에 대한 메시지를 남긴다.3이면 중단된 커넥션과 신규 접속 시도의 접근 거부 에러까지 기록한다.- 복제를 쓴다면
2이상이 문서 권고다. 네트워크 장애나 재접속 정보를 얻기 위해서다. SYSTEM우선순위 메시지는 verbosity 필터를 받지 않는다. 시작·종료 메시지와 주요 설정 변경은 항상 기록된다.log_filter_internal은 내장이며 기본 활성이다. 이 필터를 끄면log_error_verbosity와log_error_suppression_list가 무효가 된다.log_error_services의 기본값은log_filter_internal; log_sink_internal이다.log_timestamps의 기본값은UTC이고 허용값은UTC와SYSTEM이다. 에러 로그 전체와 일반·슬로우 쿼리 로그 파일에 적용된다. 형식은 ISO 8601/RFC 3339(2020-08-07T15:02:00.832521Z)다.time_zone을Asia/Seoul로 두어도 로그 시각은 기본적으로 UTC 다. 장애 시각을 맞출 때 혼동하지 않도록 둘 중 하나를 기준으로 통일한다.
Advertisement