

# RDS for MySQL의 글로벌 상태 기록 관리
<a name="Appendix.MySQL.CommonDBATasks.GoSH"></a>

**작은 정보**  
데이터베이스 성능을 분석하고자 Amazon RDS의 성능 개선 도우미를 사용할 수도 있습니다. 자세한 내용은 [성능 개선 도우미를 통한 Amazon RDS 모니터링](USER_PerfInsights.md) 섹션을 참조하세요.

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

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

GoSH를 활성화하려면 먼저 파라미터 `event_scheduler`를 `ON`으로 설정하여 DB 파라미터 그룹의 이벤트 스케줄러를 활성화해야 합니다. 또한 MySQL 5.7을 실행하는 MySQL DB 인스턴스의 경우 `show_compatibility_56` 파라미터를 `1`에 설정해야 합니다. DB 파라미터 그룹의 생성 및 변경에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오. 이 파라미터를 활성화할 때 생기는 부작용에 관한 내용은 MySQL 5.7 참조 설명서에 나온 [show\$1compatibility\$156](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_show_compatibility_56)을 참조하세요.**

그런 다음 아래 표의 프로시저에 따라 GoSH를 활성화 및 구성할 수 있습니다. 먼저 MySQL DB 인스턴스에 연결한 후 다음과 같이 해당 명령을 실행합니다. 자세한 내용은 [MySQL DB 인스턴스에 연결](USER_ConnectToInstance.md) 섹션을 참조하세요. 각 절차에 대해 다음 명령을 실행하고 **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'
```