RDS for MySQL의 글로벌 상태 기록 관리 - Amazon Relational Database Service

RDS for MySQL의 글로벌 상태 기록 관리

작은 정보

데이터베이스 성능을 분석하고자 Amazon RDS의 성능 개선 도우미를 사용할 수도 있습니다. 자세한 내용은 성능 개선 도우미를 통한 Amazon RDS 모니터링 단원을 참조하십시오.

MySQL은 작업 관련 정보를 알 수 있는 다수의 상태 변수를 유지하고 있습니다. 이 변수 값은 DB 인스턴스에서 잠금 또는 메모리 문제를 파악하는 데 효과적입니다. DB 인스턴스를 마지막으로 시작한 때부터 계속해서 누적되기 때문입니다. 대부분 상태 변수는 FLUSH STATUS 명령을 사용해 0으로 재설정할 수 있습니다.

Amazon RDS는 시간이 지나면서 이 변수 값의 스냅샷을 캡처하거나, 마지막 스냅샷 이후 모든 변경 사항과 함께 변수 값을 테이블에 기록하는 등 시간 경과에 따른 상태 변수 값을 모니터링할 수 있는 프로시저를 지원합니다. 이러한 인프라를 전역적 상태 이력(GoSH)이라고 부릅니다. GoSH는 버전 5.5.23부터 모든 MySQL DB 인스턴스에 설치되기 시작했지만 기본적으로 비활성화되어 있습니다.

GoSH를 활성화하려면 먼저 파라미터 event_schedulerON으로 설정하여 DB 파라미터 그룹의 이벤트 스케줄러를 활성화해야 합니다. 또한 MySQL 5.7을 실행하는 MySQL DB 인스턴스의 경우 show_compatibility_56 파라미터를 1에 설정해야 합니다. DB 파라미터 그룹의 생성 및 변경에 대한 자세한 내용은 Amazon RDS의 파라미터 그룹 단원을 참조하십시오. 이 파라미터를 활성화할 때 생기는 부작용에 관한 내용은 MySQL 5.7 참조 설명서에 나온 show_compatibility_56을 참조하세요.

그런 다음 아래 표의 프로시저에 따라 GoSH를 활성화 및 구성할 수 있습니다. 먼저 MySQL DB 인스턴스에 연결한 후 다음과 같이 해당 명령을 실행합니다. 자세한 내용은 MySQL DB 인스턴스에 연결 단원을 참조하십시오. 각 절차에 대해 다음 명령을 실행하고 procedure-name을 바꿉니다.

CALL procedure-name;

다음 표에는 이전 명령에서 procedure-name에 사용할 수 있는 모든 절차가 나열되어 있습니다.

프로시저 설명

mysql.rds_enable_gsh_collector

rds_set_gsh_collector에서 설정한 주기에 따라 기본 스냅샷을 캡처하도록 GoSH를 활성화합니다.

mysql.rds_set_gsh_collector

스냅샷 캡처 주기(분)를 지정합니다. 기본 값은 5입니다.

mysql.rds_disable_gsh_collector

스냅샷을 비활성화합니다.

mysql.rds_collect_global_status_history

필요할 경우에만 스냅샷을 캡처합니다.

mysql.rds_enable_gsh_rotation

mysql.rds_global_status_history 테이블의 내용이 mysql.rds_global_status_history_old에서 설정한 주기에 따라 rds_set_gsh_rotation로 로테이션됩니다.

mysql.rds_set_gsh_rotation

테이블 로테이션 주기(일)를 지정합니다. 기본 값은 7입니다.

mysql.rds_disable_gsh_rotation

테이블 로테이션을 비활성화합니다.

mysql.rds_rotate_global_status_history

필요에 따라 mysql.rds_global_status_history 테이블의 내용을 mysql.rds_global_status_history_old로 로테이션합니다.

GoSH가 활성화되어 있을 때는 쓰기가 가능한 테이블에 쿼리를 요청할 수 있습니다. 예를 들어 Innodb 버퍼 풀의 적중률에 대한 쿼리를 요청하려면 다음과 같이 쿼리를 실행합니다.

select a.collection_end, a.collection_start, (( a.variable_Delta-b.variable_delta)/a.variable_delta)*100 as "HitRatio" from mysql.rds_global_status_history as a join mysql.rds_global_status_history as b on a.collection_end = b.collection_end where a. variable_name = 'Innodb_buffer_pool_read_requests' and b.variable_name = 'Innodb_buffer_pool_reads'