메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

MySQL 데이터베이스 로그 파일

MySQL 오류 로그, 느린 쿼리 로그 및 일반 로그를 모니터링할 수 있습니다. MySQL 오류 로그는 기본적으로 생성됩니다. DB 파라미터 그룹에서 파라미터를 설정하여 느린 쿼리와 일반 로그를 생성할 수 있습니다. Amazon RDS는 모든 MySQL 로그 파일을 순환시키며, 각 유형에 대한 간격은 다음과 같습니다.

Amazon RDS 콘솔, Amazon RDS API, Amazon RDS CLI 또는 AWS SDK를 통해 MySQL 로그를 직접 모니터링할 수 있습니다. 또한, 주 데이터베이스에 있는 데이터베이스 테이블로 로그를 전송하고 그 테이블을 쿼리하여 MySQL 로그에 액세스할 수 있습니다. mysqlbinlog 유틸리티를 사용하여 이진 로그를 다운로드할 수 있습니다.

파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 Amazon RDS 데이터베이스 로그 파일을(를) 참조하십시오.

MySQL 오류 로그 액세스

MySQL 오류 로그는 mysql-error.log 파일에 기록됩니다. Amazon RDS 콘솔을 사용하거나 Amazon RDS API, Amazon RDS CLI 또는 AWS SDK를 사용하여 로그를 검색함으로써 mysql-error.log를 볼 수 있습니다. mysql-error.log는 5분마다 플러시되고 그 내용이 mysql-error-running.log에 추가됩니다. 그런 다음, mysql-error-running.log 파일은 1시간마다 순환되고 지난 24시간 동안 매시간 생성된 파일이 보존됩니다. 각 로그 파일이 생성된 시간(UTC)이 파일 이름에 추가됩니다. 로그 파일에는 타임스탬프도 포함되어 있어, 로그 항목이 작성된 시간을 확인하는 데 도움이 됩니다.

MySQL에서는 시작, 종료 및 오류 발생 시에만 오류 로그에 데이터가 기록됩니다. DB 인스턴스는 오류 로그에 새 항목이 기록되지 않는 상태로 몇 시간이나 며칠씩 작동할 수 있습니다. 최근 항목이 보이지 않으면 이는 서버에서 로그에 입력될 만한 오류가 발생하지 않았기 때문입니다.

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

DB 파라미터 그룹에서 파라미터를 설정하면 MySQL 느린 쿼리 로그와 일반 로그가 파일이나 데이터베이스 테이블에 기록될 수 있습니다. DB 파라미터 그룹의 생성 및 변경에 대한 자세한 내용은 DB 파라미터 그룹 작업을(를) 참조하십시오. 이런 파라미터를 설정해야 Amazon RDS 콘솔에서 느린 쿼리 로그 또는 일반 로그를 볼 수 있습니다. 아니면 Amazon RDS API, Amazon RDS CLI 또는 AWS SDK를 사용하여 볼 수 있습니다.

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

  • log_output option: log_output 파라미터에 대해 다음 옵션 중 하나를 지정할 수 있습니다.

    • TABLE(기본값)– mysql.general_log 테이블에는 일반 쿼리를, mysql.slow_log 테이블에는 느린 쿼리를 씁니다.

    • FILE– 파일 시스템에 일반 쿼리 로그와 느린 쿼리 로그를 모두 씁니다. 로그 파일은 매시간 순환됩니다.

    • NONE– 로깅을 비활성화합니다.

로깅을 사용하는 경우, Amazon RDS는 테이블 로그를 순환하거나 로그 파일을 정기적으로 삭제합니다. 이러한 예방 조치를 취하면 데이터베이스 사용에 방해가 되거나 성능에 영향을 미치는 큰 로그 파일이 생성될 가능성을 줄일 수 있습니다. FILETABLE 로깅은 순환 및 삭제에 대해 다음과 같이 접근합니다.

  • FILE 로깅을 사용하는 경우, 로그 파일은 매시간 검사되며 24시간 이상 지난 로그 파일은 삭제됩니다. 삭제 후 나머지 로그 파일의 총 크기가 DB 인스턴스에 할당된 공간 중 2%의 임계값을 초과할 경우, 로그 파일의 전체 크기가 임계값 이하로 축소될 때까지 가장 큰 로그 파일부터 차례대로 삭제됩니다.

  • TABLE 로깅을 사용할 때 테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 20% 이상을 차지하거나 모든 로그의 총 크기가 10GB 이상일 경우, 로그 테이블은 24시간마다 순환됩니다. DB 인스턴스에 대해 사용된 공간의 양이 DB 인스턴스의 할당된 스토리지 공간 중 90% 이상을 차지할 경우, 로그 순환을 위한 임계값은 줄어듭니다. 테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 10% 이상을 차지하거나 모든 로그의 총 크기가 5GB 이상일 경우, 로그 테이블은 순환됩니다. 공간 확보를 위해 로그 테이블이 순환되면 알림을 받으려면 low_free_storage 이벤트를 구독할 수 있습니다. 자세한 내용은 Amazon RDS 이벤트 알림 서비스 사용을(를) 참조하십시오.

    로그 테이블이 순환되면 현재 로그 테이블은 백업 로그 테이블에 복사되며 현재 로그 테이블의 해당 항목들은 제거됩니다. 백업 로그 테이블이 이미 존재할 경우, 현재 로그 테이블이 백업으로 복사되기 전에 백업 로그 테이블이 삭제됩니다. 필요하다면 백업 로그 테이블을 쿼리할 수 있습니다. 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 콘솔, Amazon RDS API, Amazon RDS CLI 또는 AWS SDK에서 로그를 사용하여 작업하려면 log_output 파라미터를 FILE로 설정합니다. MySQL 오류 로그와 같이, 이런 로그 파일은 매시간 순환됩니다. 이전의 24시간 동안 생성된 로그 파일이 보존됩니다.

느린 쿼리 및 일반 로그에 대한 자세한 정보는 MySQL 문서에서 다음 항목을 참조하십시오.

로그 파일 크기

MySQL 느린 쿼리 로그, 오류 로그 및 일반 로그 파일 크기는 DB 인스턴스에 대해 할당된 스토리지 공간의 2% 이하로 제한됩니다. 이 임계값을 유지하기 위해 로그는 매시간 자동으로 순환되면서 24시간 이상 지난 로그 파일은 제거됩니다. 오래된 로그 파일을 제거한 후 로그 파일의 총 크기가 임계값을 초과하는 경우에는 로그 파일의 전체 크기가 임계값 이하로 작아질 때까지 가장 큰 로그 파일부터 차례대로 삭제됩니다.

MySQL 버전 5.6.20 이상의 경우 다시 실행 로그에 기록된 BLOB에 대한 크기 제한이 있습니다. 이러한 제안을 감안하려면 MySQL DB 인스턴스에 대한 innodb_log_file_size 파라미터가 테이블에서 발견된 BLOB 데이터의 최대 크기 및 동일한 테이블에서의 다른 가변 길이 필드(VARCHAR, VARBINARY, TEXT)의 길이 보다 10배 커야 합니다. 파라미터 값 설정 방법에 대한 자세한 내용은 DB 파라미터 그룹 작업을(를) 참조하십시오. 다시 실행 로그 BLOB 크기 제한에 대한 자세한 내용은 MySQL 5.6.20의 변경 내용을(를) 참조하십시오.

테이블 기반 MySQL 로그 관리

DB 파라미터 그룹을 만들고 log_output 서버 파라미터를 TABLE로 설정하여 일반 및 느린 쿼리 로그를 DB 인스턴스 상의 테이블로 전송할 수 있습니다. 그러면 일반 쿼리는 mysql.general_log 테이블에, 느린 쿼리는 mysql.slow_log 테이블에 로그가 기록됩니다. 이들 테이블을 쿼리하여 로그 정보에 액세스할 수 있습니다. 이 로깅을 활성화하면 데이터베이스에 기록되는 데이터의 양이 증가하여 성능이 저하될 수 있습니다.

일반 로그와 느린 쿼리 로그는 모두 기본적으로 비활성화됩니다. 테이블에 대한 로깅을 활성화하려면 general_logslow_query_log 서버 파라미터도 1로 설정해야 합니다.

관련 파라미터를 0으로 설정하여 각 로깅 활동을 해제할 때까지 로그 테이블은 계속 커집니다. 대량의 데이터가 종종 시간의 경과에 따라 누적되어 할당된 스토리지 공간 중 상당한 비율을 소비할 수 있습니다. Amazon RDS에서는 로그 테이블을 자를 수 없지만, 그 내용을 이동할 수는 있습니다. 테이블을 순환하면 그 내용이 백업 테이블에 저장된 다음 빈 로그 테이블이 새로 생성됩니다. 다음 명령줄 프로시저로 로그 테이블을 수동으로 순환시킬 수 있으며, 이때 명령 프롬프트는 PROMPT>로 표시됩니다.

Copy
PROMPT> CALL mysql.rds_rotate_slow_log; PROMPT> CALL mysql.rds_rotate_general_log;

오래된 데이터를 완전히 제거하고 디스크 공간을 회수하려면 알맞은 프로시저를 두 번 연속으로 호출합니다.

이진 로깅 형식

Amazon RDS에서 MySQL은 MySQL 버전 5.6 이상에 대해 행 기반혼합 이진 로깅 형식을 모두 지원합니다. 기본 이진 로깅 형식은 혼합 형식입니다. 기본 이진 로깅 형식은 혼합입니다. MySQL 버전 5.1 및 5.5를 실행하는 DB 인스턴스의 경우 혼합 이진 로깅만 지원됩니다. 다양한 MySQL 이진 로그 형식에 관한 세부 정보는 MySQL 참조 설명서에서 Binary Logging Formats을(를) 참조하십시오.

중요

이진 로깅 형식을 행 기반으로 설정하면 이진 로그 파일이 매우 커질 수 있습니다. 큰 이진 로그 파일은 DB 인스턴스에 사용할 수 있는 스토리지의 양을 줄이므로, DB 인스턴스의 복원 작업 수행에 필요한 시간이 늘어날 수 있습니다.

MySQL 이진 로깅 형식을 설정하려면

  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 왼쪽 창에서 [Parameter Groups]를 클릭합니다.

  3. default.mysql5.6 또는 default.mysql5.7 DB 파라미터 그룹의 경우 [Go to Details Page] 아이콘을 클릭합니다.

  4. [Edit Parameters] 버튼을 클릭하여 DB 파라미터 그룹에서 파라미터를 수정합니다.

  5. binlog_format 파라미터를 선택한 이진 로깅 형식으로 설정합니다(MIXED 또는 ROW).

  6. [Save Changes] 버튼을 클릭하여 DB 파라미터 그룹에 업데이트를 저장합니다.

중요

default.mysql5.6 또는 default.mysql5.7 DB 파라미터 그룹을 변경하면 그 파라미터 그룹을 사용하는 모든 MySQL 버전 5.6 DB 인스턴스에 변경 내용이 적용됩니다. 한 리전에서 다양한 MySQL 5.6 또는 5.7 DB 인스턴스에 대해 각기 다른 이진 로깅 형식을 지정하려면 다른 로깅 형식을 식별하는 자체 DB 파라미터 그룹을 만들고 그 DB 파라미터 그룹을 의도한 DB 인스턴스에 할당해야 합니다.

DB 파라미터 그룹에 대한 자세한 정보는 DB 파라미터 그룹 작업을(를) 참조하십시오.

MySQL 이진 로그 액세스

mysqlbinlog 유틸리티를 사용하여 MySQL 5.6 이상을 실행하는 Amazon RDS 인스턴스로부터 이진 로그를 다운로드하거나 스트리밍할 수 있습니다. 이진 로그를 로컬 컴퓨터로 다운로드하면 mysql 유틸리티를 사용하여 로그를 재생하는 것과 같은 작업을 수행할 수 있습니다. Mysqlbinlog 유틸리티 사용에 대한 자세한 정보는 Using mysqlbinlog to Back Up Binary Log Files을(를) 참조하십시오.

Amazon RDS 인스턴스에 대해 mysqlbinlog 유틸리티를 실행하려면 다음 옵션을 사용합니다.

  • --read-from-remote-server 옵션을 지정합니다.

  • --host: 인스턴스의 엔드포인트에서 DNS 이름을 지정합니다.

  • --port: 인스턴스에서 사용되는 포트를 지정합니다.

  • --user: 복제 슬레이브 권한이 부여된 MySQL 사용자를 지정합니다.

  • --password: 사용자의 암호를 지정하거나, 유틸리티에서 암호 입력을 요구하는 메시지가 표시되도록 암호 값을 생략합니다.

  • 파일이 이진 형식으로 다운로드되도록 하려면 --raw 옵션을 지정합니다.

  • --result-file: 원시 출력을 수신할 로컬 파일을 지정합니다.

  • 하나 이상의 이진 로그 파일의 이름을 지정합니다. 사용 가능한 로그의 목록을 획득하려면 SQL 명령 SHOW BINARY LOGS를 사용합니다.

  • 이진 로그 파일을 스트리밍하려면 --stop-never 옵션을 지정합니다.

Mysqlbinlog 옵션에 대한 자세한 정보는 mysqlbinlog - Utility for Processing Binary Log Files을(를) 참조하십시오.

예:

Linux, OS X, Unix의 경우:

Copy
mysqlbinlog \ --read-from-remote-server \ --host=MySQL56Instance1.cg034hpkmmjt.region.rds.amazonaws.com \ --port=3306 \ --user ReplUser \ --password \ --raw \ --result-file=/tmp/ \ binlog.00098

Windows의 경우:

Copy
mysqlbinlog ^ --read-from-remote-server ^ --host=MySQL56Instance1.cg034hpkmmjt.region.rds.amazonaws.com ^ --port=3306 ^ --user ReplUser ^ --password ^ --raw ^ --result-file=/tmp/ ^ binlog.00098

Amazon RDS는 보통은 최대한 빨리 이진 로그를 제거하지만, mysqlbinlog가 액세스할 수 있도록 인스턴스에서 이진 파일을 여전히 사용할 수 있어야 합니다. RDS가 이진 파일을 보존할 시간을 지정하려면 mysql.rds_set_configuration 저장 프로시저를 사용하고 로그를 다운로드하기에 충분한 시간으로 기간을 지정합니다. 보존 기간을 설정한 후, DB 인스턴스의 스토리지 사용량을 모니터링하여 보존된 이진 로그가 너무 많은 스토리지를 차지하지 않도록 합니다.

참고

mysql.rds_set_configuration 저장 프로시저는 MySQL 5.6 이상 버전에서만 사용할 수 있습니다.

이 예에서는 보존 기간을 1일로 설정합니다.

Copy
call mysql.rds_set_configuration('binlog retention hours', 24);

현재 설정을 표시하려면 mysql.rds_show_configuration 저장 프로시저를 사용합니다.

Copy
call mysql.rds_show_configuration;