일반 및 느린 쿼리 로그인으로 Lightsail에서 MySQL 쿼리 성능 모니터링 - Amazon Lightsail

일반 및 느린 쿼리 로그인으로 Lightsail에서 MySQL 쿼리 성능 모니터링

일반 쿼리 로그 및 느린 쿼리 로그는 Amazon Lightsail의 MySQL 데이터베이스에서 기본적으로 비활성화됩니다. 몇 가지 데이터베이스 파라미터를 업데이트하면 이러한 로그를 활성화하고 데이터 수집을 시작할 수 있습니다. Lightsail API, AWS Command Line Interface(AWS CLI) 또는 SDK를 사용하여 데이터베이스 파라미터를 업데이트합니다. 이 안내서에서는 데이터베이스 파라미터를 업데이트하고 일반 쿼리 로그 및 느린 쿼리 로그를 활성화하기 위해 AWS CLI를 사용하는 방법을 보여줍니다. 또한 일반 쿼리 로그 및 느린 쿼리 로그를 제어하는 것과 로그 데이터 보존을 처리하는 방법에 대한 추가 옵션을 제공합니다.

전제 조건

AWS CLI를 아직 설치 및 구성하지 않았다면 설치하고 구성합니다. 자세한 내용은 AWS Command Line Interface가 Amazon Lightsail과 함께 작동하도록 구성을 참조하세요.

Lightsail 콘솔에서 일반 쿼리 로그 및 느린 쿼리 로그를 활성화

Lightsail 콘솔에서 일반 쿼리 로그 및 느린 쿼리 로그를 활성화하려면​ general_logslow_query_log 데이터베이스 파라미터를 1의 값으로 업데이트하고 log_output 파라미터를 FILE의 값으로 업데이트해야 합니다.

Lightsail 콘솔에서 일반 쿼리 로그 및 느린 쿼리 로그를 활성화하려면
  1. 터미널 또는 명령 프롬프트 창을 엽니다.

  2. general_log 파라미터를 1의 값으로 업데이트하려면 다음 명령을 입력하세요. 이 값은 true 또는 enabled입니다.

    aws lightsail update-relational-database-parameters --region Region --relational-database-name DatabaseName --parameters "parameterName=general_log,parameterValue=1,applyMethod=pending-reboot"

    명령에서 다음과 같이 바꿉니다.

    • DatabaseName을 데이터베이스 이름으로 바꿉니다.

    • Region을 데이터베이스의 AWS 리전으로 바꿉니다.

  3. slow_query_log 파라미터를 1의 값으로 업데이트하려면 다음 명령을 입력하세요. 이 값은 true 또는 enabled입니다.

    aws lightsail update-relational-database-parameters --region Region --relational-database-name DatabaseName --parameters "parameterName=slow_query_log,parameterValue=1,applyMethod=pending-reboot"

    명령에서 다음과 같이 바꿉니다.

    • DatabaseName을 데이터베이스 이름으로 바꿉니다.

    • Region을 데이터베이스의 AWS 리전으로 바꿉니다.

  4. log_output 파라미터를 FILE의 값으로 업데이트하려면 다음 명령을 입력하십시오. 이 값은 로그 데이터를 시스템 파일에 쓰고 Lightsail 콘솔에 데이터를 표시하도록 활성화합니다.

    aws lightsail update-relational-database-parameters --region Region --relational-database-name DatabaseName --parameters "parameterName=log_output,parameterValue=FILE,applyMethod=pending-reboot"

    명령에서 다음과 같이 바꿉니다.

    • DatabaseName을 데이터베이스 이름으로 바꿉니다.

    • Region을 데이터베이스의 AWS 리전으로 바꿉니다.

  5. 다음 명령을 입력하여 데이터베이스를 재부팅하고 변경 사항을 적용합니다.

    aws lightsail reboot-relational-database --region Region --relational-database-name DatabaseName

    명령에서 다음과 같이 바꿉니다.

    • DatabaseName을 데이터베이스 이름으로 바꿉니다.

    • Region을 데이터베이스의 AWS 리전으로 바꿉니다.

    이 시점에서 데이터베이스는 재부팅하는 동안 사용할 수 없게 됩니다. 몇 분 정도 기다린 다음, Lightsail 콘솔에 로그인하여 데이터베이스에 대한 일반 쿼리 로그 및 느린 쿼리 로그를 봅니다. 자세한 내용은 Amazon Lightsail에서 데이터베이스 로그 및 이력 보기를 참조하십시오.

    참고

    데이터베이스 파라미터 업데이트에 대한 자세한 내용은 Amazon Lightsail에서​ 데이터베이스 파라미터 업데이트​를 참조하십시오.

추가적인 데이터베이스 로그 옵션 제어

MySQL 일반 쿼리 로그 및 느린 쿼리 로그에 대한 추가 옵션을 제어하려면 다음과 같은 파라미터을 업데이트하십시오.

  • log_output - 이 파라미터를 TABLE로 설정합니다. 이렇게 하면 mysql.general_log 테이블에 일반 쿼리 쓰기가 실행되며, mysql.slow_log 테이블에 느린 쿼리 쓰기가 실행됩니다. 또한 log_output 파라미터를 NONE으로 설정하면 로깅을 비활성화할 수 있습니다.

    참고

    log_output 파라미터를 TABLE로 설정하면 Lightsail 콘솔에서 일반 쿼리 로그 및 느린 쿼리 로그의 데이터 표시가 비활성화됩니다. 그 대신 로그 데이터를 보려면 데이터베이스에서 mysql.general_logmysql.slow_log 테이블을 참조해야 합니다.

  • 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로 설정합니다. 기본값은 0입니다. 인덱스를 사용하지 않는 쿼리는 실행 시간이 long_query_time 파라미터의 값보다 짧아도 로그에 기록됩니다.

로그 데이터 보존

로깅을 사용하는 경우, 테이블 로그가 순환되거나 정기적으로 로그 파일이 삭제됩니다. 이러한 예방 조치를 취하면 데이터베이스 사용에 방해가 되거나 성능에 영향을 미치는 큰 로그 파일이 생성될 가능성을 줄일 수 있습니다. log_output 파라미터가 FILE 또는 TABLE로 설정된 경우, 로깅은 다음과 같이 처리됩니다.

  • FILE 로깅을 사용하는 경우, 로그 파일은 매시간 검사되며 24시간 이상 지난 로그 파일은 삭제됩니다. 경우에 따라 삭제 후 나머지 로그 파일의 총 크기가 데이터베이스에 할당된 공간 중 2%의 임계값을 초과할 수 있습니다. 이러한 경우 로그 파일의 전체 크기가 임계값 이하로 작아질 때까지 가장 큰 로그 파일부터 차례대로 삭제됩니다.

  • TABLE 로깅이 활성화되면 로그 테이블은 경우에 따라 24시간마다 순환됩니다.

    테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 20% 이상을 차지하거나 모든 로그의 총 크기가 10GB 이상일 경우 이 순환이 발생합니다.

    데이터베이스에 대해 사용된 공간의 양이 데이터베이스의 할당된 스토리지 공간 중 90% 이상을 차지할 경우, 로그 순환을 위한 임계값은 줄어듭니다.

    테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 10% 이상을 차지하거나 모든 로그의 총 크기가 5GB 이상일 경우, 로그 테이블은 순환됩니다.

    공간 확보를 위해 로그 테이블이 순환되면 알림을 받으려면 low_free_storage 이벤트를 구독할 수 있습니다.

    • 로그 테이블이 순환되면 현재 로그 테이블은 백업 로그 테이블에 복사되며 현재 로그 테이블의 해당 항목들은 제거됩니다. 백업 로그 테이블이 이미 존재할 경우, 현재 로그 테이블이 백업으로 복사되기 전에 백업 로그 테이블이 삭제됩니다. 백업 로그 테이블을 쿼리할 수 있습니다. mysql.general_log 테이블에 대한 백업 로그 테이블 이름은 mysql.general_log_backup으로 지정됩니다. mysql.slow_log 테이블에 대한 백업 로그 테이블 이름은 mysql.slow_log_backup으로 지정됩니다.

    • mysql.rds_rotate_general_logprocedure를 호출하면 mysql.general_log 테이블을 순환할 수 있습니다. mysql.rds_rotate_slow_logprocedure를 호출하면 mysql.slow_log 테이블을 순환할 수 있습니다.

    • 데이터베이스 버전 업그레이드가 진행되는 동안 테이블 로그가 순환됩니다.