MariaDB 느린 쿼리 및 일반 로그 액세스

MariaDB 느린 쿼리 및 일반 로그 액세스

DB 파라미터 그룹에서 파라미터를 설정하여 MariaDB 느린 쿼리 로그와 일반 로그를 파일 또는 데이터베이스 테이블에 쓸 수 있어요. DB 파라미터 그룹의 생성 및 수정에 대한 자세한 내용은 Amazon RDS용 파라미터 그룹을 참조하세요. Amazon RDS 콘솔 또는 Amazon RDS API, AWS CLI, AWS SDK에서 느린 쿼리 로그나 일반 로그를 보려면 먼저 이 파라미터를 설정해야 해요.

다음 목록의 파라미터를 사용해 MariaDB 로깅을 제어할 수 있어요:

  • slow_query_log 또는 log_slow_query: 느린 쿼리 로그를 만들려면 1로 설정합니다. 기본값은 0입니다.
  • general_log: 일반 로그를 만들려면 1로 설정합니다. 기본값은 0입니다.
  • long_query_time 또는 log_slow_query_time: 느린 쿼리 로그에 빠른 쿼리가 기록되는 것을 방지하려면 로그에 기록할 최단 쿼리 실행 시간(초)을 지정합니다. 기본값은 10초이고 최솟값은 0입니다. log_output = FILE이면 마이크로초 해상도까지 가는 부동 소수점 값을 지정할 수 있습니다. log_output = TABLE이면 초 단위 해상도의 정수 값을 지정해야 합니다. 실행 시간이 long_query_time 또는 log_slow_query_time 값을 초과하는 쿼리만 기록됩니다. 예를 들어 long_query_time 또는 log_slow_query_time을 0.1로 설정하면 100밀리초 미만으로 실행되는 쿼리는 기록되지 않습니다.
  • log_queries_not_using_indexes: 인덱스를 사용하지 않는 모든 쿼리를 느린 쿼리 로그에 기록하려면 이 파라미터를 1로 설정합니다. 기본값은 0입니다. 인덱스를 사용하지 않는 쿼리는 실행 시간이 long_query_time 파라미터 값보다 짧아도 기록됩니다.
  • log_output 옵션: log_output 파라미터에 대해 다음 옵션 중 하나를 지정할 수 있습니다:
    • TABLE(기본값) – 일반 쿼리를 mysql.general_log 테이블에, 느린 쿼리를 mysql.slow_log 테이블에 기록합니다.
    • FILE – 일반 로그와 느린 쿼리 로그를 모두 파일 시스템에 기록합니다. 로그 파일은 매시간 순환됩니다.
    • NONE – 로깅을 비활성화합니다.

로깅이 활성화되면 Amazon RDS는 정기적으로 테이블 로그를 순환하거나 로그 파일을 삭제해요. 이 조치는 큰 로그 파일이 데이터베이스 사용을 차단하거나 성능에 영향을 주는 가능성을 줄이기 위한 예방 조치예요. FILE 및 TABLE 로깅은 다음과 같이 순환 및 삭제를 처리해요:

  • FILE 로깅이 활성화된 경우 – 로그 파일은 매시간 검사되고 24시간보다 오래된 로그 파일은 삭제됩니다. 삭제 후 남은 결합 로그 파일 크기가 DB 인스턴스 할당 공간의 2% 임계값을 초과하는 경우가 있습니다. 이런 경우 로그 파일 크기가 임계값을 초과하지 않을 때까지 가장 큰 로그 파일이 삭제됩니다.
  • TABLE 로깅이 활성화된 경우 – 경우에 따라 로그 테이블은 24시간마다 순환됩니다. 테이블 로그가 차지하는 공간이 할당된 스토리지 공간의 20%를 초과하면 이 순환이 발생합니다. 모든 로그의 결합 크기가 10GB보다 크면 순환이 발생하기도 합니다. DB 인스턴스에 사용된 공간이 할당된 스토리지 공간의 90%보다 크면 로그 순환 임계값이 줄어듭니다. 그러면 테이블 로그가 차지하는 공간이 할당된 스토리지 공간의 10%를 초과하면 로그 테이블이 순환됩니다. 모든 로그의 결합 크기가 5GB보다 크면 순환되기도 합니다.
    • 로그 테이블이 순환되면 현재 로그 테이블이 백업 로그 테이블에 복사되고 현재 로그 테이블의 항목이 제거됩니다. 백업 로그 테이블이 이미 존재하면 현재 로그 테이블이 백업에 복사되기 전에 삭제됩니다. 필요하면 백업 로그 테이블을 쿼리할 수 있습니다. mysql.general_log 테이블의 백업 로그 테이블 이름은 mysql.general_log_backup입니다. mysql.slow_log 테이블의 백업 로그 테이블 이름은 mysql.slow_log_backup입니다.
    • mysql.rds_rotate_general_log 프로시저를 호출해 mysql.general_log 테이블을 순환할 수 있습니다. mysql.rds_rotate_slow_log 프로시저를 호출해 mysql.slow_log 테이블을 순환할 수 있습니다.
    • 데이터베이스 버전 업그레이드 중에는 테이블 로그가 순환됩니다.

Amazon RDS는 TABLE 및 FILE 로그 순환을 Amazon RDS 이벤트에 기록하고 알림을 보내요.

Amazon RDS 콘솔, Amazon RDS API, Amazon RDS CLI 또는 AWS SDK에서 로그로 작업하려면 log_output 파라미터를 FILE로 설정하세요. MariaDB 오류 로그와 마찬가지로 이 로그 파일은 매시간 순환됩니다. 이전 24시간 동안 생성된 로그 파일이 보존됩니다.

느린 쿼리 및 일반 로그에 대한 자세한 내용은 MariaDB 문서의 다음 주제를 참조하세요:

  • Slow query log
  • General query log

출처: 문서

본문

MariaDB 느린 쿼리 및 일반 로그 액세스

DB 파라미터 그룹에서 파라미터를 설정하여 MariaDB 느린 쿼리 로그와 일반 로그를 파일 또는 데이터베이스 테이블에 쓸 수 있어요. DB 파라미터 그룹의 생성 및 수정에 대한 자세한 내용은 Amazon RDS용 파라미터 그룹을 참조하세요. Amazon RDS 콘솔 또는 Amazon RDS API, AWS CLI, AWS SDK에서 느린 쿼리 로그나 일반 로그를 보려면 먼저 이 파라미터를 설정해야 해요.

다음 목록의 파라미터를 사용해 MariaDB 로깅을 제어할 수 있어요:

  • slow_query_log 또는 log_slow_query: 느린 쿼리 로그를 만들려면 1로 설정합니다. 기본값은 0입니다.
  • general_log: 일반 로그를 만들려면 1로 설정합니다. 기본값은 0입니다.
  • long_query_time 또는 log_slow_query_time: 느린 쿼리 로그에 빠른 쿼리가 기록되는 것을 방지하려면 로그에 기록할 최단 쿼리 실행 시간(초)을 지정합니다. 기본값은 10초이고 최솟값은 0입니다. log_output = FILE이면 마이크로초 해상도까지 가는 부동 소수점 값을 지정할 수 있습니다. log_output = TABLE이면 초 단위 해상도의 정수 값을 지정해야 합니다. 실행 시간이 long_query_time 또는 log_slow_query_time 값을 초과하는 쿼리만 기록됩니다. 예를 들어 long_query_time 또는 log_slow_query_time을 0.1로 설정하면 100밀리초 미만으로 실행되는 쿼리는 기록되지 않습니다.
  • log_queries_not_using_indexes: 인덱스를 사용하지 않는 모든 쿼리를 느린 쿼리 로그에 기록하려면 이 파라미터를 1로 설정합니다. 기본값은 0입니다. 인덱스를 사용하지 않는 쿼리는 실행 시간이 long_query_time 파라미터 값보다 짧아도 기록됩니다.
  • log_output 옵션: log_output 파라미터에 대해 다음 옵션 중 하나를 지정할 수 있습니다:
    • TABLE(기본값) – 일반 쿼리를 mysql.general_log 테이블에, 느린 쿼리를 mysql.slow_log 테이블에 기록합니다.
    • FILE – 일반 로그와 느린 쿼리 로그를 모두 파일 시스템에 기록합니다. 로그 파일은 매시간 순환됩니다.
    • NONE – 로깅을 비활성화합니다.

로깅이 활성화되면 Amazon RDS는 정기적으로 테이블 로그를 순환하거나 로그 파일을 삭제해요. 이 조치는 큰 로그 파일이 데이터베이스 사용을 차단하거나 성능에 영향을 주는 가능성을 줄이기 위한 예방 조치예요. FILE 및 TABLE 로깅은 다음과 같이 순환 및 삭제를 처리해요:

  • FILE 로깅이 활성화된 경우: 로그 파일은 매시간 검사되고 24시간보다 오래된 로그 파일은 삭제됩니다. 삭제 후 남은 결합 로그 파일 크기가 DB 인스턴스 할당 공간의 2% 임계값을 초과하는 경우가 있습니다. 이런 경우 로그 파일 크기가 임계값을 초과하지 않을 때까지 가장 큰 로그 파일이 삭제됩니다.
  • TABLE 로깅이 활성화된 경우: 경우에 따라 로그 테이블은 24시간마다 순환됩니다. 테이블 로그가 차지하는 공간이 할당된 스토리지 공간의 20%를 초과하면 이 순환이 발생합니다. 모든 로그의 결합 크기가 10GB보다 크면 순환이 발생하기도 합니다. DB 인스턴스에 사용된 공간이 할당된 스토리지 공간의 90%보다 크면 로그 순환 임계값이 줄어듭니다. 그러면 테이블 로그가 차지하는 공간이 할당된 스토리지 공간의 10%를 초과하면 로그 테이블이 순환됩니다. 모든 로그의 결합 크기가 5GB보다 크면 순환되기도 합니다.
    • 로그 테이블이 순환되면 현재 로그 테이블이 백업 로그 테이블에 복사되고 현재 로그 테이블의 항목이 제거됩니다. 백업 로그 테이블이 이미 존재하면 현재 로그 테이블이 백업에 복사되기 전에 삭제됩니다. 필요하면 백업 로그 테이블을 쿼리할 수 있습니다. mysql.general_log 테이블의 백업 로그 테이블 이름은 mysql.general_log_backup입니다. mysql.slow_log 테이블의 백업 로그 테이블 이름은 mysql.slow_log_backup입니다.
    • mysql.rds_rotate_general_log 프로시저를 호출해 mysql.general_log 테이블을 순환할 수 있습니다. mysql.rds_rotate_slow_log 프로시저를 호출해 mysql.slow_log 테이블을 순환할 수 있습니다.
    • 데이터베이스 버전 업그레이드 중에는 테이블 로그가 순환됩니다.

Amazon RDS는 TABLE 및 FILE 로그 순환을 Amazon RDS 이벤트에 기록하고 알림을 보내요.

Amazon RDS 콘솔, Amazon RDS API, Amazon RDS CLI 또는 AWS SDK에서 로그로 작업하려면 log_output 파라미터를 FILE로 설정하세요. MariaDB 오류 로그와 마찬가지로 이 로그 파일은 매시간 순환됩니다. 이전 24시간 동안 생성된 로그 파일이 보존됩니다.

느린 쿼리 및 일반 로그에 대한 자세한 내용은 MariaDB 문서의 다음 주제를 참조하세요:

  • Slow query log
  • General query log

더 알아보기 (Learn more)