RDS for MySQL 데이터베이스 로그 개요
다음 유형의 RDS for MySQL 로그 파일을 모니터링할 수 있습니다.
-
오류 로그
-
느린 쿼리 로그
-
일반 로그
-
감사 로그
RDS for MySQL 오류 로그는 기본적으로 생성됩니다. DB 파라미터 그룹에서 파라미터를 설정하여 느린 쿼리 및 일반 로그를 생성할 수 있습니다.
주제
RDS for MySQL 오류 로그
RDS for MySQL은 mysql-error.log
파일에 오류를 기록합니다. 각 로그 파일이 생성된 시간(UTC)이 파일 이름에 추가됩니다. 로그 파일에는 타임스탬프도 포함되어 있어, 로그 항목이 작성된 시간을 확인하는 데 도움이 됩니다.
RDS for MySQL에서는 시작, 종료 및 오류 발생 시에만 오류 로그에 데이터가 로그됩니다. DB 인스턴스는 오류 로그에 새 항목이 기록되지 않는 상태로 몇 시간이나 며칠씩 작동할 수 있습니다. 최근 항목이 보이지 않으면 이는 서버에서 로그에 입력될 만한 오류가 발생하지 않았기 때문입니다.
기본적으로 오류 로그는 오류와 같은 예기치 않은 이벤트만 표시되도록 필터링됩니다. 그러나 오류 로그에는 쿼리 진행률과 같이 표시되지 않는 몇 가지 추가 데이터베이스 정보도 포함되어 있습니다. 따라서 실제 오류가 없더라도 진행 중인 데이터베이스 작업으로 인해 오류 로그의 크기가 커질 수 있습니다. 그리고 AWS Management Console에서 오류 로그의 특정 크기(바이트 또는 킬로바이트)를 볼 수 있지만 다운로드할 때 0바이트일 수 있습니다.
RDS for MySQL은 5분마다 mysql-error.log
를 디스크에 씁니다. 또한, 로그의 콘텐츠를 mysql-error-running.log
에 추가합니다.
RDS for MySQL은 mysql-error-running.log
파일을 1시간마다 교체합니다. 또한, 지난 2주 동안 생성된 로그를 보존합니다.
참고
로그 보존 기간은 Amazon RDS와 Aurora 간에 다릅니다.
RDS for MySQL 느린 쿼리 로그 및 일반 로그
RDS for MySQL 느린 쿼리 로그와 일반 로그를 파일이나 데이터베이스 테이블에 기록할 수 있습니다. 그러려면 DB 파라미터 그룹의 파라미터를 설정합니다. DB 파라미터 그룹의 생성 및 변경에 대한 자세한 내용은 Amazon RDS의 파라미터 그룹 단원을 참조하십시오. 이런 파라미터를 설정해야 Amazon RDS 콘솔에서 느린 쿼리 로그 또는 일반 로그를 볼 수 있습니다. 아니면 Amazon RDS API, Amazon RDS CLI 또는 AWS SDK를 사용하여 볼 수 있습니다.
이 목록에 있는 파라미터를 사용하여 RDS for MySQL 로깅을 제어할 수 있습니다.
-
slow_query_log
: 느린 쿼리 로그를 만들려면 1로 설정합니다. 기본값은 0입니다. -
general_log
: 일반 로그를 만들려면 1로 설정합니다. 기본값은 0입니다. -
long_query_time
: 빠르게 실행되는 쿼리가 느린 쿼리 로그에 기록되지 않도록 하려면 로깅할 쿼리의 최단 런타임 값(초)을 지정합니다. 기본값은 10초이고, 최소값은 0초입니다. log_output = FILE인 경우에는 마이크로초 단위까지 부동 소수점 값을 지정할 수 있습니다. log_output = TABLE인 경우에는 초 단위로 정수 값을 지정해야 합니다. 런타임이long_query_time
값을 초과하는 쿼리만 로깅됩니다. 예를 들어long_query_time
을 0.1로 설정하면 100밀리초 미만의 시간 동안 작동하는 쿼리가 로그에 기록되지 않습니다. -
log_queries_not_using_indexes
: 인덱스를 사용하지 않는 모든 쿼리를 느린 쿼리 로그에 기록하려면 1로 설정합니다. 인덱스를 사용하지 않는 쿼리는 런타임이long_query_time
파라미터의 값보다 짧아도 로깅됩니다. 기본값은 0입니다. -
log_output
:option
log_output
파라미터에 대해 다음 옵션 중 하나를 지정할 수 있습니다.-
TABLE(기본값) – 일반 쿼리를
mysql.general_log
테이블에 쓰고 느린 쿼리를mysql.slow_log
테이블에 씁니다. -
FILE – 일반 쿼리 로그와 느린 쿼리 로그를 모두 파일 시스템에 씁니다.
-
NONE – 로깅을 비활성화합니다.
-
느린 쿼리 및 일반 로그에 대한 자세한 내용은 MySQL 문서에서 다음 항목을 참조하십시오.
MySQL 감사 로그
감사 로그에 액세스하려면 DB 인스턴스가 MARIADB_AUDIT_PLUGIN
옵션과 함께 사용자 지정 옵션 그룹을 사용해야 합니다. 자세한 내용은 MySQL에 대한 MariaDB 감사 플러그인 지원 단원을 참조하십시오.
RDS for MySQL용 로그 교체 및 보존
로깅을 사용하는 경우, Amazon RDS는 테이블 로그를 순환하거나 로그 파일을 정기적으로 삭제합니다. 이러한 예방 조치를 취하면 데이터베이스 사용에 방해가 되거나 성능에 영향을 미치는 큰 로그 파일이 생성될 가능성을 줄일 수 있습니다. RDS for MySQL은 교체 및 삭제를 다음과 같이 처리합니다.
-
MySQL 느린 쿼리 로그, 오류 로그 및 일반 로그 파일 크기는 DB 인스턴스에 대해 할당된 스토리지 공간의 2% 이하로 제한됩니다. 이 임계값을 유지하기 위해 매시간 로그가 자동으로 교체됩니다. MySQL은 2주 이상 지난 로그 파일을 제거합니다. 오래된 로그 파일을 제거한 후 로그 파일의 총 크기가 임계값을 초과하는 경우에는 로그 파일의 전체 크기가 임계값 이하로 작아질 때까지 가장 오래된 로그 파일부터 차례대로 삭제됩니다.
-
FILE
로깅을 사용하는 경우 로그 파일은 매시간 검사되며 2주 이상 지난 로그 파일은 삭제됩니다. 경우에 따라 삭제 후 나머지 로그 파일의 총 크기가 DB 인스턴스에 할당된 공간 중 2%의 임계값을 초과할 수 있습니다. 이 경우 로그 파일의 전체 크기가 임계값 이하로 작아질 때까지 가장 오래된 로그 파일부터 차례대로 삭제됩니다. -
TABLE
로깅이 활성화된 경우 경우에 따라 로그 테이블이 24시간마다 순환됩니다. 테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 20% 이상을 차지하면 이 교체가 발생합니다. 모든 로그를 합쳤을 때 크기가 10GB를 초과하는 경우에도 교체됩니다. DB 인스턴스에 대해 사용된 공간의 양이 DB 인스턴스의 할당된 스토리지 공간 중 90% 이상을 차지할 경우, 로그 순환을 위한 임계값은 줄어듭니다. 테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 10% 이상을 차지하면 로그 테이블이 교체됩니다. 모든 로그를 합쳤을 때 크기가 10GB를 초과하는 경우에도 교체됩니다. 공간 확보를 위해 로그 테이블이 순환되면 알림을 받으려면low_free_storage
이벤트를 구독할 수 있습니다. 자세한 내용은 Amazon RDS 이벤트 알림 작업 단원을 참조하십시오.로그 테이블이 교체되면 현재 로그 테이블이 먼저 백업 로그 테이블에 복사됩니다. 그런 다음 현재 로그 테이블의 항목이 제거됩니다. 백업 로그 테이블이 이미 존재할 경우, 현재 로그 테이블이 백업으로 복사되기 전에 백업 로그 테이블이 삭제됩니다. 필요하다면 백업 로그 테이블을 쿼리할 수 있습니다.
mysql.general_log
테이블에 대한 백업 로그 테이블 이름은mysql.general_log_backup
으로 지정됩니다.mysql.slow_log
테이블에 대한 백업 로그 테이블 이름은mysql.slow_log_backup
으로 지정됩니다.mysql.general_log
절차를 호출하면mysql.rds_rotate_general_log
테이블을 순환할 수 있습니다.mysql.slow_log
절차를 호출하면mysql.rds_rotate_slow_log
테이블을 순환할 수 있습니다.데이터베이스 버전 업그레이드가 진행되는 동안 테이블 로그가 순환됩니다.
Amazon RDS 콘솔, Amazon RDS API, Amazon RDS CLI 또는 AWS SDK에서 로그를 사용하여 작업하려면 log_output
파라미터를 FILE로 설정합니다. MySQL 오류 로그와 같이, 이런 로그 파일은 매시간 순환됩니다. 이전 2주 동안 생성된 로그 파일은 유지됩니다. 보존 기간은 Amazon RDS와 Aurora 간에 다릅니다.
다시 실행 로그의 크기 제한
RDS for MySQL 버전 8.0.32 이하에서는 이 파라미터의 기본값이 256MB입니다. 이 양은 innodb_log_file_size
파라미터의 기본값(128MB)에 innodb_log_files_in_group
파라미터의 기본값(2)을 곱하여 산출됩니다. 자세한 내용은 Amazon RDS for MySQL의 파라미터 구성 모범 사례, 1부: 성능과 관련된 파라미터
RDS for MySQL 버전 8.0.33부터 Amazon RDS는 innodb_log_file_size
파라미터 대신 innodb_redo_log_capacity
파라미터를 사용합니다. innodb_redo_log_capacity
파라미터의 Amazon RDS 기본값은 2GB입니다. 자세한 내용은 MySQL 설명서의 MySQL 8.0.30 변경 사항에 관한 문서