MySQL 8.0에서 추가된 모든 기능

MySQL 8.0에서 추가된 모든 기능 – 에러 로깅

Estimated reading: 1 minute 36 views

1. 8.0에서의 향상된 오류 로깅

[원본제공링크 1]

MySQL 8.0에서는 오류 로깅 시스템이 컴포넌트 기반 아키텍처로 재설계되었습니다. 이 아키텍처는 로그 필터와 로그 싱크(출력) 컴포넌트로 구성되며, 관리자는 이를 조합하여 원하는 방식으로 로그를 처리하고 출력할 수 있습니다. 예를 들어, 특정 우선순위 이상의 메시지만 기록하거나, 로그를 JSON 형식으로 출력하는 등의 설정이 가능합니다.

2. 기본값 변경: log_error_verbosity=2

[원본제공링크 1]

MySQL 8.0부터 log_error_verbosity의 기본값이 3에서 2로 변경되었습니다. 이로 인해 서버는 이제 오류와 경고 메시지만을 오류 로그에 기록하며, 참고(Notes) 메시지는 기록하지 않습니다. 이는 기본 설정에서의 로그 출력을 줄여, 로그 파일의 크기를 감소시키고 관리 효율성을 향상시키기 위한 조치입니다.

3. 오류 메시지에 심각도, 오류 코드, 서브시스템 추가

[원본제공링크 1]

MySQL 8.0에서는 오류 메시지에 심각도, 오류 코드, 서브시스템 정보를 추가하여, 문제의 원인과 영향을 보다 명확하게 파악할 수 있도록 개선되었습니다. 이를 통해 관리자는 오류의 우선순위를 설정하고, 신속한 문제 해결이 가능합니다.

예시:

2024-11-27T03:06:15.123456Z 0 [ERROR] [MY-010123] [Server] [InnoDB] Tablespace 'my_table' is missing.
  • 2024-11-27T03:06:15.123456Z: 타임스탬프
  • 0: 스레드 ID
  • [ERROR]: 심각도
  • [MY-010123]: 오류 코드
  • [Server]: 서브시스템
  • [InnoDB]: 세부 서브시스템
  • Tablespace ‘my_table’ is missing.: 오류 메시지

4. 오류 로그 필터링

[원본제공링크 1]

MySQL 8.0의 오류 로그 필터링은 컴포넌트 기반 아키텍처를 활용하여 구현됩니다. 주요 필터 컴포넌트로는 log_filter_internallog_filter_dragnet이 있습니다. log_filter_internal은 우선순위와 오류 코드를 기반으로 필터링을 수행하며, log_filter_dragnet은 사용자 정의 규칙에 따라 로그를 필터링합니다. 이를 통해 특정 우선순위 이상의 메시지만 기록하거나, 특정 오류 코드를 제외하는 등 로그 출력을 세밀하게 제어할 수 있습니다.

5. JSON 형식으로 오류 로깅

[원본제공링크 1]

MySQL 8.0부터 도입된 log_sink_json 컴포넌트를 활용하면, 오류 로그를 JSON 형식으로 출력할 수 있습니다. JSON 형식의 로그는 키-값 쌍으로 구성되어 있어, 로그 데이터를 구조화된 형태로 저장하고 처리할 수 있습니다. 이는 로그 분석 및 모니터링 도구와의 통합을 용이하게 합니다.

6. 특정 비오류 메시지를 오류 로그에 강제 출력

[원본제공링크 1]

MySQL 8.0부터는 ‘SYSTEM_LEVEL’이라는 새로운 심각도(severity) 레벨이 도입되어, 특정 비오류 메시지를 오류 로그에 강제로 기록할 수 있습니다. 이는 기존의 ‘ERROR_LEVEL’, ‘WARNING_LEVEL’, ‘INFORMATION_LEVEL’과는 별도로, 시스템에서 중요한 이벤트나 상태 변화를 기록하는 데 사용됩니다. 예를 들어, 서버 시작 및 종료, 복제 시작 및 완료 등의 이벤트가 이에 해당합니다.

7. 경고 또는 참고 유형의 오류 로그 억제

[원본제공링크 1]

log_error_suppression_list는 오류 로그에 기록되는 경고 및 참고 메시지 중 특정 오류 코드를 지정하여 로그에서 제외할 수 있도록 하는 시스템 변수입니다. 이를 통해 빈번하게 발생하지만 중요하지 않은 메시지를 로그에서 제외하여, 로그 파일의 크기를 줄이고 관리 효율성을 높일 수 있습니다.

8. 새로운 “syseventlog” 설정

[원본제공링크 1]

MySQL 8.0에서는 오류 로그를 시스템 로그(예: Unix 계열의 syslog, Windows의 이벤트 로그)로 출력하기 위해 log_sink_syseventlog 컴포넌트를 도입했습니다. 이 컴포넌트를 통해 MySQL 서버의 오류 메시지를 운영 체제의 시스템 로그에 기록할 수 있습니다. 이는 중앙 집중식 로그 관리와 모니터링을 용이하게 합니다.

9. --log-slow-extra 추가로 더욱 풍부한 슬로우 로그 기록

[원본제공링크 1]

MySQL 8.0.14부터 --log-slow-extra 옵션이 도입되어, 슬로우 쿼리 로그에 추가적인 성능 지표를 기록할 수 있습니다. 이를 통해 쿼리 최적화와 성능 분석이 더욱 용이해졌습니다.

Thread_id: 해당 쿼리를 실행한 스레드의 ID
Errno: 쿼리 실행 시 발생한 오류 번호
Killed: 쿼리가 종료되었는지 여부
Bytes_received: 클라이언트로부터 받은 바이트 수
Bytes_sent: 클라이언트로 전송한 바이트 수
Read_first, Read_last, Read_key, Read_next, Read_prev, Read_rnd, Read_rnd_next: 핸들러 통계 정보
Sort_merge_passes, Sort_range_count, Sort_rows, Sort_scan_count: 정렬 작업 관련 통계
Created_tmp_disk_tables, Created_tmp_tables: 생성된 임시 테이블 수
Start, End: 쿼리 실행 시작 및 종료 시간

10. JSON 오류 로그에 새로운 “ts” 타임스탬프 추가

[원본제공링크 1]

MySQL 8.0.20에서 JSON 형식의 오류 로그에 ‘ts’라는 새로운 필드가 추가되었습니다. ‘ts’ 필드는 Unix 에포크 시간(1970년 1월 1일 00:00:00 UTC 이후 경과한 밀리초)을 정수 형태로 나타냅니다. 이는 로그 메시지의 발생 시점을 밀리초 단위로 정확하게 기록하여, 로그 분석 및 모니터링을 더욱 정밀하게 수행할 수 있게 합니다.

Leave a Comment



이 문서 공유

MySQL 8.0에서 추가된 모든 기능 – 에러 로깅

링크 복사

CONTENTS