

# Amazon Aurora MySQL을 사용한 복제
<a name="AuroraMySQL.Replication"></a><a name="replication"></a>

 Aurora MySQL 복제 기능은 클러스터의 고가용성과 성능을 위한 핵심 기능입니다. Aurora에서는 최대 15개의 Aurora 복제본을 사용하여 클러스터를 손쉽게 생성하거나 크기를 조정할 수 있습니다.

 모든 복제본은 동일한 기반 데이터에서 작동합니다. 일부 데이터베이스 인스턴스가 오프라인으로 전환되는 경우 다른 인스턴스는 쿼리를 계속 처리하거나 필요한 경우 라이터 역할을 대신할 수 있습니다. Aurora는 읽기 전용 연결을 여러 데이터베이스 인스턴스에 자동으로 분산시켜 Aurora 클러스터에서 쿼리 집약적인 워크로드를 지원할 수 있도록 지원합니다.

다음 주제에서는 Aurora MySQL 복제의 작동 방식과 최적의 가용성 및 성능을 위해 복제 설정을 미세 조정하는 방법에 대한 정보를 확인할 수 있습니다.

**Topics**
+ [Aurora 복제본 사용](#AuroraMySQL.Replication.Replicas)
+ [Amazon Aurora MySQL의 복제 옵션](#AuroraMySQL.Replication.Options)
+ [Amazon Aurora MySQL 복제를 위한 성능 고려 사항](#AuroraMySQL.Replication.Performance)
+ [Amazon Aurora MySQL의 제로 다운타임 다시 시작(ZDR)](AuroraMySQL.Replication.Availability.md)
+ [Aurora MySQL을 사용한 복제 필터 구성](AuroraMySQL.Replication.Filters.md)
+ [Amazon Aurora MySQL 복제 모니터링](#AuroraMySQL.Replication.Monitoring)
+ [여러 AWS 리전에 걸쳐 Amazon Aurora MySQL DB 클러스터 복제](AuroraMySQL.Replication.CrossRegion.md)
+ [Aurora과 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터(이진 로그 복제본) 간의 복제](AuroraMySQL.Replication.MySQL.md)
+ [GTID 기반 복제 사용](mysql-replication-gtid.md)

## Aurora 복제본 사용
<a name="AuroraMySQL.Replication.Replicas"></a>

 Aurora 복제본은 Aurora DB 클러스터의 독립 엔드포인트로서, 읽기 작업을 조정하고 가용성을 높이기 위해 사용하기에 가장 적합합니다. 최대 15개의 Aurora 복제본을 AWS 리전 내 DB 클러스터에 포함된 가용 영역에 배포할 수 있습니다. DB 클러스터 볼륨은 DB 클러스터의 여러 데이터 사본으로 구성되어 있지만, DB 클러스터의 기본 인스턴스 및 Aurora 복제본에는 클러스터 볼륨 데이터가 단 하나의 논리 볼륨으로 표시됩니다. Aurora 복제본에 대한 자세한 내용은 [Aurora 복제본](Aurora.Replication.md#Aurora.Replication.Replicas) 단원을 참조하십시오.

 Aurora 복제본은 클러스터 볼륨의 읽기 연산에 전적으로 사용되므로 읽기 조정에 유용합니다. 쓰기 연산은 기본 인스턴스에서 관리합니다. 클러스터 볼륨은 Aurora MySQL DB 클러스터의 모든 인스턴스가 공유하기 때문에 각 Aurora 복제본의 데이터 사본을 추가로 복제할 필요는 없습니다. 이와는 대조적으로 MySQL 읽기 전용 복제본은 소스 DB 인스턴스부터 로컬 데이터 스토어에 이르는 모든 쓰기 작업을 단일 스레드에서 재실행해야 합니다. 이러한 제한은 대용량 읽기 트래픽을 지원하는 MySQL 읽기 전용 복제본의 기능에 영향을 끼칠 수 있습니다.

 Aurora MySQL을 사용하여 Aurora 복제본이 삭제될 때 인스턴스 엔드포인트가 즉시 제거되고, Aurora 복제본은 리더(Reader) 엔드포인트에서 제거됩니다. 삭제되는 Aurora 복제본을 실행하는 문이 있는 경우 3분의 유예 기간이 있습니다. 기존 문은 유예 기간 동안 정상적으로 완료할 수 있습니다. 유예 기간이 종료되면 Aurora 복제본이 종료 및 삭제됩니다.

**중요**  
 Aurora MySQL용 Aurora 복제본은 InnoDB 테이블의 작업에 대해 항상 기본 트랜잭션 격리 수준 `REPEATABLE READ`를 사용합니다. `SET TRANSACTION ISOLATION LEVEL` 명령을 사용하여 Aurora MySQL DB 클러스터의 기본 인스턴스에 대한 트랜잭션 수준만 변경할 수 있습니다. 이렇게 제한함에 따라 Aurora 복제본의 사용자 수준 잠금이 방지되고, 복제 지연 시간을 최소화하는 동시에 Aurora 복제본을 확장하여 수천 개의 활성 사용자 연결을 지원할 수 있습니다.

**참고**  
 기본 인스턴스에서 실행되는 DDL 문은 연결된 Aurora 복제본의 데이터베이스 연결을 중단할 수 있습니다. Aurora 복제본 연결에서 테이블 등 데이터베이스 객체를 적극적으로 사용 중이고 DDL 문을 사용하여 해당 객체를 기본 인스턴스에서 수정하는 경우 Aurora 복제본 연결이 중단됩니다.

**참고**  
 중국(닝샤) 리전은 리전 간 읽기 전용 복제본을 지원하지 않습니다.

## Amazon Aurora MySQL의 복제 옵션
<a name="AuroraMySQL.Replication.Options"></a>

다음 옵션들 중에서 복제를 설정할 수 있습니다.
+ Aurora MySQL DB 클러스터의 교차 리전 읽기 전용 복제본을 생성하여 다른 AWS 리전에 Aurora MySQL DB 클러스터 2개를 설정합니다.

  자세한 내용은 [여러 AWS 리전에 걸쳐 Amazon Aurora MySQL DB 클러스터 복제](AuroraMySQL.Replication.CrossRegion.md) 단원을 참조하십시오.
+ MySQL 이진 로그(binlog) 복제를 사용하여 동일한 AWS 리전에 있는 Aurora MySQL DB 클러스터 2개를 설정합니다.

  자세한 내용은 [Aurora과 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터(이진 로그 복제본) 간의 복제](AuroraMySQL.Replication.MySQL.md) 단원을 참조하십시오.
+ RDS for MySQL DB 인스턴스의 Aurora 읽기 전용 복제본을 생성하여 소스인 RDS for MySQL DB 인스턴스와 Aurora MySQL DB 클러스터를 설정합니다.

  이 접근 방식을 사용하여 Aurora로 마이그레이션하는 동안 기존 및 지속적인 데이터 변경 사항을 Aurora MySQL로 가져올 수 있습니다. 자세한 내용은 [Aurora 읽기 전용 복제본을 사용하여 RDS for MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션](AuroraMySQL.Migrating.RDSMySQL.Replica.md) 단원을 참조하십시오.

  이 방법을 사용하여 데이터에 대한 읽기 쿼리의 확장성을 높일 수도 있습니다. 읽기 전용 Aurora MySQL 클러스터 내에 있는 하나 이상의 DB 인스턴스를 사용하여 데이터를 쿼리하면 됩니다. 자세한 내용은 [Amazon Aurora를 사용하여 MySQL 데이터베이스 읽기 규모 조정](AuroraMySQL.Replication.ReadScaling.md) 단원을 참조하십시오.
+ Aurora Global Database를 생성하여 하나의 AWS 리전에 Aurora MySQL DB 클러스터와, 다른 리전에 최대 5개의 Aurora 읽기 전용 Aurora MySQL DB 클러스터를 설정합니다.

  Aurora Global Database를 사용하여 전 세계에 설치할 공간이 있는 애플리케이션을 지원할 수 있습니다. 기본 Aurora MySQL DB 클러스터에는 라이터 인스턴스와 최대 15개의 Aurora 복제본이 있습니다. 읽기 전용 보조 Aurora MySQL DB 클러스터는 각각 16개의 Aurora 복제본으로 구성될 수 있습니다. 자세한 내용은 [Amazon Aurora Global Database 사용](aurora-global-database.md) 섹션을 참조하세요.

**참고**  
Amazon Aurora DB 클러스터의 기본 인스턴스를 재부팅하면 DB 클러스터 전체에서 읽기/쓰기 일관성을 보장하는 진입점을 다시 설정하기 위해 해당 DB 클러스터에 대한 Aurora 복제본도 자동으로 재부팅됩니다.

## Amazon Aurora MySQL 복제를 위한 성능 고려 사항
<a name="AuroraMySQL.Replication.Performance"></a>

다음 기능을 사용하여 Aurora MySQL 복제본의 성능을 세부 조정할 수 있습니다.

복제본 로그 압축 기능은 복제 메시지에 대한 네트워크 대역폭을 자동으로 줄입니다. 각 메시지는 Aurora 복제본에 전송되기 때문에 크기가 큰 클러스터에 매우 유용한 기능입니다. 이 기능은 압축을 수행하기 위해 라이터(Writer) 노드에서 약간의 CPU 오버헤드가 발생합니다. Aurora MySQL 버전 2와 버전 3에서는 항상 활성화되어 있습니다.

binlog 필터링 기능은 복제 메시지에 대한 네트워크 대역폭을 자동으로 줄입니다. Aurora 복제본은 복제 메시지에 포함된 binlog 정보를 사용하지 않기 때문에 해당 노드로 전송된 메시지에서 이 데이터가 제외됩니다.

Aurora MySQL 버전 2에서 `aurora_enable_repl_bin_log_filtering` 파라미터를 변경하여 이 기능을 제어할 수 있습니다. 이 파라미터는 기본적으로 활성화됩니다. 이 최적화는 투명성을 위한 것이기 때문에 복제 관련 문제에 대한 진단이나 문제 해결 중에만 이 설정을 비활성화할 수 있습니다. 예를 들어 이 기능이 제공되지 않은 이전 버전 Aurora MySQL 클러스터의 동작과 일치시키기 위해 이 설정을 비활성화할 수 있습니다.

Aurora MySQL 버전 3에서는 Binlog 필터링이 항상 활성화되어 있습니다.

# Amazon Aurora MySQL의 제로 다운타임 다시 시작(ZDR)
<a name="AuroraMySQL.Replication.Availability"></a><a name="zdr"></a>

제로 다운타임 다시 시작(ZDR) 기능은 특정 종류의 다시 시작 중에 DB 인스턴스에 대한 활성 연결의 일부 또는 전부를 보관할 수 있습니다. ZDR은 Aurora에서 오류 조건(예: 복제본이 소스보다 너무 멀리 지연되기 시작하는 경우)을 해결하기 위해 자동으로 수행하는 다시 시작에 적용됩니다.

**중요**  
ZDR 메커니즘은 최선의 노력을 기반으로 작동합니다. Aurora MySQL 버전, 인스턴스 클래스, 오류 조건, 호환되는 SQL 작업 및 ZDR이 적용되는 위치를 결정하는 기타 요소는 언제든지 변경될 수 있습니다.

Aurora MySQL 2.x의 ZDR에는 버전 2.10 이상이 필요합니다. ZDR은 Aurora MySQL 3.x의 모든 마이너 버전에서 사용할 수 있습니다. Aurora MySQL 버전 2 및 3에서는 ZDR 메커니즘이 기본적으로 설정되어 있으며 Aurora에는 `aurora_enable_zdr` 파라미터가 사용되지 않습니다.

Aurora는 제로 다운타임 재시작과 관련된 활동을 **이벤트** 페이지에 보고합니다. Aurora는 ZDR 메커니즘을 사용하여 재시작을 시도할 때 이벤트를 기록합니다. 이 이벤트에는 Aurora에서 다시 시작을 수행하는 이유가 명시됩니다. 다시 시작이 완료되면 Aurora는 다른 이벤트를 기록합니다. 이 최종 이벤트는 프로세스의 소요 시간과 다시 시작 중에 유지되거나 삭제된 연결 수를 보고합니다. 데이터베이스 오류 로그를 참조하여 다시 시작 중에 발생한 활동에 대한 자세한 내용을 확인할 수 있습니다.

성공적인 ZDR 작업 후 연결은 그대로 유지되지만 일부 변수와 기능은 다시 초기화됩니다. 다음 유형의 정보는 제로 다운타임 다시 시작으로 인한 다시 시작 중에 보관되지 않습니다.
+ 글로벌 변수 Aurora는 세션 변수를 복원하지만 다시 시작 후 글로벌 변수를 복원하지 않습니다.
+ 상태 변수. 특히 엔진 상태에 의해 보고된 가동 시간 값은 재설정됩니다.
+ `LAST_INSERT_ID`. 
+ 테이블의 인 메모리 `auto_increment` 상태. 인 메모리 자동 증분 상태는 다시 초기화됩니다. 자동 증분 값에 대한 자세한 내용은 [MySQL 참조 매뉴얼](https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html#innodb-auto-increment-initialization)을 참조하세요.
+ `INFORMATION_SCHEMA` 및 `PERFORMANCE_SCHEMA` 테이블의 진단 정보. 이 진단 정보는 `SHOW PROFILE` 및 `SHOW PROFILES`와 같은 명령 출력에도 표시됩니다.

다음 표에는 버전, 인스턴스 역할 및 클러스터의 DB 인스턴스를 다시 시작할 때 Aurora에서 ZDR 메커니즘을 사용할 수 있는지 여부를 결정하는 기타 상황이 나와 있습니다.


| Aurora MySQL version | 라이터에 ZDR 적용 여부 | 리더에 ZDR 적용 여부 | ZDR 상시 활성화 여부 | 참고 | 
| --- | --- | --- | --- | --- | 
|  2.x, 2.10.0 미만  |  아니요  |  아니요  |  N/A  |  이러한 버전에서는 ZDR을 사용할 수 없습니다.  | 
|  2.10.0\$12.11.0  |  예  |  예  |  예  |  Aurora는 활성 연결에서 진행 중인 모든 트랜잭션을 롤백합니다. 애플리케이션에서 트랜잭션을 다시 시도해야 합니다. Aurora는 TLS/SSL, 임시 테이블, 테이블 잠금 또는 사용자 잠금을 사용하는 모든 연결을 취소합니다.  | 
|  2.11.1 이상  |  예  |  예  |  예  |  Aurora는 활성 연결에서 진행 중인 모든 트랜잭션을 롤백합니다. 애플리케이션에서 트랜잭션을 다시 시도해야 합니다. Aurora는 임시 테이블, 테이블 잠금 또는 사용자 잠금을 사용하는 모든 연결을 취소합니다.  | 
|  3.01\$13.03  |  예  |  예  |  예  |  Aurora는 활성 연결에서 진행 중인 모든 트랜잭션을 롤백합니다. 애플리케이션에서 트랜잭션을 다시 시도해야 합니다. Aurora는 TLS/SSL, 임시 테이블, 테이블 잠금 또는 사용자 잠금을 사용하는 모든 연결을 취소합니다.  | 
|  3.04 이상  |  예  |  예  |  예  |  Aurora는 활성 연결에서 진행 중인 모든 트랜잭션을 롤백합니다. 애플리케이션에서 트랜잭션을 다시 시도해야 합니다. Aurora는 임시 테이블, 테이블 잠금 또는 사용자 잠금을 사용하는 모든 연결을 취소합니다.  | 

# Aurora MySQL을 사용한 복제 필터 구성
<a name="AuroraMySQL.Replication.Filters"></a>

복제 필터를 사용하여 읽기 복제본과 함께 복제할 데이터베이스와 테이블을 지정할 수 있습니다. 복제 필터는 데이터베이스와 테이블을 복제에 포함하거나 복제에서 제외할 수 있습니다.

다음은 복제 필터의 몇 가지 사용 사례입니다.
+ 읽기 복제본의 크기를 줄이는 방법. 복제 필터링을 사용하면 읽기 복제본에 필요하지 않은 데이터베이스와 테이블을 제외할 수 있습니다.
+ 보안상의 이유로 읽기 복제본에서 데이터베이스와 테이블을 제외하는 방법.
+ 다른 읽기 복제본에서 특정 사용 사례에 대해 서로 다른 데이터베이스와 테이블을 복제하는 방법. 예를 들어 분석 또는 샤딩에 특정 읽기 복제본을 사용할 수 있습니다.
+ 여러 AWS 리전에 읽기 전용 복제본이 있는 DB 클러스터의 경우 서로 다른 AWS 리전에 있는 다른 데이터베이스 또는 테이블을 복제합니다.
+ 인바운드 복제 토폴로지에서 복제본으로 구성된 Aurora MySQL DB 클러스터에서 복제할 데이터베이스와 테이블을 지정합니다. 이 구성에 대한 자세한 정보는 [Aurora과 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터(이진 로그 복제본) 간의 복제](AuroraMySQL.Replication.MySQL.md) 섹션을 참조하세요.

**Topics**
+ [Aurora MySQL에 대한 복제 필터링 파라미터 설정](#AuroraMySQL.Replication.Filters.Configuring)
+ [Aurora MySQL에 대한 복제 필터링 제한 사항](#AuroraMySQL.Replication.Filters.Limitations)
+ [Aurora MySQL에 대한 복제 필터링 예제](#AuroraMySQL.Replication.Filters.Examples)
+ [읽기 복제본에 대한 복제 필터 보기](#AuroraMySQL.Replication.Filters.Viewing)

## Aurora MySQL에 대한 복제 필터링 파라미터 설정
<a name="AuroraMySQL.Replication.Filters.Configuring"></a>

복제 필터를 구성하려면 다음 파라미터를 설정합니다.
+ `binlog-do-db` – 지정된 이진 로그에 변경 사항을 복제합니다. binlog 소스 클러스터에 대해 이 파라미터를 설정하면 파라미터에 지정된 바이너리 로그만 복제됩니다.
+ `binlog-ignore-db` – 지정된 이진 로그에 변경 사항을 복제하지 않습니다. binlog 소스 클러스터에 대해 `binlog-do-db` 파라미터가 설정되면 이 파라미터는 평가되지 않습니다.
+ `replicate-do-db` – 지정된 데이터베이스에 변경 내용을 복제합니다. binlog 복제본 클러스터에 대해 이 파라미터를 설정하면 파라미터에 지정된 데이터베이스만 복제됩니다.
+ `replicate-ignore-db` – 지정된 데이터베이스에 변경 내용을 복제하지 마세요. binlog 복제본 클러스터에 대해 `replicate-do-db` 파라미터가 설정되면 이 파라미터는 평가되지 않습니다.
+ `replicate-do-table` – 지정된 테이블에 변경 사항을 복제합니다. 읽기 복제본에 대해 이 파라미터를 설정하면 파라미터에 지정된 테이블만 복제됩니다. 또한, `replicate-do-db` 또는 `replicate-ignore-db` 파라미터가 설정되면 복제에 지정된 테이블이 포함된 데이터베이스를 binlog 복제본 클러스터와 함께 포함해야 합니다.
+ `replicate-ignore-table` – 지정된 테이블에 변경 내용을 복제하지 마세요. binlog 복제본 클러스터에 대해 `replicate-do-table` 파라미터가 설정되면 이 파라미터는 평가되지 않습니다.
+ `replicate-wild-do-table` – 지정된 데이터베이스와 테이블 이름 패턴을 기반으로 테이블을 복제합니다. `%` 및 `_` 와일드카드 문자가 지원됩니다. `replicate-do-db` 또는 `replicate-ignore-db` 파라미터가 설정되면 복제에 지정된 테이블이 포함된 데이터베이스를 binlog 복제본 클러스터와 함께 포함해야 합니다.
+ `replicate-wild-ignore-table` – 지정된 데이터베이스와 테이블 이름 패턴을 기반으로 테이블을 복제하지 마세요 `%` 및 `_` 와일드카드 문자가 지원됩니다. binlog 복제본 클러스터에 대해 `replicate-do-table` 또는 `replicate-wild-do-table` 파라미터가 설정되면 이 파라미터는 평가되지 않습니다.

파라미터는 나열된 순서대로 평가됩니다. 이러한 파라미터의 작동 방식에 대한 자세한 내용은 MySQL 설명서를 참조하세요.
+ 일반적인 내용은 [복제 서버 옵션 및 변수](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html)를 참조하세요.
+ 데이터베이스 복제 필터링 파라미터를 평가하는 방법에 대한 자세한 내용은 [데이터베이스 수준의 복제 및 이진 로깅 옵션 평가](https://dev.mysql.com/doc/refman/8.0/en/replication-rules-db-options.html)를 참조하세요.
+ 테이블 복제 필터링 파라미터가 평가되는 방법에 대한 자세한 내용은 [테이블 수준의 복제 옵션 평가](https://dev.mysql.com/doc/refman/8.0/en/replication-rules-table-options.html)를 참조하세요.

기본적으로 이러한 각 파라미터에는 빈 값이 있습니다. 각 binlog 클러스터에서 이러한 파라미터를 사용하여 복제 필터를 설정, 변경 및 삭제할 수 있습니다. 이러한 파라미터 중 하나를 설정할 때 각 필터를 쉼표로 구분합니다.

`%` 및 `_` 파라미터에 `replicate-wild-do-table` 및 `replicate-wild-ignore-table` 와일드카드 문자를 사용할 수 있습니다. `%` 와일드카드는 원하는 수의 문자를 찾으며 `_` 와일드카드는 한 문자만 찾습니다.

원본 DB 인스턴스의 이진 로깅 형식은 데이터 변경 기록을 결정하므로 복제에 중요합니다. `binlog_format` 파라미터 설정에 따라 복제가 행 기반인지 또는 문 기반인지가 결정됩니다. 자세한 내용은 [단일 AZ 데이터베이스의 Aurora MySQL 이진 로깅 구성](USER_LogAccess.MySQL.BinaryFormat.md) 섹션을 참조하세요.

**참고**  
원본 DB 인스턴스의 `binlog_format` 설정과 관계없이, 모든 DDL(데이터 정의어) 문은 문으로 복제됩니다.

## Aurora MySQL에 대한 복제 필터링 제한 사항
<a name="AuroraMySQL.Replication.Filters.Limitations"></a>

Aurora MySQL에 대한 복제 필터링에 다음과 같은 제한 사항이 적용됩니다.
+ 복제 필터는 Aurora MySQL 버전 3에서만 지원됩니다.
+ 각 복제 필터링 파라미터에는 2,000자 제한이 있습니다.
+ 복제 필터에서는 쉼표가 지원되지 않습니다.
+ 복제 필터링은 XA 트랜잭션을 지원하지 않습니다.

  자세한 내용은 MySQL 설명서에서 [XA 트랜잭션에 대한 제한 사항](https://dev.mysql.com/doc/refman/8.0/en/xa-restrictions.html)을 참조하세요.

## Aurora MySQL에 대한 복제 필터링 예제
<a name="AuroraMySQL.Replication.Filters.Examples"></a>

읽기 복제본에 대한 복제 필터링을 구성하려면 읽기 복제본과 연결된 DB 클러스터 파라미터 그룹에서 복제 필터링 파라미터를 수정합니다.

**참고**  
기본 DB 클러스터 파라미터 그룹을 수정할 수 없습니다. 읽기 복제본에서 기본 파라미터 그룹을 사용 중인 경우 새 파라미터 그룹을 생성하여 읽기 복제본과 연결합니다. DB 클러스터 파라미터 그룹에 대한 자세한 내용은 [Amazon Aurora의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 파라미터 그룹에서 DB 클러스터 파라미터를 설정할 수 있습니다. 파라미터 설정에 대한 자세한 내용은 [Amazon Aurora에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md)을 참조하세요. DB 클러스터 파라미터 그룹에서 파라미터를 설정하면 파라미터 그룹과 연결된 모든 DB 클러스터가 파라미터 설정을 사용합니다. DB 클러스터 파라미터 그룹에서 복제 필터링 파라미터를 설정하는 경우, 파라미터 그룹이 읽기 복제본 클러스터에만 연결되어 있는지 확인합니다. 원본 DB 인스턴스에 대해 복제 필터링 파라미터를 비워 둡니다.

다음 예제에서는 AWS CLI를 사용하여 파라미터를 설정합니다. 이 예제는 CLI 명령이 완료된 직후에 파라미터가 변경되도록 `ApplyMethod`을(를) `immediate`(으)로 설정합니다. 읽기 복제본이 재부팅된 후 보류 중인 변경 사항을 적용하려면 `ApplyMethod`을(를) `pending-reboot`(으)로 설정합니다.

다음 예제에서는 복제 필터를 설정합니다.
+ [Including databases in replication](#rep-filter-in-dbs-ams)
+ [Including tables in replication](#rep-filter-in-tables-ams)
+ [Including tables in replication with wildcard characters](#rep-filter-in-tables-wildcards-ams)
+ [Excluding databases from replication](#rep-filter-ex-dbs-ams)
+ [Excluding tables from replication](#rep-filter-ex-tables-ams)
+ [Excluding tables from replication using wildcard characters](#rep-filter-ex-tables-wildcards-ams)<a name="rep-filter-in-dbs-ams"></a>

**Example 복제에 데이터베이스 포함**  
다음 예제에서는 복제에 `mydb1` 및 `mydb2` 데이터베이스가 포함되어 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"
```
Windows의 경우:  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"
```<a name="rep-filter-in-tables-ams"></a>

**Example 복제에 테이블 포함**  
다음 예제에서는 복제의 `table1` 데이터베이스에 `table2` 및 `mydb1` 테이블이 포함되어 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"
```
Windows의 경우:  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"
```<a name="rep-filter-in-tables-wildcards-ams"></a>

**Example 와일드카드 문자를 사용하여 복제에 테이블 포함**  
다음 예제에서는 복제의 데이터베이스 `order`에 `return` 및 `mydb`(으)로 시작하는 이름을 가진 테이블이 포함되어 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
```
Windows의 경우:  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
```<a name="rep-filter-ex-dbs-ams"></a>

**Example 복제에서 데이터베이스 제외**  
다음 예제에서는 `mydb5` 및 `mydb6` 데이터베이스를 복제에서 제외합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6',ApplyMethod=immediate"
```
Windows의 경우:  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6,ApplyMethod=immediate"
```<a name="rep-filter-ex-tables-ams"></a>

**Example 복제에서 테이블 제외**  
다음 예시에서는 데이터베이스 `mydb5`의 `table1` 테이블과 데이터베이스 `mydb6`의 `table2` 테이블을 복제에서 제외합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
```
Windows의 경우:  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
```<a name="rep-filter-ex-tables-wildcards-ams"></a>

**Example 와일드카드 문자를 사용하여 복제에서 테이블 제외**  
다음 예제에서는 데이터베이스 `order`에서 `return` 및 `mydb7`(으)로 시작하는 이름을 가진 테이블을 복제에서 제외합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"
```
Windows의 경우:  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"
```

## 읽기 복제본에 대한 복제 필터 보기
<a name="AuroraMySQL.Replication.Filters.Viewing"></a>

다음과 같은 방법으로 읽기 복제본에 대한 복제 필터를 볼 수 있습니다.
+ 읽기 복제본과 연결된 파라미터 그룹에서 복제 필터링 파라미터 설정을 확인합니다.

  지침은 [Amazon Aurora에서 DB 파라미터 그룹의 파라미터 값 보기](USER_WorkingWithParamGroups.Viewing.md) 섹션을 참조하세요.
+ MySQL 클라이언트에서 읽기 전용 복제본에 연결하고 `SHOW REPLICA STATUS` 문을 실행합니다.

  출력 시, 다음 필드에서 읽기 복제본에 대한 복제 필터를 보여줍니다.
  + `Binlog_Do_DB`
  + `Binlog_Ignore_DB`
  + `Replicate_Do_DB`
  + `Replicate_Ignore_DB`
  + `Replicate_Do_Table`
  + `Replicate_Ignore_Table`
  + `Replicate_Wild_Do_Table`
  + `Replicate_Wild_Ignore_Table`

  이러한 필드에 대한 자세한 내용은 MySQL 설명서의 [복제 상태 확인](https://dev.mysql.com/doc/refman/8.0/en/replication-administration-status.html)을 참조하세요.

## Amazon Aurora MySQL 복제 모니터링
<a name="AuroraMySQL.Replication.Monitoring"></a>

읽기 조정과 고가용성은 최소 지연 시간에 따라 달라집니다. Amazon CloudWatch `AuroraReplicaLag` 지표를 모니터링하여 Aurora 복제본이 Aurora MySQL DB 클러스터의 기본 인스턴스보다 얼마나 지연되는지 모니터링할 수 있습니다. `AuroraReplicaLag` 지표는 각 Aurora 복제본에 기록됩니다.

기본 DB 인스턴스는 `AuroraReplicaLagMaximum` 및 `AuroraReplicaLagMinimum` Amazon CloudWatch 지표도 기록합니다. `AuroraReplicaLagMaximum` 메트릭은 기본 DB 인스턴스와 DB 클러스터의 각 Aurora 복제본 간의 최대 지연 정도를 기록합니다. `AuroraReplicaLagMinimum` 메트릭은 기본 DB 인스턴스와 DB 클러스터의 각 Aurora 복제본 간의 최소 지연 정도를 기록합니다.

Aurora 복제본 지연의 최신 값이 필요할 경우 Amazon CloudWatch에서 `AuroraReplicaLag` 지표를 확인할 수 있습니다. Aurora 복제본 지연은 `information_schema.replica_host_status` 테이블에 있는 Aurora MySQL DB 클러스터의 각 Aurora 복제본에도 기록됩니다. 이 테이블에 대한 자세한 내용은 [information\$1schema.replica\$1host\$1status](AuroraMySQL.Reference.ISTables.md#AuroraMySQL.Reference.ISTables.replica_host_status) 섹션을 참조하세요.

RDS 인스턴스 및 CloudWatch 지표 모니터링에 대한 자세한 내용은 [Amazon Aurora 클러스터에서 지표 모니터링](MonitoringAurora.md) 단원을 참조하세요.

# 여러 AWS 리전에 걸쳐 Amazon Aurora MySQL DB 클러스터 복제
<a name="AuroraMySQL.Replication.CrossRegion"></a>

 Amazon Aurora MySQL DB 클러스터를 소스 DB 클러스터와 다른 AWS 리전에 읽기 전용 복제본으로 만들 수 있습니다. 이 방식을 택하면 재해 복구 기능을 개선하고, 읽기 작업을 사용자와 더욱 가까운 AWS 리전으로 확장하고, 한 AWS 리전에서 다른 리전으로 손쉽게 마이그레이션할 수 있습니다.

 암호화된 DB 클러스터와 암호화되지 않은 DB 클러스터의 읽기 전용 복제본을 모두 만들 수 있습니다. 원본 DB 클러스터가 암호화되어 있으면 읽기 전용 복제본을 암호화해야 합니다.

 원본 DB 클러스터당 최대 5개의 리전 간 DB 클러스터(읽기 전용 복제본)를 만들 수 있습니다.

**참고**  
 교차 리전 읽기 전용 복제본의 대안으로, Aurora 전역 데이터베이스를 사용하여 최소한의 지연 시간으로 읽기 작업을 크기 조정할 수 있습니다. Aurora 글로벌 데이터베이스는 하나의 AWS 리전에 프라이머리 Aurora DB 클러스터를 그리고 서로 다른 리전에 최대 10개의 읽기 전용 보조 DB 클러스터를 보유합니다. 각 보조 DB 클러스터에는 최대 16개의 (15보다 나음) Aurora 복제본이 포함될 수 있습니다. 프라이머리 DB 클러스터에서 모든 보조 클러스터로의 복제는 데이터베이스 엔진이 아닌 Aurora 스토리지 계층에서 처리되므로 변경 사항 복제를 위한 지연 시간이 최소화됩니다(일반적으로 1초 미만). 데이터베이스 엔진을 복제 프로세스에서 제외하면 데이터베이스 엔진이 작업 로드 처리 전용으로 사용됩니다. 또한 Aurora MySQL의 binlog(바이너리 로깅) 복제를 구성하거나 관리할 필요가 없습니다. 자세한 내용은 [Amazon Aurora Global Database 사용](aurora-global-database.md)를 참조하세요.

 다른 AWS 리전에 Aurora MySQL DB 클러스터의 읽기 전용 복제본을 만들 때는 다음에 주의해야 합니다.
+  원본 DB 클러스터와 리전 간 읽기 전용 복제본 DB 클러스터 모두 DB 클러스터의 기본 인스턴스 외에 최대 15개의 Aurora 복제본을 가질 수 있습니다. 이 기능을 통해, 소스 AWS 리전과 복제 대상 AWS 리전에 대해 읽기 작업을 확장할 수 있습니다.
+  교차 리전 시나리오에서는 AWS 리전 간 네트워크 채널이 더 길어지기 때문에 소스 DB 클러스터와 읽기 전용 복제본 간의 지연 시간이 증가합니다.
+  리전 간 복제를 위해 데이터를 전송할 때는 Amazon RDS 데이터 전송 요금이 발생합니다. 다음과 같은 교차 리전 복제 작업에서 요금이 발생하는 이유는 소스 AWS 리전을 벗어나 데이터를 전송하기 때문입니다.
  +  읽기 전용 복제본을 생성할 때는 Amazon RDS가 소스 클러스터의 스냅샷을 캡처하여 해당 스냅샷을 읽기 전용 복제본이 있는 AWS 리전으로 전송합니다.
  +  소스 데이터베이스에서 데이터를 변경할 때마다 Amazon RDS가 소스 리전에서 읽기 전용 복제본이 있는 AWS 리전으로 데이터를 전송합니다.

   Amazon RDS 데이터 전송 요금에 대한 자세한 정보는 [Amazon Aurora 요금](https://aws.amazon.com/rds/aurora/pricing/)을 참조하십시오.
+  동일한 원본 DB 클러스터를 참조하는 읽기 전용 복제본에 대해 동시 생성 또는 삭제 작업을 여러 개 실행할 수 있습니다. 하지만 각 원본 DB 클러스터에 대한 읽기 전용 복제본 개수를 5개 이하로 유지해야 합니다.
+  효과적인 복제를 위해서는 읽기 전용 복제본도 각각 원본 DB 클러스터와 동일한 양의 컴퓨팅 및 스토리지 리소스를 가져야 합니다. 원본 DB 클러스터를 확장하면 읽기 전용 복제본도 확장해야 합니다.

**Topics**
+ [시작하기 전 준비 사항](#AuroraMySQL.Replication.CrossRegion.Prerequisites)
+ [Aurora MySQL의 교차 리전 읽기 전용 복제본 DB 클러스터 생성](AuroraMySQL.Replication.CrossRegion.Creating.md)
+ [Aurora MySQL의 읽기 전용 복제본을 DB 클러스터로 승격](AuroraMySQL.Replication.CrossRegion.Promote.md)
+ [Amazon Aurora MySQL의 교차 리전 복제본 문제 해결](AuroraMySQL.Replication.CrossRegion.Troubleshooting.md)

## 시작하기 전 준비 사항
<a name="AuroraMySQL.Replication.CrossRegion.Prerequisites"></a>

 리전 간 읽기 전용 복제본인 Aurora MySQL DB 클러스터를 만들기 전에 먼저 원본 Aurora MySQL DB 클러스터에 대한 이진 로깅을 설정해야 합니다. Aurora MySQL의 리전 간 복제는 리전 간 읽기 전용 복제본 DB 클러스터에서 MySQL 이진 복제를 사용하여 변경 사항을 반복합니다.

 Aurora MySQL DB 클러스터에 대한 이진 로깅을 설정하려면 원본 DB 클러스터의 `binlog_format` 파라미터를 업데이트해야 합니다. `binlog_format` 파라미터는 기본 클러스터 파라미터 그룹에 속하는 클러스터 수준 파라미터입니다. DB 클러스터에서 기본 DB 클러스터 파라미터 그룹을 사용하는 경우, `binlog_format` 설정을 수정하려면 새로운 DB 클러스터 파라미터 그룹을 만들어야 합니다. `binlog_format`을 `MIXED`로 설정하는 것이 좋습니다. 그러나 특정한 binlog 형식이 필요하다면 `binlog_format`을 `ROW` 또는 `STATEMENT`로 설정할 수도 있습니다. Aurora DB 클러스터를 재부팅하여 변경 사항을 적용하십시오.

 Aurora MySQL을 통한 이진 로깅 사용에 대한 자세한 내용은 [Aurora과 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터(이진 로그 복제본) 간의 복제](AuroraMySQL.Replication.MySQL.md)을(를) 참조하세요. Aurora MySQL 구성 파라미터 수정에 대한 자세한 내용은 [Amazon Aurora DB 클러스터와 DB 인스턴스 파라미터](USER_WorkingWithDBClusterParamGroups.md#Aurora.Managing.ParameterGroups) 및 [Amazon Aurora의 파라미터 그룹](USER_WorkingWithParamGroups.md)을(를) 참조하세요.

# Aurora MySQL의 교차 리전 읽기 전용 복제본 DB 클러스터 생성
<a name="AuroraMySQL.Replication.CrossRegion.Creating"></a>

 AWS Management Console, AWS Command Line Interface(AWS CLI) 또는 Amazon RDS API를 사용하여 교차 리전 읽기 전용 복제본인 Aurora DB 클러스터를 만들 수 있습니다. 암호화된 및 암호화되지 않은 DB 클러스터에서 모두 리전 간 읽기 전용 복제본을 만들 수 있습니다.

 AWS Management Console을 사용하여 Aurora MySQL에 대한 교차 리전 읽기 전용 복제본을 만드는 경우, Amazon RDS는 대상 AWS 리전에 DB 클러스터를 만든 다음 해당 DB 클러스터의 기본 인스턴스인 DB 인스턴스를 자동으로 만듭니다.

 AWS CLI 또는 RDS API를 사용하여 리전 간 읽기 전용 복제본을 만드는 경우, 먼저 대상 AWS 리전에 DB 클러스터를 만들고 활성화될 때까지 기다립니다. 활성화되면 해당 DB 클러스터의 기본 인스턴스인 DB 인스턴스를 만듭니다.

 읽기 전용 복제본 DB 클러스터의 기본 인스턴스를 사용할 수 있게 되면 복제가 시작됩니다.

 다음 절차를 사용하여 Aurora MySQL DB 클러스터에서 리전 간 읽기 전용 복제본을 만듭니다. 이러한 절차는 암호화되었거나 암호화되지 않은 DB 클러스터에서 읽기 전용 복제본을 만드는 데 사용됩니다.

## 콘솔
<a name="AuroraMySQL.Replication.CrossRegion.Creating.Console"></a>

**AWS Management Console을 사용하여 교차 리전 읽기 전용 복제본인 Aurora MySQL DB 클러스터를 만들려면**

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

1.  AWS Management Console의 오른쪽 상단 모서리에서 소스 DB 클러스터를 호스팅하는 AWS 리전을 선택합니다.

1.  탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1.  리전 간 읽기 전용 복제본을 만들 DB 클러스터를 선택합니다.

1. **작업(Actions)**에서 **리전 간 읽기 전용 복제본 만들기(Create cross-Region read replica)**를 선택합니다.

1.  다음 표에 설명되어 있는 대로 **리전 간 읽기 전용 복제본 만들기** 페이지에서 리전 간 읽기 전용 복제본 DB 클러스터의 옵션 설정을 선택합니다.    
<a name="cross-region-read-replica-settings"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.CrossRegion.Creating.html)

1.  Aurora의 리전 간 읽기 전용 복제본을 만들려면 **생성**을 선택합니다.

## AWS CLI
<a name="AuroraMySQL.Replication.CrossRegion.Creating.CLI"></a>

**CLI를 사용하여 리전 간 읽기 전용 복제본인 Aurora MySQL DB 클러스터를 만들려면**

1.  읽기 전용 복제본 DB 클러스터를 만들려는 AWS 리전에서 AWS CLI [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) 명령을 호출합니다. `--replication-source-identifier` 옵션을 포함시키고, 읽기 전용 복제본을 만들 원본 DB 클러스터의 Amazon 리소스 이름(ARN)을 지정합니다.

    `--replication-source-identifier`로 식별되는 DB 클러스터가 암호화되는 교차 리전 복제의 경우 `--kms-key-id` 옵션 및 `--storage-encrypted` 옵션을 지정합니다.
**참고**  
 `--storage-encrypted`를 지정하고 `--kms-key-id`의 값을 제공하여 암호화되지 않은 DB 클러스터에서 암호화된 읽기 전용 복제본으로 리전 간 복제를 설정할 수 있습니다.

    `--master-username` 및 `--master-user-password` 파라미터는 지정할 수 없습니다. 이러한 값은 원본 DB 클러스터에서 가져옵니다.

    다음 코드 예에서는 us-west-2 리전의 암호화되지 않은 DB 클러스터 스냅샷에서 us-east-1 리전에 읽기 전용 복제본을 만듭니다. 이 명령은 us-east-1 리전에서 호출됩니다. 이 예제에서는 마스터 사용자 암호를 생성하고 이를 Secrets Manager에서 관리하는 `--manage-master-user-password` 옵션을 지정합니다. 자세한 내용은 [Amazon Aurora 및 AWS Secrets Manager를 통한 암호 관리](rds-secrets-manager.md) 단원을 참조하십시오. 또는 `--master-password` 옵션을 사용하여 암호를 직접 지정하고 관리할 수 있습니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds create-db-cluster \
     --db-cluster-identifier sample-replica-cluster \
     --engine aurora-mysql \
     --engine-version 8.0.mysql_aurora.3.08.0 \
     --replication-source-identifier arn:aws:rds:us-west-2:123456789012:cluster:sample-master-cluster
   ```

   Windows의 경우:

   ```
   aws rds create-db-cluster ^
     --db-cluster-identifier sample-replica-cluster ^
     --engine aurora-mysql ^
     --engine-version 8.0.mysql_aurora.3.08.0 ^
     --replication-source-identifier arn:aws:rds:us-west-2:123456789012:cluster:sample-master-cluster
   ```

    다음 코드 예에서는 us-west-2 리전의 암호화된 DB 클러스터 스냅샷에서 us-east-1 리전에 읽기 전용 복제본을 만듭니다. 이 명령은 us-east-1 리전에서 호출됩니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds create-db-cluster \
     --db-cluster-identifier sample-replica-cluster \
     --engine aurora-mysql \
     --engine-version 8.0.mysql_aurora.3.08.0 \
     --replication-source-identifier arn:aws:rds:us-west-2:123456789012:cluster:sample-master-cluster \
     --kms-key-id my-us-east-1-key \
     --storage-encrypted
   ```

   Windows의 경우:

   ```
   aws rds create-db-cluster ^
     --db-cluster-identifier sample-replica-cluster ^
     --engine aurora-mysql ^
     --engine-version 8.0.mysql_aurora.3.08.0 ^
     --replication-source-identifier arn:aws:rds:us-west-2:123456789012:cluster:sample-master-cluster ^
     --kms-key-id my-us-east-1-key ^
     --storage-encrypted
   ```

   이 `--source-region` 옵션은 `--replication-source-identifier`에서 식별된 DB 클러스터가 암호화되는 AWS GovCloud(미국 동부)와 AWS GovCloud(미국 서부) 리전 간의 교차 리전 복제에 필요합니다. `--source-region`의 경우 소스 DB 클러스터의 AWS 리전을 지정합니다.

   `--source-region`이 지정되지 않은 경우에는 `--pre-signed-url` 값을 지정합니다. *미리 서명된 URL*은 소스 AWS 리전에서 호출되는 `create-db-cluster` 명령에 대한 서명 버전 4의 서명된 요청이 포함된 URL입니다. `pre-signed-url` 옵션에 대한 자세한 정보는 *AWS CLI 명령 참조*에서 [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html)를 참조하세요.

1.  다음 예제와 같이 AWS CLI [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 명령을 사용하여 DB 클러스터를 사용할 수 있는지 확인합니다.

   ```
   aws rds describe-db-clusters --db-cluster-identifier sample-replica-cluster
   ```

    **`describe-db-clusters`** 결과에 상태가 `available`로 표시되면 DB 클러스터의 기본 인스턴스를 만들어 복제를 시작합니다. 이렇게 하려면 다음 예제에서와 같이 AWS CLI [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 명령을 사용하면 됩니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds create-db-instance \
     --db-cluster-identifier sample-replica-cluster \
     --db-instance-class db.r5.large \
     --db-instance-identifier sample-replica-instance \
     --engine aurora-mysql
   ```

   Windows의 경우:

   ```
   aws rds create-db-instance ^
     --db-cluster-identifier sample-replica-cluster ^
     --db-instance-class db.r5.large ^
     --db-instance-identifier sample-replica-instance ^
     --engine aurora-mysql
   ```

    DB 인스턴스가 생성되어 사용할 수 있게 되면 복제가 시작됩니다. AWS CLI [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 호출하여 DB 인스턴스를 사용할 수 있는지를 파악할 수 있습니다.

## RDS API
<a name="AuroraMySQL.Replication.CrossRegion.Creating.API"></a>

**API를 사용하여 리전 간 읽기 전용 복제본인 Aurora MySQL DB 클러스터를 만들려면**

1.  읽기 전용 복제본 DB 클러스터를 만들려는 AWS 리전에서 RDS API [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) 작업을 호출합니다. `ReplicationSourceIdentifier` 파라미터를 포함시키고, 읽기 전용 복제본을 만들 원본 DB 클러스터의 Amazon 리소스 이름(ARN)을 지정합니다.

    `ReplicationSourceIdentifier`로 식별되는 DB 클러스터가 암호화되는 교차 리전 복제의 경우 `KmsKeyId` 파라미터를 지정하고 `StorageEncrypted` 파라미터를 `true`로 설정합니다.
**참고**  
 `StorageEncrypted`를 **true**로 지정하고 `KmsKeyId`의 값을 제공하여 암호화되지 않은 DB 클러스터에서 암호화된 읽기 전용 복제본으로 리전 간 복제를 설정할 수 있습니다. 이 경우 `PreSignedUrl`을 지정하지 않아도 됩니다.

    `MasterUsername` 및 `MasterUserPassword` 파라미터 값은 원본 DB 클러스터에서 가져오므로 포함시키지 않아도 됩니다.

    다음 코드 예에서는 us-west-2 리전의 암호화되지 않은 DB 클러스터 스냅샷에서 us-east-1 리전에 읽기 전용 복제본을 만듭니다. 이 작업은 us-east-1 리전에서 호출됩니다.

   ```
   https://rds.us-east-1.amazonaws.com/
     ?Action=CreateDBCluster
     &ReplicationSourceIdentifier=arn:aws:rds:us-west-2:123456789012:cluster:sample-master-cluster
     &DBClusterIdentifier=sample-replica-cluster
     &Engine=aurora-mysql
     &SignatureMethod=HmacSHA256
     &SignatureVersion=4
     &Version=2014-10-31
     &X-Amz-Algorithm=AWS4-HMAC-SHA256
     &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
     &X-Amz-Date=20160201T001547Z
     &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
     &X-Amz-Signature=a04c831a0b54b5e4cd236a90dcb9f5fab7185eb3b72b5ebe9a70a4e95790c8b7
   ```

    다음 코드 예에서는 us-west-2 리전의 암호화된 DB 클러스터 스냅샷에서 us-east-1 리전에 읽기 전용 복제본을 만듭니다. 이 작업은 us-east-1 리전에서 호출됩니다.

   ```
   https://rds.us-east-1.amazonaws.com/
     ?Action=CreateDBCluster
     &KmsKeyId=my-us-east-1-key
     &StorageEncrypted=true
     &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F
            %253FAction%253DCreateDBCluster
            %2526DestinationRegion%253Dus-east-1
            %2526KmsKeyId%253Dmy-us-east-1-key
            %2526ReplicationSourceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Acluster%25253Asample-master-cluster
            %2526SignatureMethod%253DHmacSHA256
            %2526SignatureVersion%253D4
            %2526Version%253D2014-10-31
            %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256
            %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request
            %2526X-Amz-Date%253D20161117T215409Z
            %2526X-Amz-Expires%253D3600
            %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date
            %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613
     &ReplicationSourceIdentifier=arn:aws:rds:us-west-2:123456789012:cluster:sample-master-cluster
     &DBClusterIdentifier=sample-replica-cluster
     &Engine=aurora-mysql
     &SignatureMethod=HmacSHA256
     &SignatureVersion=4
     &Version=2014-10-31
     &X-Amz-Algorithm=AWS4-HMAC-SHA256
     &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
     &X-Amz-Date=20160201T001547Z
     &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
     &X-Amz-Signature=a04c831a0b54b5e4cd236a90dcb9f5fab7185eb3b72b5ebe9a70a4e95790c8b7
   ```

   `ReplicationSourceIdentifier`로 식별되는 DB 클러스터가 암호화되는 AWS GovCloud(미국 동부)와 AWS GovCloud(미국 서부) 리전 간의 교차 리전 복제의 경우에도 `PreSignedUrl` 파라미터를 지정합니다. 미리 서명된 URL은 복제할 암호화된 DB 클러스터가 포함된 소스 AWS 리전에서 수행할 수 있는 `CreateDBCluster` API 작업에 대한 유효한 요청이어야 합니다. KMS 키 식별자는 읽기 전용 복제본을 암호화하는 데 사용되며, 대상 AWS 리전에 대해 유효한 KMS 키여야 합니다. 미리 서명된 URL을 수동이 아닌 자동으로 생성하려면 `--source-region` 옵션 대신 AWS CLI [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) 명령을 사용합니다.

1.  다음 예제와 같이 RDS API [DescribeDBClusters](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html) 작업을 사용하여 DB 클러스터를 사용할 수 있는지 확인합니다.

   ```
   https://rds.us-east-1.amazonaws.com/
     ?Action=DescribeDBClusters
     &DBClusterIdentifier=sample-replica-cluster
     &SignatureMethod=HmacSHA256
     &SignatureVersion=4
     &Version=2014-10-31
     &X-Amz-Algorithm=AWS4-HMAC-SHA256
     &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
     &X-Amz-Date=20160201T002223Z
     &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
     &X-Amz-Signature=84c2e4f8fba7c577ac5d820711e34c6e45ffcd35be8a6b7c50f329a74f35f426
   ```

    `DescribeDBClusters` 결과에 상태가 `available`로 표시되면 DB 클러스터의 프라이머리 인스턴스를 만들어 복제를 시작합니다. 그러려면 다음 예제와 같이 RDS API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 작업을 사용하세요.

   ```
   https://rds.us-east-1.amazonaws.com/
     ?Action=CreateDBInstance
     &DBClusterIdentifier=sample-replica-cluster
     &DBInstanceClass=db.r5.large
     &DBInstanceIdentifier=sample-replica-instance
     &Engine=aurora-mysql
     &SignatureMethod=HmacSHA256
     &SignatureVersion=4
     &Version=2014-10-31
     &X-Amz-Algorithm=AWS4-HMAC-SHA256
     &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
     &X-Amz-Date=20160201T003808Z
     &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
     &X-Amz-Signature=125fe575959f5bbcebd53f2365f907179757a08b5d7a16a378dfa59387f58cdb
   ```

    DB 인스턴스가 생성되어 사용할 수 있게 되면 복제가 시작됩니다. AWS CLI [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 명령을 호출하여 DB 인스턴스를 사용할 수 있는지를 파악할 수 있습니다.

## Amazon Aurora MySQL 리전 간 복제본 보기
<a name="AuroraMySQL.Replication.CrossRegion.Viewing"></a>

 [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) AWS CLI 명령 또는 [DescribeDBClusters](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html) RDS API 작업을 호출하여 Amazon Aurora MySQL DB 클러스터에 대한 교차 리전 복제 관계를 확인할 수 있습니다. 응답에서 교차 리전 읽기 복제본 DB 클러스터의 DB 클러스터 식별자는 `ReadReplicaIdentifiers` 필드에서 확인하세요. 복제 소스인 소스 DB 클러스터의 ARN은 `ReplicationSourceIdentifier` 요소를 참조하세요.

# Aurora MySQL의 읽기 전용 복제본을 DB 클러스터로 승격
<a name="AuroraMySQL.Replication.CrossRegion.Promote"></a>

 Aurora MySQL 읽기 전용 복제본을 독립형 DB 클러스터로 승격할 수 있습니다. Aurora MySQL 읽기 전용 복제본을 승격하면 DB 인스턴스가 재부팅된 후에 사용 가능하게 됩니다.

 일반적으로 소스 DB 클러스터가 실패할 경우 데이터 복구 체계로서 Aurora MySQL 읽기 전용 복제본을 독립형 DB 클러스터로 승격합니다.

 이렇게 하려면 먼저 읽기 전용 복제본을 생성한 다음 원본 DB 클러스터에 장애가 있는지 모니터링합니다. 그 결과 장애가 발견된 경우에는 다음과 같이 실행합니다.

1.  읽기 전용 복제본을 승격합니다.

1.  데이터베이스 트래픽을 승격된 DB 클러스터로 유도합니다.

1.  승격된 DB 클러스터를 원본으로 하는 교체용 읽기 전용 복제본을 생성합니다.

 읽기 전용 복제본을 승격하면 읽기 전용 복제본은 독립형 Aurora DB 클러스터가 됩니다. 승격 프로세스는 읽기 전용 복제본의 크기에 따라 완료하는 데 몇 분 또는 더 오래도 걸릴 수 있습니다. 읽기 전용 복제본이 새 DB 클러스터로 승격된 후에는 다른 DB 인스턴스와 똑같습니다. 예를 들어, 해당 클러스터에서 읽기 전용 복제본을 생성하고 특정 시점으로 복구 작업을 수행할 수 있습니다. 또한 DB 클러스터의 Aurora 복제본을 생성할 수 있습니다.

 승격된 DB 클러스터는 더 이상 읽기 전용 복제본이 아니기 때문에 복제 대상으로 사용할 수 없습니다.

 다음 단계에서는 읽기 전용 복제본을 DB 클러스터로 승격하기 위한 일반적인 프로세스를 보여줍니다.

1.  트랜잭션이 읽기 전용 복제본 소스 DB 클러스터에 더 이상 기록되지 않도록 한 다음, 읽기 전용 복제본의 업데이트가 모두 끝날 때까지 기다립니다. 읽기 전용 복제본의 데이터베이스 업데이트는 원본 DB 클러스터의 업데이트 후에 수행되며, 이러한 복제 지연은 경우에 따라 크게 다를 수 있습니다. `ReplicaLag` 지표를 사용하여 읽기 전용 복제본의 업데이트가 모두 완료되는 시간을 측정합니다. `ReplicaLag` 지표는 소스 DB 인스턴스를 기준으로 읽기 전용 복제본 DB 인스턴스의 지연 시간을 기록합니다. `ReplicaLag` 지표가 `0`에 도달하면 읽기 전용 복제본이 원본 DB 인스턴스를 따라잡은 것입니다.

1.  Amazon RDS 콘솔에서 **승격(Promote)** 옵션을 사용하거나, AWS CLI 명령 [promote-read-replica-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html)를 사용하거나, [PromoteReadReplicaDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplicaDBCluster.html) Amazon RDS API 작업을 사용하여 읽기 전용 복제본을 승격합니다.

    읽기 전용 복제본을 승격할 Aurora MySQL DB 인스턴스를 선택합니다. 읽기 전용 복제본이 승격된 후 Aurora MySQL DB 클러스터가 독립형 DB 클러스터로 승격됩니다. 장애 조치 우선 순위가 가장 높은 DB 인스턴스가 DB 클러스터의 기본 DB 인스턴스로 승격됩니다. 다른 DB 인스턴스는 Aurora 복제본이 됩니다.
**참고**  
 승격 프로세스는 완료할 때까지 몇 분 걸립니다. 읽기 전용 복제본을 승격하면 복제가 중지되고 DB 인스턴스가 재부팅됩니다. 재부팅이 완료되면 읽기 전용 복제본을 새 DB 클러스터로 사용할 수 있습니다.

## 콘솔
<a name="AuroraMySQL.Replication.CrossRegion.Promote.Console"></a>

**Aurora MySQL 읽기 전용 복제본을 DB 클러스터로 승격하려면**

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

1.  콘솔에서 **인스턴스**를 선택합니다.

    **인스턴스** 창이 표시됩니다.

1.  **인스턴스** 창에서 승격하려는 읽기 전용 복제본을 선택합니다.

    읽기 전용 복제본이 Aurora MySQL DB 인스턴스로 나타납니다.

1.  **작업**에서 **읽기 전용 복제본 승격**을 선택합니다.

1.  승인 페이지에서 **Promote Read Replica**를 선택합니다.

## AWS CLI
<a name="AuroraMySQL.Replication.CrossRegion.Promote.CLI"></a>

 읽기 전용 복제본을 DB 클러스터로 승격하려면 AWS CLI [promote-read-replica-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html) 명령을 사용합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds promote-read-replica-db-cluster \
    --db-cluster-identifier mydbcluster
```
Windows의 경우:  

```
aws rds promote-read-replica-db-cluster ^
    --db-cluster-identifier mydbcluster
```

## RDS API
<a name="AuroraMySQL.Replication.CrossRegion.Promote.API"></a>

 읽기 전용 복제본을 DB 클러스터로 승격하려면 [PromoteReadReplicaDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplicaDBCluster.html)를 호출합니다.

# Amazon Aurora MySQL의 교차 리전 복제본 문제 해결
<a name="AuroraMySQL.Replication.CrossRegion.Troubleshooting"></a>

 Amazon Aurora 리전 간 읽기 전용 복제본을 만들 때 발생할 수 있는 일반적인 오류 메시지와 지정된 오류의 해결 방법이 아래에 목록으로 정리되어 있습니다.

## 원본 클러스터 [DB 클러스터 ARN]의 binlog가 활성화되어 있지 않음
<a name="AuroraMySQL.Replication.CrossRegion.Troubleshooting.1"></a>

 이 문제를 해결하려면 원본 DB 클러스터에 대한 이진 로깅을 설정합니다. 자세한 내용은 [시작하기 전 준비 사항](AuroraMySQL.Replication.CrossRegion.md#AuroraMySQL.Replication.CrossRegion.Prerequisites) 단원을 참조하십시오.

## 원본 클러스터 [DB 클러스터 ARN]에 라이터에서 동기화된 클러스터 파라미터 그룹이 없음
<a name="AuroraMySQL.Replication.CrossRegion.Troubleshooting.2"></a>

 `binlog_format` DB 클러스터 파라미터를 업데이트했지만 DB 클러스터의 기본 인스턴스를 재부팅하지 않은 경우 이 오류가 발생합니다. DB 클러스터의 기본 인스턴스(라이터)를 재부팅하고 다시 시도하십시오.

## 원본 클러스터 [DB 클러스터 ARN]의 읽기 전용 복제본이 이미 이 리전에 있음
<a name="AuroraMySQL.Replication.CrossRegion.Troubleshooting.3"></a>

 모든 AWS 리전에서 소스 DB 클러스터당 최대 5개의 교차 리전 DB 클러스터(읽기 전용 복제본)를 만들 수 있습니다. 특정 AWS 리전에 DB 클러스터에 대한 읽기 전용 복제본의 최대 개수가 이미 있는 경우, 해당 리전에서 교차 리전 DB 클러스터를 새로 생성하기 전에 기존 읽기 전용 복제본을 삭제해야 합니다.

## DB 클러스터 [DB 클러스터 ARN]에서 리전 간 복제를 지원하려면 데이터베이스 엔진 업그레이드 필요
<a name="AuroraMySQL.Replication.CrossRegion.Troubleshooting.4"></a>

 이 문제를 해결하려면 원본 DB 클러스터의 모든 인스턴스에 대해 데이터베이스 엔진 버전을 최신 데이터베이스 엔진 버전으로 업그레이드한 다음, 리전 간 읽기 전용 복제본 DB를 다시 만들어 보십시오.

# Aurora과 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터(이진 로그 복제본) 간의 복제
<a name="AuroraMySQL.Replication.MySQL"></a><a name="binlog_replication"></a><a name="binlog"></a>

Amazon Aurora MySQL는 MySQL과 호환되기 때문에 MySQL 데이터베이스와 Amazon Aurora MySQL DB 클러스터 사이에 복제를 설정할 수 있습니다. 이러한 유형의 복제는 MySQL 이진 로그 복제를 사용하며 *binlog 복제*라고 합니다. Aurora에서 이진 로그 복제를 사용하는 경우 MySQL 데이터베이스에서 MySQL 버전 5.5 이상을 실행하는 것이 좋습니다. Aurora MySQL DB 클러스터가 복제 소스 또는 복제본인 경우 복제를 설정할 수 있습니다. Amazon RDS MySQL DB 인스턴스, Amazon RDS 외부의 MySQL 데이터베이스 또는 다른 Aurora MySQL DB 클러스터를 사용하여 복제할 수 있습니다.

**참고**  
특정 유형의 Aurora DB 클러스터에서 안팎으로의 binlog 복제를 사용할 수 없습니다. 구체적으로는 Aurora Serverless v1 클러스터에 binlog 복제를 사용할 수 없습니다. `SHOW MASTER STATUS` 및 `SHOW SLAVE STATUS`(Aurora MySQL 버전 2) 또는 `SHOW REPLICA STATUS`(Aurora MySQL 버전 3) 문이 출력을 반환하지 않는 경우 사용 중인 클러스터가 binlog 복제를 지원하는지 확인하세요.

다른 AWS 리전의 RDS for MySQL DB 인스턴스 또는 Aurora MySQL DB 클러스터를 사용하여 복제할 수도 있습니다. AWS 리전 간 복제를 수행할 경우 DB 클러스터와 DB 인스턴스에 공개 액세스가 가능한지 확인합니다. Aurora MySQL DB 클러스터가 VPC의 프라이빗 서브넷에 있는 경우 AWS 리전 간에 VPC 피어링을 사용합니다. 자세한 내용은 [VPC에 있는 DB 클러스터에 다른 VPC에 있는 EC2 인스턴스가 액세스](USER_VPC.Scenarios.md#USER_VPC.Scenario3) 섹션을 참조하세요.

Aurora MySQL DB 클러스터와 다른 AWS 리전의 Aurora MySQL DB 클러스터 간에 복제를 구성하려면 소스 DB 클러스터와 다른 AWS 리전에 Aurora MySQL DB 클러스터를 읽기 전용 복제본으로 생성합니다. 자세한 내용은 [여러 AWS 리전에 걸쳐 Amazon Aurora MySQL DB 클러스터 복제](AuroraMySQL.Replication.CrossRegion.md) 섹션을 참조하세요.

Aurora MySQL 버전 2 및 3에서는 Aurora MySQL과 외부 원본 또는 복제를 위해 전역 트랜잭션 식별자(GTID)를 사용하는 대상 간에 복제 작업을 할 수 있습니다. Aurora MySQL DB 클러스터에 있는 GTID 관련 파라미터에 외부 데이터베이스의 GTID 상태와 호환되는 설정이 있어야 합니다. 이 작업을 수행하는 방법은 [GTID 기반 복제 사용](mysql-replication-gtid.md) 단원을 참조하세요. Aurora MySQL 버전 3.01 이상에서는 GTID를 사용하지 않는 소스에서 복제되는 트랜잭션에 GTID를 할당하는 방법을 선택할 수 있습니다. 해당 설정을 제어하는 저장 프로시저에 대한 자세한 내용은 [mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions(Aurora MySQL 버전 3)](mysql-stored-proc-gtid.md#mysql_assign_gtids_to_anonymous_transactions) 섹션을 참조하세요.

**주의**  
 Aurora MySQL과 MySQL 간에 복제할 경우 InnoDB 테이블만 사용해야 합니다. 복제할 MyISAM 테이블이 있는 경우 다음 명령을 사용하여 복제를 설정하기 전에 해당 테이블을 InnoDB로 변환할 수 있습니다.  

```
alter table <schema>.<table_name> engine=innodb, algorithm=copy;
```

다음 섹션에서는 복제 설정, 복제 중지, 데이터베이스 읽기 규모 조정, binlog 복제 최적화, 향상된 binlog 설정을 설명합니다.

**Topics**
+ [Aurora MySQL의 이진수 로그 복제 설정](AuroraMySQL.Replication.MySQL.SettingUp.md)
+ [Aurora MySQL의 이진수 로그 복제 중지](AuroraMySQL.Replication.MySQL.Stopping.md)
+ [Amazon Aurora를 사용하여 MySQL 데이터베이스 읽기 규모 조정](AuroraMySQL.Replication.ReadScaling.md)
+ [Aurora MySQL의 이진수 로그 복제 최적화](binlog-optimization.md)
+ [Aurora MySQL에 대해 향상된 binlog 설정](AuroraMySQL.Enhanced.binlog.md)

# Aurora MySQL의 이진수 로그 복제 설정
<a name="AuroraMySQL.Replication.MySQL.SettingUp"></a>

Aurora MySQL을 사용하여 MySQL 복제를 설정하는 단계는 다음에서 자세히 설명합니다.

**Contents**
+ [1. 복제 소스에 대한 이진 로깅 설정](#AuroraMySQL.Replication.MySQL.EnableBinlog)
+ [2. 더 이상 필요 없을 때까지 이진 로그를 복제 소스에 보관](#AuroraMySQL.Replication.MySQL.RetainBinlogs)
+ [3. 복제 소스의 사본 또는 덤프 만들기](#AuroraMySQL.Replication.MySQL.CreateSnapshot)
+ [4. 복제본 대상으로 덤프를 로드합니다(필요한 경우).](#AuroraMySQL.Replication.MySQL.LoadSnapshot)
+ [5. 복제 소스에 복제 사용자 생성](#AuroraMySQL.Replication.MySQL.CreateReplUser)
+ [6. 복제본 대상에서 복제 설정](#AuroraMySQL.Replication.MySQL.EnableReplication)
  + [읽기 전용 복제본에 대한 복제를 중지할 위치 설정](#AuroraMySQL.Replication.StartReplicationUntil)
+ [7. 복제본 모니터링](#AuroraMySQL.Replication.MySQL.Monitor)
+ [복제 소스와 타겟 간 비밀번호 동기화](#AuroraMySQL.Replication.passwords)

## 1. 복제 소스에 대한 이진 로깅 설정
<a name="AuroraMySQL.Replication.MySQL.EnableBinlog"></a>

 다음 데이터베이스 엔진의 복제 소스에 대한 이진 로깅을 설정하는 방법의 지침을 확인합니다.


|  데이터베이스 엔진  |  지침  | 
| --- | --- | 
|   Aurora MySQL   |   **Aurora MySQL DB 클러스터에 대한 이진 로깅을 설정하려면**  `binlog_format` DB 클러스터 파라미터를 `ROW`, `STATEMENT`, `MIXED`로 설정합니다. 특정 binlog 형식이 필요하지 않는 한 `MIXED`로 설정하는 것이 좋습니다. (기본값은 `OFF`입니다.) `binlog_format` 파라미터를 변경하려면 사용자 지정 DB 클러스터 파라미터 그룹을 만들고 해당 사용자 지정 파라미터 그룹을 DB 클러스터와 연결합니다. 기본 DB 클러스터 파라미터 그룹에서는 파라미터를 변경할 수 없습니다. `binlog_format` 파라미터를 `OFF`에서 다른 값으로 변경하는 경우, Aurora DB 클러스터를 재부팅해야 변경 사항이 적용됩니다.  자세한 내용은 [Amazon Aurora DB 클러스터와 DB 인스턴스 파라미터](USER_WorkingWithDBClusterParamGroups.md#Aurora.Managing.ParameterGroups) 및 [Amazon Aurora의 파라미터 그룹](USER_WorkingWithParamGroups.md)(을)를 참조하세요.  | 
|   RDS for MySQL   |   **Amazon RDS DB 인스턴스에 대한 이진 로깅을 설정하려면**   Amazon RDS DB 인스턴스에 대한 이진 로깅을 직접 설정할 수 없지만, 다음 중 하나를 수행하여 설정할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 
|   MySQL(외부)  |  **암호화된 복제 설정** Aurora MySQL 버전 2를 사용하여 데이터를 안전하게 복제하려면 암호화된 복제를 사용하세요.   암호화된 복제를 사용할 필요가 없다면 이 단계를 건너 뛸 수 있습니다.   다음은 암호화된 복제를 사용하기 위한 사전 조건입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  암호화 복제 중, Aurora MySQL DB 클러스터는 MySQL 데이터베이스 서버의 클라이언트 역할을 합니다. Aurora MySQL 클라이언트 인증서와 키는 .pem 형식의 파일입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  **외부 MySQL 데이터베이스에 대한 이진 로깅을 설정하려면**  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 

## 2. 더 이상 필요 없을 때까지 이진 로그를 복제 소스에 보관
<a name="AuroraMySQL.Replication.MySQL.RetainBinlogs"></a>

MySQL 이진 로그 복제를 사용할 경우 Amazon RDS에서 복제 프로세스를 관리하지 않습니다. 따라서 변경 사항이 복제본에 적용된 이후까지 복제 소스의 binlog 파일이 보관되는지 확인해야 합니다. 이 유지 관리는 오류 발생 시 원본 데이터베이스를 복원하는 데 도움이 됩니다.

데이터베이스 엔진에 대한 바이너리 로그를 유지하려면 다음 지침을 따르세요.


|  데이터베이스 엔진  |  지침  | 
| --- | --- | 
|   Aurora MySQL  |  **Aurora MySQL DB 클러스터에 이진 로그를 보관하려면** Aurora MySQL DB 클러스터의 binlog 파일에 대한 액세스 권한이 없습니다. 따라서 Amazon RDS에서 binlog 파일을 삭제하기 이전에 변경 사항이 복제본에 적용되도록 복제 소스에 binlog 파일을 보관할 기간을 충분히 길게 선택해야 합니다. Aurora MySQL DB 클러스터에 binlog 파일을 최대 90일 동안 보관할 수 있습니다. MySQL 데이터베이스 또는 RDS for MySQL DB 인스턴스를 복제본으로 사용하여 복제를 설정하고 복제본을 생성할 데이터베이스가 매우 큰 경우, 복제본에 대한 데이터베이스의 초기 복사가 완료되고 복제 지연이 0에 도달할 때까지 binlog 파일을 보관하도록 기간을 길게 선택합니다. 바이너리 로그 보관 기간을 설정하려면 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 프로시저를 사용하여 `'binlog retention hours'` 구성 파라미터와 함께 DB 클러스터에 binlog 파일을 보관할 시간을 지정하세요. Aurora MySQL 버전 2.11.0 이상 및 버전 3의 최대 값은 2160(90일)입니다. 다음 예에서는 binlog 파일의 보관 기간을 6일로 설정합니다. <pre>CALL mysql.rds_set_configuration('binlog retention hours', 144);</pre> 복제를 시작한 후 복제본에 대해 `SHOW SLAVE STATUS`(Aurora MySQL 버전 2) 또는 `SHOW REPLICA STATUS`(Aurora MySQL version 3) 명령을 실행하고 `Seconds behind master` 필드를 확인하여 변경 사항이 복제본에 적용되었는지 확인할 수 있습니다. `Seconds behind master` 필드가 0이면 복제본 지연이 없습니다. 복제 지연이 없는 경우 `binlog retention hours` 구성 파라미터를 더 짧은 기간으로 설정하여 binlog 파일을 보관할 기간을 줄입니다. 이 설정을 지정하지 않으면 Aurora MySQL의 기본값은 24(1일)입니다. `'binlog retention hours'` 값을 최대값보다 높게 지정하면 Aurora MySQL은 해당 최대값을 사용합니다.  | 
|   RDS for MySQL   |   **Amazon RDS DB 인스턴스에 이진 로그를 보관하려면**   이전 행에서 설명한 Aurora MySQL DB 클러스터와 마찬가지로 binlog 보관 시간을 설정하여 Amazon RDS DB 인스턴스에 바이너리 로그 파일을 보관할 수 있습니다. DB 인스턴스에 대한 읽기 전용 복제본을 생성하여 Amazon RDS DB 인스턴스에 binlog 파일을 보관할 수도 있습니다. 이 읽기 전용 복제본은 임시 복제본이며 binlog 파일 보관의 목적으로만 사용됩니다. 읽기 전용 복제본이 생성된 후 읽기 전용 복제본에서 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 프로시저를 호출합니다. 복제가 중지된 동안 Amazon RDS에서는 복제 소스에서 binlog 파일을 삭제하지 않습니다. 영구 복제본을 사용하여 복제를 설정한 후 복제 소스와 영구 복제본 사이의 복제 지연(`Seconds behind master` 필드)이 0에 도달한 경우 읽기 전용 복제본을 삭제할 수 있습니다.  | 
|   MySQL(외부)   |  **외부 MySQL 데이터베이스에 이진 로그를 보관하려면** 외부 MySQL 데이터베이스의 binlog 파일은 Amazon RDS에서 관리하지 않으므로 삭제할 때까지 보관됩니다. 복제를 시작한 후 복제본에 대해 `SHOW SLAVE STATUS`(Aurora MySQL 버전 2) 또는 `SHOW REPLICA STATUS`(Aurora MySQL version 3) 명령을 실행하고 `Seconds behind master` 필드를 확인하여 변경 사항이 복제본에 적용되었는지 확인할 수 있습니다. `Seconds behind master` 필드가 0이면 복제본 지연이 없습니다. 복제 지연이 없는 경우 이전 binlog 파일을 삭제할 수 있습니다.  | 

## 3. 복제 소스의 사본 또는 덤프 만들기
<a name="AuroraMySQL.Replication.MySQL.CreateSnapshot"></a>

복제 소스의 스냅샷, 클론 또는 덤프는 데이터의 기본 사본을 복제본으로 로드하는 데 사용됩니다. 그런 다음 그 시점부터 복제를 시작합니다.

다음 지침에 따라 데이터베이스 엔진에 대한 복제 소스의 사본 또는 덤프를 생성하세요.


| 데이터베이스 엔진 | 지침 | 
| --- | --- | 
|   Aurora MySQL   |  **Aurora MySQL DB 클러스터의 사본을 만들려면** 다음 방법 중 한 가지를 선택하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html) **binlog 파일 이름과 위치를 확인하려면** 다음 방법 중 한 가지를 선택하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html) **Aurora MySQL DB 클러스터의 덤프를 만들려면** 복제본 대상이 외부 MySQL 데이터베이스 또는 RDS for MySQL DB 인스턴스인 경우, Aurora DB 클러스터에서 덤프 파일을 만들어야 합니다. 생성한 소스 DB 클러스터 사본에 대해 `mysqldump` 명령을 실행해야 합니다. 이는 덤프 시 잠금 고려 사항을 피하기 위한 것입니다. 원본 DB 클러스터에서 직접 덤프를 수행한 경우 덤프가 진행되는 동안 원본 테이블에 동시 쓰기가 발생하지 않도록 원본 테이블을 잠가야 합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 
|  RDS for MySQL  |  **Amazon RDS DB 인스턴스의 스냅샷을 만들려면** Amazon RDS DB 인스턴스의 읽기 전용 복제본을 생성합니다. 자세한 내용은 *Amazon Relational Database Service 사용 설명서*의 [읽기 전용 복제본 생성](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html#USER_ReadRepl.Create) 단원을 참조하십시오. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 
|  MySQL(외부)  |  **외부 MySQL 데이터베이스의 스냅샷 생성** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 

## 4. 복제본 대상으로 덤프를 로드합니다(필요한 경우).
<a name="AuroraMySQL.Replication.MySQL.LoadSnapshot"></a>

Amazon RDS 외부에 있는 MySQL 데이터베이스 덤프에서 데이터를 로드할 계획이라면 덤프 파일을 복사할 EC2 인스턴스를 만드는 것이 좋습니다. 그런 다음 해당 EC2 인스턴스에서 DB 클러스터 또는 DB 인스턴스로 데이터를 로드할 수 있습니다. 이 방법을 사용하면 EC2 인스턴스에 덤프 파일을 복사하기 전에 압축하여 Amazon RDS에 데이터를 복사하는 것과 관련한 네트워크 비용을 줄일 수 있습니다. 또한 덤프 파일 또는 파일을 암호화하여 네트워크 간에 전송되는 데이터를 보호할 수 있습니다.

**참고**  
복제본 대상으로 새로운 Aurora MySQL DB 클러스터를 만드는 경우 덤프 파일을 로드할 필요가 없습니다.  
DB 클러스터 스냅샷에서 복원하여 새로운 DB 클러스터를 만들 수 있습니다. 자세한 내용은 [DB 클러스터 스냅샷에서 복원](aurora-restore-snapshot.md) 섹션을 참조하세요.
소스 DB 클러스터를 복제하여 새 DB 클러스터를 생성할 수 있습니다. 자세한 내용은 [Aurora DB 클러스터에 대한 볼륨 복제](Aurora.Managing.Clone.md) 섹션을 참조하세요.
DB 인스턴스의 데이터를 새 DB 클러스터로 마이그레이션할 수 있습니다. 자세한 내용은 [Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션](AuroraMySQL.Migrating.md) 섹션을 참조하세요.

데이터베이스 엔진의 복제본 대상에 복제 소스의 덤프를 로드하는 방법에 대한 다음 지침을 확인하세요.


| 데이터베이스 엔진 | 지침 | 
| --- | --- | 
|  Aurora MySQL   |   **Aurora MySQL DB 클러스터로 덤프 로드**  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 
|   RDS for MySQL   |  **Amazon RDS DB 인스턴스로 덤프 로드** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 
|  MySQL(외부)  |  **외부 MySQL 데이터베이스로 덤프 로드** DB 스냅샷 또는 DB 클러스터 스냅샷을 외부 MySQL 데이터베이스로 로드할 수 없습니다. 대신 `mysqldump` 명령의 출력을 사용해야 합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 

## 5. 복제 소스에 복제 사용자 생성
<a name="AuroraMySQL.Replication.MySQL.CreateReplUser"></a>

복제에 사용되는 사용자 ID를 생성할 수도 있습니다. 다음은 RDS for MySQL 또는 외부 MySQL 소스 데이터베이스의 예제입니다.

```
mysql> CREATE USER 'repl_user'@'domain_name' IDENTIFIED BY 'password';
```

Aurora MySQL 소스 데이터베이스의 경우, `skip_name_resolve` DB 클러스터 파라미터는 `1`(`ON`)로 설정되며 수정할 수 없으므로 도메인 이름 대신 호스트의 IP 주소를 사용해야 합니다. 자세한 내용은 MySQL 설명서의 [skip\$1name\$1resolve](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_skip_name_resolve)를 참조하세요.

```
mysql> CREATE USER 'repl_user'@'IP_address' IDENTIFIED BY 'password';
```

사용자에게 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한이 필요합니다. 해당 사용자에게 이 권한을 부여합니다.

암호화된 복제를 사용해야 한다면, 복제 사용자에게 SSL 연결이 반드시 필요합니다. 예를 들어, 다음 문 중 하나를 사용하여 사용자 계정 `repl_user`에 대한 SSL 연결을 요구할 수 있습니다.

```
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'IP_address';
```

```
GRANT USAGE ON *.* TO 'repl_user'@'IP_address' REQUIRE SSL;
```

**참고**  
`REQUIRE SSL`이 포함되어 있지 않다면, 복제 연결이 자동으로 암호화되지 않은 연결로 돌아갈 수 있습니다.

## 6. 복제본 대상에서 복제 설정
<a name="AuroraMySQL.Replication.MySQL.EnableReplication"></a>

복제를 설정하기 전에 Aurora MySQL DB 클러스터 또는 RDS for MySQL DB 인스턴스 복제본 대상의 스냅샷을 수동으로 생성하는 것이 좋습니다. 문제가 발생하여 DB 클러스터 또는 DB 인스턴스 복제본 대상을 통해 복제를 다시 설정해야 하는 경우, 데이터를 복제본 대상으로 다시 가져오는 대신 이 스냅샷에서 DB 클러스터 또는 DB 인스턴스를 복원할 수 있습니다.

데이터베이스 엔진에 대한 복제를 켜려면 다음 지침을 확인하세요.


|  데이터베이스 엔진  |  지침  | 
| --- | --- | 
|   Aurora MySQL   |  **Aurora MySQL DB 클러스터에서 복제를 설정하려면**  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html) SSL 암호화를 사용하려면 최종 값을 `0` 대신 `1`로 설정합니다.  | 
|   RDS for MySQL   |   **Amazon RDS DB 인스턴스에서 복제를 설정하려면**  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html) SSL 암호화를 사용하려면 최종 값을 `0` 대신 `1`로 설정합니다.  | 
|   MySQL(외부)   |   **외부 MySQL 데이터베이스에서 복제를 설정하려면**  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.SettingUp.html)  | 

복제가 실패하면 복제본에서 의도하지 않은 I/O가 크게 증가하여 성능이 저하될 수 있습니다. 복제가 실패하거나 더 이상 필요하지 않은 경우 [mysql.rds\$1reset\$1external\$1master(Aurora MySQL 버전 2)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 또는 [mysql.rds\$1reset\$1external\$1source(Aurora MySQL 버전 3)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_source) 저장 프로시저를 실행하여 복제 구성을 제거할 수 있습니다.

### 읽기 전용 복제본에 대한 복제를 중지할 위치 설정
<a name="AuroraMySQL.Replication.StartReplicationUntil"></a>

Aurora MySQL 버전 3.04 이상에서는 [mysql.rds\$1start\$1replication\$1until(Aurora MySQL 버전 3)](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 저장 프로시저를 사용하여 복제를 시작한 다음 지정된 이진 로그 파일 위치에서 복제를 중지할 수 있습니다.

**읽기 전용 복제본에 대한 복제를 시작하고 특정 위치에서 복제를 중지하려면**

1. MySQL 클라이언트를 사용하여 Aurora MySQL DB 클러스터 복제본에 마스터 사용자로 연결합니다.

1. [mysql.rds\$1start\$1replication\$1until(Aurora MySQL 버전 3)](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 저장 프로시저를 실행합니다.

   다음 예제에서는 복제를 시작하고 `120` 바이너리 로그 파일의 `mysql-bin-changelog.000777` 위치에 도달할 때까지 변경 사항을 복제합니다. 재해 복구 시나리오에서 `120`이 재해 직전 위치라고 가정합니다.

   ```
   call mysql.rds_start_replication_until(
     'mysql-bin-changelog.000777',
     120);
   ```

중지 지점에 도달하면 복제가 자동으로 중지됩니다. `Replication has been stopped since the replica reached the stop point specified by the rds_start_replication_until stored procedure` RDS 이벤트가 생성됩니다.

GTID 기반 복제를 사용하는 경우 [mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL 버전 3)](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 저장 프로시저 대신 [mysql.rds\$1start\$1replication\$1until(Aurora MySQL 버전 3)](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 저장 프로시저를 사용하십시오. GTID 기반 복제에 대한 자세한 내용은 [GTID 기반 복제 사용](mysql-replication-gtid.md) 단원을 참조하십시오.

## 7. 복제본 모니터링
<a name="AuroraMySQL.Replication.MySQL.Monitor"></a>

 Aurora MySQL DB 클러스터를 사용하여 MySQL 복제를 설정한 경우 복제본 대상인 Aurora MySQL DB 클러스터에 대한 장애 조치 이벤트를 모니터링해야 합니다. 장애 조치가 발생할 경우에는 복제본 대상인 DB 클러스터가 다른 네트워크 주소를 가진 새 호스트에서 다시 생성될 수도 있습니다. 장애 조치 이벤트를 모니터링하는 자세한 방법은 [Amazon RDS 이벤트 알림 작업](USER_Events.md) 단원을 참조하세요.

 또한 복제본 대상에 연결하고 `SHOW SLAVE STATUS`(Aurora MySQL 버전 2) 또는 `SHOW REPLICA STATUS`(Aurora MySQL 버전 3) 명령을 실행하여 복제본 대상이 복제 소스보다 얼마나 지연되는지 모니터링할 수 있습니다. 명령 출력의 `Seconds Behind Master` 필드는 복제본 대상이 소스보다 얼마나 지연되었는지 알려줍니다.

**중요**  
DB 클러스터를 업그레이드하고 사용자 지정 파라미터 그룹을 지정하는 경우 업그레이드가 완료된 후 클러스터를 수동으로 재부팅해야 합니다. 이렇게 하면 클러스터가 새 사용자 지정 파라미터 설정을 사용하고 binlog 복제를 다시 시작합니다.

## 복제 소스와 타겟 간 비밀번호 동기화
<a name="AuroraMySQL.Replication.passwords"></a>

 SQL 문을 사용하여 복제 소스에서 사용자 계정 및 암호를 변경하면 해당 변경 사항이 복제 대상에 자동으로 복제됩니다.

 AWS Management Console, AWS CLI 또는 RDS API를 사용하여 복제 소스의 마스터 암호를 변경하는 경우 이러한 변경 사항은 복제 대상에 자동으로 복제되지 않습니다. 소스 시스템과 타겟 시스템 간에 마스터 사용자 및 마스터 비밀번호를 동기화하려는 경우 복제 타겟을 직접 동일하게 변경해야 합니다.

# Aurora MySQL의 이진수 로그 복제 중지
<a name="AuroraMySQL.Replication.MySQL.Stopping"></a>

MySQL DB 인스턴스, 외부 MySQL 데이터베이스 또는 다른 Aurora DB 클러스터와의 이진 로그 복제 중지 단계는 다음과 같으며, 이 주제의 뒷부분에 자세히 설명되어 있습니다.

[1. 복제본 대상의 이진 로그 복제 중단](#AuroraMySQL.Replication.MySQL.Stopping.StopReplication)

[2. 복제 소스에 대한 이진 로깅 해제](#AuroraMySQL.Replication.MySQL.Stopping.DisableBinaryLogging)

## 1. 복제본 대상의 이진 로그 복제 중단
<a name="AuroraMySQL.Replication.MySQL.Stopping.StopReplication"></a>

데이터베이스 엔진의 바이너리 로그 복제를 중지하려면 다음 지침을 따르세요.


|  데이터베이스 엔진  |  지침  | 
| --- | --- | 
|   Aurora MySQL   |  **Aurora MySQL DB 클러스터 복제본 대상에 대한 이진 로그 복제를 중지하려면** 복제본 대상인 Aurora DB 클러스터에 연결하고 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 프로시저를 호출합니다.  | 
|   RDS for MySQL   |  **Amazon RDS DB 인스턴스에 대한 이진 로그 복제를 중지하려면** 복제본 대상인 RDS DB 클러스터에 연결하고 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 프로시저를 호출합니다.  | 
|   MySQL(외부)   |  **외부 MySQL 데이터베이스에서 이진 로그 복제를 중지하려면** MySQL 데이터베이스에 연결하고 `STOP SLAVE`(버전 5.7) 또는 `STOP REPLICA`(버전 8.0) 명령을 실행합니다.  | 

## 2. 복제 소스에 대한 이진 로깅 해제
<a name="AuroraMySQL.Replication.MySQL.Stopping.DisableBinaryLogging"></a>

데이터베이스 엔진의 복제 소스에서 바이너리 로깅을 비활성화하려면 다음 테이블의 지침을 따르세요.


| 데이터베이스 엔진 | 지침 | 
| --- | --- | 
|   Aurora MySQL   |  **Amazon Aurora DB 클러스터에 대한 이진 로깅을 해제하려면** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.Stopping.html)  | 
|   RDS for MySQL   |  **Amazon RDS DB 인스턴스에 대한 이진 로깅을 해제하려면** Amazon RDS DB 인스턴스에 대한 이진 로깅을 직접 해제할 수 없지만, 다음 중 하나를 수행하여 해제할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.Stopping.html)  | 
|   MySQL(외부)   |  **외부 MySQL 데이터베이스에 대한 이진 로깅을 해제하려면** MySQL 데이터베이스에 연결하고 `STOP REPLICATION` 명령을 호출합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.Stopping.html)  | 

# Amazon Aurora를 사용하여 MySQL 데이터베이스 읽기 규모 조정
<a name="AuroraMySQL.Replication.ReadScaling"></a>

MySQL DB 인스턴스에서 Amazon Aurora를 사용하여 Amazon Aurora의 읽기 조정 기능을 활용하고 MySQL DB 인스턴스에 대한 읽기 작업을 확장할 수 있습니다. Aurora을 사용하여 MySQL DB 인스턴스에 대한 읽기 조정을 수행하려면 Amazon Aurora MySQL DB 클러스터를 생성한 후 이 클러스터를 MySQL DB 인스턴스의 읽기 전용 복제본으로 설정합니다. 이러한 설정은 RDS for MySQL DB 인스턴스 또는 Amazon RDS 외부에서 실행 중인 MySQL 데이터베이스에 적용됩니다.

Amazon Aurora DB 클러스터 생성에 대한 자세한 정보는 [Amazon Aurora DB 클러스터 생성](Aurora.CreateInstance.md) 섹션을 참조하십시오.

MySQL DB 인스턴스와 Amazon Aurora DB 클러스터 간의 복제를 설정할 때는 다음 지침을 따라야 합니다.
+ Amazon Aurora DB 클러스터를 참조할 때 Amazon Aurora MySQL DB 클러스터 엔드포인트 주소를 사용합니다. 장애 조치가 발생하는 경우 Aurora DB 클러스터용 기본 인스턴스로 승격되는 Aurora MySQL 복제본에서 DB 클러스터 엔드포인트 주소가 계속 사용됩니다.
+ Binlog가 Aurora 복제본에 적용되었음을 확인할 때까지는 라이터 인스턴스에서 binlog를 유지 관리합니다. 이렇게 유지 관리해야 오류 발생 시 라이터 인스턴스를 복원할 수 있습니다.

**중요**  
자체 관리형 복제를 사용하는 경우, 발생할 수 있는 복제 문제를 직접 모니터링하고 해결해야 합니다. 자세한 내용은 [읽기 전용 복제본 간 지연 문제 진단 및 해결](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.ReplicaLag) 섹션을 참조하세요.

**참고**  
Aurora MySQL DB 클러스터에서 복제를 시작하는 데 필요한 권한이 제한되고 Amazon RDS 마스터 사용자를 사용할 수 없습니다. 그러므로 [mysql.rds\$1set\$1external\$1master(Aurora MySQL 버전 2)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 또는 [mysql.rds\$1set\$1external\$1source(Aurora MySQL 버전 3)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source) 및 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 프로시저를 사용하여 Aurora MySQL DB 클러스터와 MySQL DB 인스턴스 간 복제를 설정해야 합니다.

## 외부 소스 인스턴스와 Aurora MySQL DB 인스턴스 간의 복제 시작
<a name="AuroraMySQL.Replication.ReadScaling.Procedure"></a>

1.  원본 MySQL DB 인스턴스를 읽기 전용으로 설정합니다.

   ```
   mysql> FLUSH TABLES WITH READ LOCK;
   mysql> SET GLOBAL read_only = ON;
   ```

1.  원본 MySQL DB 인스턴스에서 `SHOW MASTER STATUS` 명령을 실행하여 binlog 위치를 확인합니다. 다음 예제와 비슷한 출력 결과를 얻습니다.

   ```
   File                        Position
   ------------------------------------
    mysql-bin-changelog.000031      107
   ------------------------------------
   ```

1. `mysqldump`를 사용하여 외부 MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터베이스를 복사합니다. 매우 큰 데이터베이스의 경우 *Amazon Relational Database Service 사용 설명서*의 [가동 중지 시간을 줄이면서 Amazon RDS for MySQL 데이터베이스로 데이터 가져오기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql-importing-data-reduced-downtime.html)의 절차를 사용하는 것이 좋습니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   mysqldump \
       --databases <database_name> \
       --single-transaction \
       --compress \
       --order-by-primary \
       -u local_user \
       -p local_password | mysql \
           --host aurora_cluster_endpoint_address \
           --port 3306 \
           -u RDS_user_name \
           -p RDS_password
   ```

   Windows의 경우:

   ```
   mysqldump ^
       --databases <database_name> ^
       --single-transaction ^
       --compress ^
       --order-by-primary ^
       -u local_user ^
       -p local_password | mysql ^
           --host aurora_cluster_endpoint_address ^
           --port 3306 ^
           -u RDS_user_name ^
           -p RDS_password
   ```
**참고**  
`-p` 옵션과 입력한 암호 사이에 공백이 없어야 합니다.

   `--host` 명령의 `--user (-u)`, `--port`, `-p` 및 `mysql` 옵션을 사용하여 Aurora DB 클러스터에 연결할 호스트 이름, 사용자 이름, 포트 및 비밀번호를 지정하십시오. 호스트 이름은 Amazon Aurora DB 클러스터 엔드포인트의 DNS 이름으로, 예를 들면 `mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com`입니다. Amazon RDS Management Console의 클러스터 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.

1. 다시 원본 MySQL DB 인스턴스를 쓰기 가능한 상태로 설정합니다.

   ```
   mysql> SET GLOBAL read_only = OFF;
   mysql> UNLOCK TABLES;
   ```

   복제에 사용할 백업을 만드는 방법에 대한 자세한 내용은 MySQL 설명서에서 [http://dev.mysql.com/doc/refman/8.0/en/replication-solutions-backups-read-only.html](http://dev.mysql.com/doc/refman/8.0/en/replication-solutions-backups-read-only.html) 섹션을 참조하세요.

1. Amazon RDS Management Console에서 원본 MySQL 데이터베이스를 호스팅하는 서버의 IP 주소를 Amazon Aurora DB 클러스터용 VPC 보안 그룹에 추가합니다. VPC 보안 그룹 수정에 대한 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [VPC용 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)을 참조하십시오.

   Amazon Aurora DB 클러스터의 IP 주소에서의 연결을 허용하도록 로컬 네트워크를 구성하여 원본 MySQL 인스턴스와 통신할 수 있도록 해야 할 수도 있습니다. Amazon Aurora DB 클러스터의 IP 주소를 검색하려면 `host` 명령을 사용하십시오.

   ```
   host aurora_endpoint_address
   ```

   호스트 이름은 Amazon Aurora DB 클러스터 엔드포인트의 DNS 이름입니다.

1. 선택한 클라이언트를 사용하여 외부 MySQL 인스턴스에 연결하고 복제에 사용될 MySQL 사용자를 만듭니다. 이 계정은 오직 복제용으로만 사용되며 보안 향상을 위해 사용자의 도메인으로 제한되어야 합니다. 다음은 예제입니다.

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. 외부 MySQL 인스턴스의 경우 복제 사용자에게 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다. 예를 들어 도메인의 '`REPLICATION CLIENT`' 사용자를 위해 모든 데이터베이스에서 `REPLICATION SLAVE` 및 `repl_user` 권한을 부여하려면 다음 명령을 실행합니다.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com'
       IDENTIFIED BY 'password';
   ```

1. 복제를 설정하기 전에 Aurora MySQL DB 클러스터의 수동 스냅샷을 읽기 전용 복제본으로 생성합니다. DB 클러스터와 복제를 읽기 복제본으로 다시 설정해야 할 경우, MySQL DB 인스턴스를 새로운 Aurora MySQL DB 클러스터로 가져오는 대신 이 스냅샷에서 Aurora MySQL DB 클러스터를 복원할 수 있습니다.

1. Amazon Aurora DB 클러스터를 복제본으로 만듭니다. Amazon Aurora DB 클러스터에 마스터 사용자로 연결하고 [mysql.rds\$1set\$1external\$1master(Aurora MySQL 버전 2)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 또는 [mysql.rds\$1set\$1external\$1source(Aurora MySQL 버전 3)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source) 및 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 프로시저를 사용하여 소스 MySQL 데이터베이스를 복제 소스로 식별합니다.

   2단계에서 결정한 binlog 파일 이름과 위치를 사용합니다. 다음은 예입니다.

   ```
   For Aurora MySQL version 2:
   CALL mysql.rds_set_external_master ('mymasterserver.example.com', 3306,
       'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
   
   For Aurora MySQL version 3:
   CALL mysql.rds_set_external_source ('mymasterserver.example.com', 3306,
       'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
   ```

1. Amazon Aurora DB 클러스터에서 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 프로시저를 호출하여 복제를 시작합니다.

   ```
   CALL mysql.rds_start_replication; 
   ```

원본 MySQL DB 인스턴스와 Amazon Aurora DB 클러스터 간의 복제를 설정한 후에는 Aurora 복제본을 Amazon Aurora DB 클러스터에 추가할 수 있습니다. 그러고 나면 Aurora 복제본에 연결하여 데이터에 대한 읽기 조정을 수행할 수 있습니다. Aurora 복제본 생성에 대한 자세한 정보는 [DB 클러스터에 Aurora 복제본 추가](aurora-replicas-adding.md) 섹션을 참조하십시오.

# Aurora MySQL의 이진수 로그 복제 최적화
<a name="binlog-optimization"></a>

 다음으로 Aurora MySQL에서 이진 로그 복제 성능을 최적화하고 관련 문제를 해결하는 방법을 배울 수 있습니다.

**작은 정보**  
 이 논의에서는 MySQL 이진 로그 복제 메커니즘과 작동 방식에 대해 잘 알고 있다고 가정합니다. 배경 정보는 MySQL 설명서의 [복제 구현](https://dev.mysql.com/doc/refman/8.0/en/replication-implementation.html) 단원을 참조하세요.

## 다중 스레드 이진 로그 복제
<a name="binlog-optimization-multithreading"></a>

다중 스레드 이진 로그 복제를 사용하면 SQL 스레드가 릴레이 로그에서 이벤트를 읽고 SQL 작업자 스레드에서 적용하도록 이벤트를 대기열에 넣습니다. SQL 작업자 스레드는 조정자 스레드에서 관리합니다. 가능한 경우 이진 로그 이벤트가 병렬로 적용됩니다. 병렬 처리 수준은 버전, 파라미터, 스키마 설계 및 워크로드 특성을 비롯한 요인에 따라 달라집니다.

다중 스레드 이진 로그 복제는 Aurora MySQL 버전 3, Aurora MySQL 버전 2.12.1 이상에서 지원됩니다. 다중 스레드 복제본이 binlog 이벤트를 병렬로 효율적으로 처리하려면 멀티스레드 바이너리 로그 복제를 위한 소스를 구성해야 하며, 소스는 바이너리 로그 파일에 병렬 처리 정보가 포함된 버전을 사용해야 합니다.

Aurora MySQL DB 인스턴스가 binlog 복제를 사용하도록 구성된 경우 복제본 인스턴스는 Aurora MySQL 3.04 미만 버전에 기본적으로 단일 스레드 복제를 사용합니다. 다중 스레드 복제를 사용 설정하려면 `replica_parallel_workers` 파라미터를 사용자 지정 파라미터 그룹에서 `1`보다 큰 값으로 업데이트합니다.

Aurora MySQL 버전 3.04 이상에서는 복제가 기본적으로 다중 스레드로 설정되며 `replica_parallel_workers`가 `4`로 설정됩니다. 사용자 지정 파라미터 그룹에서 이 파라미터를 수정할 수 있습니다.

예기치 않은 중단에 대한 데이터베이스의 복원력을 높이려면 소스에서 GTID 복제를 사용 설정하고 복제본에서 GTID를 허용하는 것이 좋습니다. GTID 복제를 허용하려면 소스와 복제본 모두에서 `gtid_mode`를 `ON_PERMISSIVE`로 설정합니다. GTID 기반 복제에 대한 자세한 내용은 [GTID 기반 복제 사용](mysql-replication-gtid.md) 단원을 참조하십시오.

다음 구성 옵션을 사용하면 다중 스레드 복제를 세부 조정할 수 있습니다. 사용 정보는 *MySQL 참조 설명서*의 [복제, 이진 로깅 옵션 및 변수](https://dev.mysql.com/doc/refman/8.0/en/replication-options.html)를 참조하세요. 다중 스레드 복제에 대한 자세한 내용은 MySQL 블로그 [https://dev.mysql.com/blog-archive/improving-the-parallel-applier-with-writeset-based-dependency-tracking/](https://dev.mysql.com/blog-archive/improving-the-parallel-applier-with-writeset-based-dependency-tracking/) 섹션을 참조하시기 바랍니다.

최적의 파라미터 값은 여러 요인에 따라 달라집니다. 예를 들어 이진 로그 복제의 성능은 데이터베이스 워크로드 특성과 복제본이 실행 중인 DB 인스턴스 클래스의 영향을 받습니다. 따라서 프로덕션 인스턴스에 새 파라미터 설정을 적용하기 전에 이러한 구성 파라미터에 대한 모든 변경 사항을 철저히 테스트하는 것이 좋습니다.
+ `binlog_format recommended value` - 로 설정됨`ROW`
+ `binlog_group_commit_sync_delay`
+ `binlog_group_commit_sync_no_delay_count`
+ `binlog_transaction_dependency_history_size`
+ `binlog_transaction_dependency_tracking` - 권장 값은 `WRITESET`입니다.
+ `replica_preserve_commit_order`
+ `replica_parallel_type` - 권장 값은 `LOGICAL_CLOCK`입니다.
+ `replica_parallel_workers`
+ `replica_pending_jobs_size_max`
+ `transaction_write_set_extraction` - 권장 값은 `XXHASH64`입니다.

스키마 및 워크로드 특성은 병렬 복제에 영향을 미치는 요소입니다. 가장 일반적인 요소는 다음과 같습니다.
+ 프라이머리 키 없음 - RDS는 프라이머리 키가 없는 테이블에 대한 쓰기 세트 종속성을 설정할 수 없습니다. `ROW` 형식을 사용하면 소스에서 단일 전체 테이블 스캔으로 단일 다중 행 스테이트먼트를 수행할 수 있지만 복제본에서 행당 하나의 전체 테이블 스캔이 수정됩니다. 프라이머리 키가 없으면 복제 처리량이 크게 줄어듭니다.
+ 외부 키의 존재 - 외부 키가 있는 경우 Amazon RDS는 FK 관계의 테이블 병렬화에 쓰기 세트 종속성을 사용할 수 없습니다.
+ 트랜잭션 크기 - 단일 트랜잭션이 수십 또는 수백 메가바이트 또는 기가바이트에 걸쳐 있는 경우 작업자 스레드 중 하나와 조정자 스레드에서 해당 트랜잭션만 처리하는 데 오랜 시간이 걸릴 수 있습니다. 이 기간 동안 다른 모든 작업자 스레드는 이전 트랜잭션 처리를 완료한 후에도 유휴 상태로 유지될 수 있습니다.

Aurora MySQL 버전 3.06 이상에서는 보조 인덱스가 두 개 이상인 대규모 테이블의 트랜잭션을 복제할 때 binlog 복제본의 성능을 개선할 수 있습니다. 이 기능은 binlog 복제본에서 보조 인덱스 변경 사항을 병렬로 적용하는 스레드 풀을 도입합니다. 이 기능은 보조 인덱스 변경 사항을 적용하는 데 사용할 수 있는 총 병렬 스레드 수를 제어하는 `aurora_binlog_replication_sec_index_parallel_workers` DB 클러스터 파라미터에 의해 제어됩니다. 기본적으로 파라미터는 `0`(비활성화됨)로 설정됩니다. 이 기능을 활성화해도 인스턴스를 다시 시작할 필요가 없습니다. 이 기능을 활성화하려면 진행 중인 복제를 중지하고 원하는 수의 병렬 작업자 스레드를 설정한 다음 복제를 다시 시작하세요.

## binlog 복제 최적화
<a name="binlog-optimization-binlog-io-cache"></a><a name="binlog_boost"></a><a name="binlog_io_cache"></a>

 Aurora MySQL 2.10 이상에서 Aurora는 binlog I/O 캐시라는 최적화를 바이너리 로그 복제에 자동으로 적용합니다. 이 최적화는 가장 최근에 커밋된 binlog 이벤트를 캐싱하여 binlog 덤프 스레드 성능을 개선하고 binlog 소스 인스턴스에 대한 포그라운드 트랜잭션에 미치는 영향을 제한하도록 설계되었습니다.

**참고**  
 이 기능에 사용되는 메모리는 MySQL `binlog_cache` 설정과 독립적입니다.  
 이 기능은 `db.t2` 및 `db.t3` 인스턴스 클래스를 사용하는 Aurora DB 인스턴스에는 적용되지 않습니다.

이 최적화를 켜기 위해 구성 파라미터를 조정할 필요가 없습니다. 특히 이전 Aurora MySQL 버전에서 구성 파라미터 `aurora_binlog_replication_max_yield_seconds`를 0이 아닌 값으로 조정한 경우 현재 사용 가능한 버전에서 0으로 다시 설정하세요.

상태 변수 `aurora_binlog_io_cache_reads` 및 `aurora_binlog_io_cache_read_requests`는 binlog I/O 캐시의 데이터를 읽는 빈도를 모니터링하는 데 도움이 됩니다.
+  `aurora_binlog_io_cache_read_requests`는 캐시의 binlog I/O 읽기 요청 수를 보여줍니다.
+  `aurora_binlog_io_cache_reads`는 캐시의 정보를 검색하는 binlog I/O 읽기 수를 보여줍니다.

 다음 SQL 쿼리는 캐시된 정보를 활용하는 binlog 읽기 요청의 백분율을 계산합니다. 이 경우 비율이 100에 가까울수록 더 좋습니다.

```
mysql> SELECT
  (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS
    WHERE VARIABLE_NAME='aurora_binlog_io_cache_reads')
  / (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS
    WHERE VARIABLE_NAME='aurora_binlog_io_cache_read_requests')
  * 100
  as binlog_io_cache_hit_ratio;
+---------------------------+
| binlog_io_cache_hit_ratio |
+---------------------------+
|         99.99847949080622 |
+---------------------------+
```

 binlog I/O 캐시 기능에는 binlog 덤프 스레드와 관련된 새로운 지표도 포함됩니다. *덤프 스레드*는 새로운 binlog 복제본이 binlog 소스 인스턴스에 연결될 때 생성되는 스레드입니다.

덤프 스레드 지표는 60초 간격으로 접두사 `[Dump thread metrics]`를 사용하여 데이터베이스 로그에 인쇄됩니다. 지표에는 `Secondary_id`, `Secondary_uuid`, binlog 파일 이름 및 각 복제본에서 읽는 중인 위치와 같은 각 binlog 복제본에 대한 정보가 포함됩니다. 지표에는 복제 소스와 복제본 간의 거리(바이트)를 나타내는 `Bytes_behind_primary`도 포함됩니다. 이 지표는 복제본 I/O 스레드의 지연을 측정합니다. 이 수치는 binlog 복제본에서 `seconds_behind_master` 지표로 표시되는 복제본 SQL 적용자 스레드의 지연과 다릅니다. 이 거리의 감소 또는 증가를 확인하여 binlog 복제본이 소스를 따라 잡고 있는지, 뒤쳐지지 않는지 확인할 수 있습니다.

## 인 메모리 릴레이 로그
<a name="binlog-optimization-in-memory-relay-log"></a>

Aurora MySQL 버전 3.10 이상에서 Aurora는 복제 처리량을 개선하기 위해 인 메모리 릴레이 로그라고 하는 최적화를 도입합니다. 이 최적화는 메모리의 모든 중간 릴레이 로그 콘텐츠를 캐싱하여 릴레이 로그 I/O 성능을 향상시킵니다. 따라서 릴레이 로그 콘텐츠가 메모리에서 쉽게 액세스할 수 있으므로 스토리지 I/O 작업을 최소화하여 커밋 지연 시간을 줄입니다.

기본적으로 인 메모리 릴레이 로그 기능은 복제본이 다음 구성 중 하나를 충족할 때 Aurora 관리형 복제 시나리오(블루/그린 배포, Aurora-Aurora 복제 및 리전 간 복제본 포함)에 대해 자동으로 활성화됩니다.
+ 단일 스레드 복제 모드(replica\$1parallel\$1workers = 0)
+ GTID 모드가 활성화된 다중 스레드 복제:
  + 자동 위치 활성화
  + 복제본에서 GTID 모드가 ON으로 설정됨
+ replica\$1preserve\$1commit\$1order = ON인 파일 기반 복제

인 메모리 릴레이 로그 기능은 t3.large보다 큰 인스턴스 클래스에서 지원되지만 Aurora Serverless 인스턴스에서는 사용할 수 없습니다. 릴레이 로그 원형 버퍼의 고정 크기는 128MB입니다. 이 기능의 메모리 사용량을 모니터링하기 위해 다음 쿼리를 실행할 수 있습니다.

```
SELECT event_name, current_alloc FROM sys.memory_global_by_current_bytes WHERE event_name = 'memory/sql/relaylog_io_cache';
```

인 메모리 릴레이 로그 기능은 DB 클러스터 또는 인스턴스 수준에서 설정할 수 있는 aurora\$1in\$1memory\$1relaylog 파라미터에 의해 제어됩니다. 인스턴스를 다시 시작하지 않고도 이 기능을 동적으로 활성화하거나 비활성화할 수 있습니다.

1. 진행 중인 복제 중지

1. 파라미터 그룹에서 aurora\$1in\$1memory\$1relaylog를 ON(활성화) 또는 OFF(비활성화)로 설정합니다.

1. 복제 다시 시작

예제:

```
CALL mysql.rds_stop_replication;
set aurora_in_memory_relaylog to ON to enable or OFF to disable in cluster parameter group
CALL mysql.rds_start_replication;
```

aurora\$1in\$1memory\$1relaylog가 ON으로 설정된 경우에도 특정 조건에서는 인 메모리 릴레이 로그 기능이 비활성화될 수 있습니다. 다음 명령을 사용하여 기능의 현재 상태를 확인할 수도 있습니다.

```
SHOW GLOBAL STATUS LIKE 'Aurora_in_memory_relaylog_status';
```

기능이 예기치 않게 비활성화된 경우 다음을 실행하여 이유를 식별할 수 있습니다.

```
SHOW GLOBAL STATUS LIKE 'Aurora_in_memory_relaylog_disabled_reason';
```

이 명령은 기능이 현재 비활성화된 이유를 설명하는 메시지를 반환합니다.

# Aurora MySQL에 대해 향상된 binlog 설정
<a name="AuroraMySQL.Enhanced.binlog"></a>

향상된 binlog는 binlog를 켜서 발생하는 컴퓨팅 성능 오버헤드를 줄여 주는데, 이 오버헤드는 경우에 따라 최대 50% 까지 증가할 수 있습니다. 향상된 binlog를 사용하면 이러한 오버헤드를 약 13%로 줄일 수 있습니다. 오버헤드를 줄이기 위해 향상된 binlog는 바이너리 로그와 트랜잭션 로그를 스토리지에 병렬식으로 기록하여 트랜잭션 커밋 시 기록되는 데이터를 최소화합니다.

또한 향상된 binlog를 사용하면 커뮤니티 MySQL binlog에 비해 다시 시작 및 장애 조치 후 데이터베이스 복구 시간이 최대 99% 향상됩니다. 향상된 binlog는 기존 binlog 기반 워크로드와 호환되며 커뮤니티 MySQL binlog와 상호 작용하는 것과 동일한 방식으로 상호 작용합니다.

향상된 binlog는 Aurora MySQL 버전 3.03.1 이상에서 사용할 수 있습니다.

**Topics**
+ [향상된 binlog 파라미터 구성](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters)
+ [기타 관련 파라미터](#AuroraMySQL.Enhanced.binlog.other.parameters)
+ [향상된 binlog와 커뮤니티 MySQL binlog의 차이점](#AuroraMySQL.Enhanced.binlog.differences)
+ [향상된 빈로그를 위한 Amazon CloudWatch 지표](#AuroraMySQL.Enhanced.binlog.cloudwatch.metrics)
+ [향상된 빈로그의 제한 사항](#AuroraMySQL.Enhanced.binlog.limitations)

## 향상된 binlog 파라미터 구성
<a name="AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters"></a>

향상된 binlog 파라미터를 켜거나 끄면 커뮤니티 MySQL binlog와 향상된 binlog 간에 전환할 수 있습니다. 기존 binlog 소비자는 binlog 파일 시퀀스의 공백 없이 binlog 파일을 계속 읽고 사용할 수 있습니다.

향상된 binlog를 켜려면 다음 파라미터를 설정합니다.


| 파라미터 | Default | 설명 | 
| --- | --- | --- | 
| binlog\$1format | – | binlog\$1format 파라미터를 원하는 바이너리 로깅 형식으로 설정하여 향상된 binlog를 켭니다. binlog\$1format parameter가 OFF로 설정되어 있지 않은지 확인하세요. 자세한 내용은 [Aurora MySQL 이진 로깅 구성](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html)을 참조하세요. | 
| aurora\$1enhanced\$1binlog | 0 | Aurora MySQL 클러스터와 연결된 DB 클러스터 파라미터 그룹에서 이 파라미터를 1로 설정합니다. 이 파라미터의 값을 변경할 때 DBClusterParameterGroupStatus 값이 pending-reboot로 표시되면 라이터 인스턴스를 재부팅해야 합니다. | 
| binlog\$1backup | 1 |  향상된 binlog를 켜려면 이 파라미터를 끄세요. 이렇게 하려면 이 파라미터의 값을 0으로 설정합니다. | 
| binlog\$1replication\$1globaldb | 1 |  향상된 binlog를 켜려면 이 파라미터를 끄세요. 이렇게 하려면 이 파라미터의 값을 0으로 설정합니다. | 

**중요**  
향상된 binlog를 사용하는 경우에만 `binlog_backup` 및 `binlog_replication_globaldb` 파라미터를 끌 수 있습니다.

향상된 binlog를 끄려면 다음 파라미터를 설정합니다.


| 파라미터 | 설명 | 
| --- | --- | 
| aurora\$1enhanced\$1binlog | Aurora MySQL 클러스터와 연결된 DB 클러스터 파라미터 그룹에서 이 파라미터를 0로 설정합니다. 이 파라미터의 값을 변경할 때 DBClusterParameterGroupStatus 값이 pending-reboot로 표시되면 라이터 인스턴스를 재부팅해야 합니다. | 
| binlog\$1backup | 향상된 binlog를 끄려면 이 파라미터를 켜세요. 이렇게 하려면 이 파라미터의 값을 1으로 설정합니다. | 
| binlog\$1replication\$1globaldb | 향상된 binlog를 끄려면 이 파라미터를 켜세요. 이렇게 하려면 이 파라미터의 값을 1으로 설정합니다. | 

향상된 binlog가 켜져 있는지 확인하려면 MySQL 클라이언트에서 다음 명령을 사용하세요.

```
mysql>show status like 'aurora_enhanced_binlog';
              
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| aurora_enhanced_binlog | ACTIVE |
+------------------------+--------+
1 row in set (0.00 sec)
```

향상된 binlog가 켜져 있을 경우 `aurora_enhanced_binlog`에 대한 출력이 `ACTIVE`로 표시됩니다.

## 기타 관련 파라미터
<a name="AuroraMySQL.Enhanced.binlog.other.parameters"></a>

향상된 binlog를 켜면 다음 파라미터가 영향을 받습니다.
+ `max_binlog_size` 파라미터는 표시되지만 수정할 수는 없습니다. 향상된 binlog가 켜지면 기본값 `134217728`이 `268435456`으로 자동 조정됩니다.
+ 커뮤니티 MySQL binlog와 달리 향상된 binlog가 켜져 있을 때는 `binlog_checksum`이 동적 파라미터로 작동하지 않습니다. 이 파라미터에 대한 변경 사항을 적용하려면 `ApplyMethod`가 `immediate`인 경우에도 DB 클러스터를 수동으로 재부팅해야 합니다.
+ 향상된 binlog가 켜져 있을 때는 `binlog_order_commits` 파라미터에 설정한 값이 커밋 순서에 영향을 주지 않습니다. 커밋은 성능에 더 이상 영향을 주지 않고 항상 순서가 지정됩니다.

## 향상된 binlog와 커뮤니티 MySQL binlog의 차이점
<a name="AuroraMySQL.Enhanced.binlog.differences"></a>

향상된 binlog는 커뮤니티 MySQL binlog와 비교할 때 복제, 백업 및 Aurora Global Database와 다르게 상호 작용합니다. 향상된 binlog를 사용하기 전에 다음과 같은 차이점을 이해하는 것이 좋습니다.
+ 소스 DB 클러스터의 향상된 binlog 파일은 복제된 DB 클러스터에서 사용할 수 없습니다.
+ 향상된 binlog 파일은 Aurora 백업에 포함되지 않습니다. 따라서 DB 클러스터를 복원한 후에는 보존 기간이 설정되어 있더라도 소스 DB 클러스터의 향상된 binlog 파일을 사용할 수 없습니다.
+ Aurora 글로벌 데이터베이스와 함께 사용하면 프라이머리 DB 클러스터의 향상된 binlog 파일이 보조 리전의 DB 클러스터에 복제되지 않습니다.

****예시****  
다음 예는 향상된 binlog와 커뮤니티 MySQL binlog 간의 차이점을 설명합니다.

**복원되거나 복제된 DB 클러스터에서**

향상된 binlog가 켜져 있으면 복원되거나 복제된 DB 클러스터에서 이전 binlog 파일을 사용할 수 없습니다. 복원 또는 복제 작업 후 binlog가 켜져 있으면 새 DB 클러스터는 1(mysql-bin-changelog.000001)부터 고유한 binlog 파일 시퀀스를 쓰기 시작합니다.

복원 또는 복제 작업 후에 향상된 binlog를 켜려면 복원되거나 복제된 DB 클러스터에서 필요한 DB 클러스터 파라미터를 설정하세요. 자세한 내용은 [향상된 binlog 파라미터 구성](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters) 단원을 참조하십시오.

**Example 예제: 향상된 binlog가 켜져 있을 때 수행되는 복제 또는 복원 작업**  
소스 DB 클러스터:  

```
mysql> show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        |
| mysql-bin-changelog.000003 |       156 | No        |
| mysql-bin-changelog.000004 |       156 | No        | --> Enhanced Binlog turned on
| mysql-bin-changelog.000005 |       156 | No        | --> Enhanced Binlog turned on
| mysql-bin-changelog.000006 |       156 | No        | --> Enhanced Binlog turned on
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
 복원되거나 복제된 DB 클러스터에서는 향상된 binlog가 켜져 있을 때 binlog 파일이 백업되지 않습니다. binlog 데이터의 불연속성을 방지하기 위해 향상된 binlog를 켜기 전에 작성한 binlog 파일도 사용할 수 없습니다.  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        | --> New sequence of Binlog files
+----------------------------+-----------+-----------+ 
1 row in set (0.00 sec)
```

**Example 예제: 향상된 binlog가 꺼져 있을 때 수행되는 복제 또는 복원 작업**  
소스 DB 클러스터:  

```
mysql>show binary logs;
                                                
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000003 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
향상된 binlog는 `mysql-bin-changelog.000003` 이후에 비활성화됩니다. 복원되거나 복제된 DB 클러스터에서는 향상된 binlog를 끈 후에 작성한 binlog 파일을 사용할 수 있습니다.  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
1 row in set (0.00 sec)
```

**Amazon Aurora Global Database에서**

Amazon Aurora Global Database에서는 프라이머리 DB 클러스터의 binlog 데이터가 보조 DB 클러스터에 복제되지 않습니다. 크로스 리전 장애 조치 프로세스 후에는 새로 승격된 프라이머리 DB 클러스터에서 binlog 데이터를 사용할 수 없습니다. binlog가 켜져 있으면 새로 승격된 DB 클러스터는 1(mysql-bin-changelog.000001)부터 고유한 binlog 파일 시퀀스를 시작합니다.

장애 조치 후 향상된 binlog를 켜려면 보조 DB 클러스터에서 필수 DB 클러스터 파라미터를 설정해야 합니다. 자세한 내용은 [향상된 binlog 파라미터 구성](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters) 단원을 참조하십시오.

**Example 예제: 향상된 binlog가 켜져 있을 때 글로벌 데이터베이스 장애 조치 작업이 수행됩니다.**  
이전 프라이머리 DB 클러스터(장애 조치 전):  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        |
| mysql-bin-changelog.000003 |       156 | No        |
| mysql-bin-changelog.000004 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000005 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000006 |       156 | No        | --> Enhanced Binlog enabled
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
새 프라이머리 DB 클러스터(장애 조치 후):  
향상된 binlog가 켜져 있을 때 binlog 파일은 보조 리전에 복제되지 않습니다. binlog 데이터의 불연속성을 방지하기 위해 향상된 binlog를 켜기 전에 작성한 binlog 파일은 사용할 수 없습니다.  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        | --> Fresh sequence of Binlog files
+----------------------------+-----------+-----------+ 
1 row in set (0.00 sec)
```

**Example 예제: 향상된 binlog가 꺼져 있을 때 글로벌 데이터베이스 장애 조치 작업이 수행됩니다.**  
소스 DB 클러스터:  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000003 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
**복원되거나 복제된 DB 클러스터:**  
향상된 binlog는 `mysql-bin-changelog.000003` 이후에 비활성화됩니다. 향상된 binlog를 끈 후 작성된 binlog 파일은 복제되며 새로 승격된 DB 클러스터에서 사용할 수 있습니다.  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
3 rows in set (0.00 sec)
```

## 향상된 빈로그를 위한 Amazon CloudWatch 지표
<a name="AuroraMySQL.Enhanced.binlog.cloudwatch.metrics"></a>

다음 Amazon CloudWatch 지표는 향상된 binlog가 켜진 경우에만 게시됩니다.


| CloudWatch 지표 | 설명 | 단위 | 
| --- | --- | --- | 
| ChangeLogBytesUsed | 향상된 binlog가 사용하는 스토리지 양입니다. | 바이트 | 
| ChangeLogReadIOPs | 5분 간격 내에 향상된 binlog에서 수행된 읽기 I/O 작업의 수입니다. | 5분당 개수 | 
| ChangeLogWriteIOPs | 5분 간격 내에 향상된 binlog에서 수행된 쓰기 디스크 I/O 작업의 수입니다. | 5분당 개수 | 

## 향상된 빈로그의 제한 사항
<a name="AuroraMySQL.Enhanced.binlog.limitations"></a>

향상된 binlog가 켜져 있는 경우 Amazon Aurora DB 클러스터에 다음과 같은 제한 사항이 적용됩니다.
+ 향상된 binlog는 Aurora MySQL 버전 3.03.1 이상에서만 지원됩니다.
+ 프라이머리 DB 클러스터에 작성된 향상된 binlog 파일은 복제되거나 복원된 DB 클러스터에 복사되지 않습니다.
+ Amazon Aurora Global Database와 함께 사용하면 프라이머리 DB 클러스터의 향상된 binlog 파일이 보조 DB 클러스터에 복제되지 않습니다. 따라서 장애 조치 프로세스 후에는 이전 binlog 데이터를 새 프라이머리 DB 클러스터에서 사용할 수 없습니다.
+ 다음 binlog 구성 파라미터는 무시됩니다.
  + `binlog_group_commit_sync_delay`
  + `binlog_group_commit_sync_no_delay_count`
  + `binlog_max_flush_queue_time`
+ 데이터베이스에서 손상된 테이블을 삭제하거나 이름을 바꿀 수 없습니다. 이 테이블을 삭제하려면 지원에 문의하세요.
+ 향상된 binlog가 켜지면 binlog I/O 캐시가 비활성화됩니다. 자세한 내용은 [Aurora MySQL의 이진수 로그 복제 최적화](binlog-optimization.md) 단원을 참조하십시오.
**참고**  
향상된 binlog는 binlog I/O 캐시와 유사한 읽기 성능 향상 및 더 나은 쓰기 성능 개선을 제공합니다.
+ 역추적 기능은 지원되지 않습니다. 다음과 같은 조건에서는 향상된 binlog를 DB 클러스터에서 켤 수 없습니다.
  + 현재 역추적 기능이 활성화된 DB 클러스터.
  + 이전에 역추적 기능이 활성화되었지만 비활성화되지 않은 DB 클러스터
  + 역추적 기능이 활성화된 소스 DB 클러스터 또는 스냅샷에서 복원된 DB 클러스터.

# GTID 기반 복제 사용
<a name="mysql-replication-gtid"></a>

아래 내용에서는 Aurora MySQL 클러스터와 외부 소스 간 이진 로그(binlog) 복제를 통해 전역 트랜잭션 식별자(GTID)를 사용하는 방법이 나와 있습니다.

**참고**  
Aurora의 경우 외부 MySQL 데이터베이스로 또는 외부 MySQL 데이터베이스로부터 binlog 복제를 사용하는 Aurora MySQL 클러스터에서만 이 기능을 사용할 수 있습니다. 다른 데이터베이스는 Amazon RDS MySQL 인스턴스, 온프레미스 MySQL 데이터베이스 또는 다른 AWS 리전의 Aurora DB 클러스터일 수 있습니다. 이러한 종류의 복제를 구성하는 방법에 대해 알아보려면 [Aurora과 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터(이진 로그 복제본) 간의 복제](AuroraMySQL.Replication.MySQL.md) 단원을 참조하세요.

binlog 복제를 사용하고 있지만 MySQL을 사용한 GTID 기반 복제에 대해 잘 알지 못하는 경우 MySQL 설명서의 [전역 트랜잭션 식별자를 사용한 복제](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html)를 참조하세요.

Aurora MySQL 버전 2 및 3에서 GTID 기반 복제가 지원됩니다.

**Topics**
+ [전역 트랜잭션 식별자(GTID) 개요](#mysql-replication-gtid.overview)
+ [GTID 기반 복제 파라미터](#mysql-replication-gtid.parameters)
+ [Aurora MySQL 클러스터에 대한 GTID 기반 복제 활성화](mysql-replication-gtid.configuring-aurora.md)
+ [Aurora MySQL DB 클러스터에 대해 GTID 기반 복제 비활성화](mysql-replication-gtid.disabling.md)

## 전역 트랜잭션 식별자(GTID) 개요
<a name="mysql-replication-gtid.overview"></a>

*전역 트랜잭션 ID(GTIDs)* are unique identifiers generated for committed MySQL transactions. GTID를 사용해 binlog 복제 관련 문제를 더 간편하게 해결할 수 있습니다.

**참고**  
Aurora가 클러스터 내 DB 인스턴스 간에 데이터를 동기화하는 경우 이 복제 메커니즘은 이진 로그(binlog)를 수반하지 않습니다. Aurora MySQL의 경우 GTID 기반 복제는 binlog 복제를 사용해 외부 MySQL 호환 데이터베이스로부터 Aurora MySQL DB 클러스터 안 또는 밖으로 복제할 때만 적용됩니다.

MySQL은 binlog 복제에 다음 두 가지 유형의 트랜잭션을 사용합니다.
+ *GTID 트랜잭션* – GTID로 식별되는 트랜잭션.
+ *익명 트랜잭션* – GTID가 할당되지 않은 트랜잭션.

복제 구성의 GTID는 모든 DB 인스턴스에서 고유합니다. GTID를 사용하면 로그 파일 위치를 참조할 필요가 없기 때문에 복제 구성이 간편해집니다. 또한 GTID를 사용하면 복제된 트랜잭션을 추적하고 소스 인스턴스 및 복제본이 일치하는지를 쉽게 확인할 수 있습니다.

 외부 MySQL 호환 데이터베이스에서 Aurora 클러스터로 복제할 때 일반적으로 Aurora에서 GTID 기반 복제를 사용합니다. 온프레미스 또는 Amazon RDS 데이터베이스를 Aurora MySQL로 마이그레이션하는 절차의 일부로 이 복제 구성을 설정할 수 있습니다. 외부 데이터베이스에서 이미 GTID를 사용하는 경우 Aurora 클러스터에 대해 GTID 기반 복제를 활성화하면 복제 프로세스가 간소화됩니다.

 먼저 DB 클러스터 파라미터 그룹에 있는 해당 구성 파라미터를 설정하여 Aurora MySQL 클러스터에 대해 GTID 기반 복제를 구성합니다. 그런 다음 이 파라미터 그룹을 클러스터와 연결합니다.

## GTID 기반 복제 파라미터
<a name="mysql-replication-gtid.parameters"></a>

다음 파라미터를 사용하여 GTID 기반 복제를 구성할 수 있습니다.


| 파라미터 | 유효한 값 | 설명 | 
| --- | --- | --- | 
|  `gtid_mode`  |  `OFF`, `OFF_PERMISSIVE`, `ON_PERMISSIVE`, `ON`  |  `OFF`는 새 트랜잭션을 익명 트랜잭션(GTID가 없음)으로 지정하며, 트랜잭션을 복제하려면 익명이어야 합니다. `OFF_PERMISSIVE`는 새 트랜잭션을 익명 트랜잭션(GTID가 없음)으로 지정하지만, 모든 트랜잭션을 복제할 수 있습니다. `ON_PERMISSIVE`는 새 트랜잭션을 GTID 트랜잭션으로 지정하지만, 모든 트랜잭션을 복제할 수 있습니다. `ON`은 새 트랜잭션을 GTID 트랜잭션으로 지정하고, 트랜잭션을 복제하려면 GTID 트랜잭션이어야 합니다.  | 
|  `enforce_gtid_consistency`  |  `OFF`, `ON`, `WARN`  |  `OFF`는 트랜잭션이 GTID 일관성을 위반하는 것을 허용합니다. `ON`은 트랜잭션이 GTID 일관성을 위반하지 않도록 합니다. `WARN`은 트랜잭션이 GTID 일관성을 위반하는 것을 허용하지만, 위반이 발생할 경우 경고를 생성합니다.  | 

**참고**  
AWS Management Console 콘솔에서 `gtid_mode` 파라미터는 `gtid-mode`로 표시됩니다.

GTID 기반 복제의 경우 Aurora MySQL DB 클러스터의 DB 클러스터 파라미터 그룹에 대해 이 설정을 사용하십시오.
+ `ON` 및 `ON_PERMISSIVE`는 Aurora MySQL 클러스터에서 밖으로 복제하는 경우에만 적용됩니다. 이 두 값으로 인해 외부 데이터베이스로 복제되는 트랜잭션에 대해 Aurora DB 클러스터가 GTID를 사용하게 됩니다. `ON`은 외부 데이터베이스에서도 GTID 기반 복제를 사용할 것을 요구합니다. `ON_PERMISSIVE`로 인해 외부 데이터베이스에서 GTID 기반 복제는 선택 사항이 됩니다.
+ `OFF_PERMISSIVE`가 설정된 경우 이는 Aurora DB 클러스터가 외부 데이터베이스에서 안으로 복제하는 것을 수락할 수 있음을 뜻합니다. 외부 데이터베이스가 GTID 기반 복제를 사용하든 사용하지 않든 이렇게 할 수 있습니다.
+  `OFF`가 설정된 경우 이는 Aurora DB 클러스터가 GTID 기반 복제를 사용하지 않는 외부 데이터베이스에서 안으로 복제하는 것만을 수락할 수 있음을 뜻합니다.

**작은 정보**  
안으로 복제하는 것은 Aurora MySQL 클러스터에 가장 흔한 binlog 복제 시나리오입니다. 안으로 복제하는 경우 GTID 모드를 `OFF_PERMISSIVE`로 설정하는 것이 좋습니다. 이 설정을 통해 복제 원본의 GTID 설정에 관계없이 외부 데이터베이스에서 안으로 복제하는 것이 가능해집니다.

파라미터 그룹에 대한 자세한 내용은 [Amazon Aurora의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오.

# Aurora MySQL 클러스터에 대한 GTID 기반 복제 활성화
<a name="mysql-replication-gtid.configuring-aurora"></a><a name="gtid"></a>

GTID 기반 복제가 Aurora MySQL DB 클러스터에 대해 활성화되면 GTID 설정은 인바운드 및 아웃바운드 binlog 복제본 모두에 적용됩니다.

**Aurora MySQL 클러스터에 대한 GTID 기반 복제를 활성화하려면**

1. 다음 파라미터 설정을 사용해 DB 클러스터 파라미터 그룹을 생성 또는 편집하십시오.
   + `gtid_mode` – `ON` 또는 `ON_PERMISSIVE`
   + `enforce_gtid_consistency` – `ON`

1. DB 클러스터 파라미터 그룹을 Aurora MySQL 클러스터와 연결합니다. 이 작업을 수행하려면 [Amazon Aurora의 파라미터 그룹](USER_WorkingWithParamGroups.md)의 절차를 따르세요.

1. (선택 사항) GTID를 포함하지 않는 트랜잭션에 GTID를 할당하는 방법을 지정합니다. 이렇게 하려면 [mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions(Aurora MySQL 버전 3)](mysql-stored-proc-gtid.md#mysql_assign_gtids_to_anonymous_transactions)에서 저장 프로시저를 호출하면 됩니다.

# Aurora MySQL DB 클러스터에 대해 GTID 기반 복제 비활성화
<a name="mysql-replication-gtid.disabling"></a>

Aurora MySQL DB 클러스터에 대한 GTID 기반 복제를 비활성화합니다. 이렇게 하면 Aurora 클러스터가 GTID 기반 복제를 사용하는 외부 데이터베이스에 대해 인바운드 또는 아웃바운드 binlog 복제를 수행할 수 없습니다. 

**참고**  
다음 절차에서 *읽기 전용 복제본*은 외부 데이터베이스로의 또는 외부 데이터베이스로부터의 binlog 복제를 포함한 Aurora 구성의 복제 대상을 의미합니다. 읽기 전용 Aurora 복제본 DB 인스턴스를 뜻하는 것은 아닙니다. 예를 들어 Aurora 클러스터가 외부 원본에서 안으로의 복제를 수락하는 경우 Aurora 기본 인스턴스는 binlog 복제에 대해 읽기 전용 복제본의 역할을 합니다.

이 단원에 언급된 저장 프로시저에 대한 자세한 내용은 [Aurora MySQL 저장 프로시저 참조](AuroraMySQL.Reference.StoredProcs.md) 단원을 참조하십시오.

**Aurora MySQL DB 클러스터에 대해 GTID 기반 복제를 비활성화하려면**

1. Aurora 복제본에서 다음 프로시저를 실행합니다.

   버전 3의 경우

   ```
   CALL mysql.rds_set_source_auto_position(0);
   ```

   버전 2의 경우

   ```
   CALL mysql.rds_set_master_auto_position(0);
   ```

1. `gtid_mode`를 `ON_PERMISSIVE`로 재설정합니다.

   1. Aurora MySQL 클러스터와 연결된 DB 클러스터 파라미터 그룹에서 `gtid_mode`가 `ON_PERMISSIVE`로 설정되어 있는지 확인합니다.

      파라미터 그룹을 사용한 구성 파라미터 설정에 대한 자세한 내용은 [Amazon Aurora의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오.

   1. Aurora MySQL 클러스터를 다시 시작합니다

1. `gtid_mode`를 `OFF_PERMISSIVE`로 재설정합니다.

   1. Aurora MySQL 클러스터와 연결된 DB 클러스터 파라미터 그룹에서 `gtid_mode`가 `OFF_PERMISSIVE`로 설정되어 있는지 확인합니다.

   1. Aurora MySQL 클러스터를 다시 시작합니다

1. Aurora 기본 인스턴스에서 모든 GTID 트랜잭션이 적용될 때까지 기다립니다. 이러한 사항이 적용되었는지 확인하려면 다음 단계를 수행합니다.

   1.  Aurora 기본 인스턴스에서 `SHOW MASTER STATUS` 명령을 실행합니다.

      출력이 다음 출력과 유사해야 합니다.

      ```
      File                        Position
      ------------------------------------
      mysql-bin-changelog.000031      107
      ------------------------------------
      ```

      출력에서 파일 및 위치를 메모합니다.

   1. 각 읽기 전용 복제본에서 이전 단계의 소스 인스턴스의 파일 및 위치 정보를 사용하여 다음 쿼리를 실행합니다.

      버전 3의 경우

      ```
      SELECT SOURCE_POS_WAIT('file', position);
      ```

      버전 2의 경우

      ```
      SELECT MASTER_POS_WAIT('file', position);
      ```

      예를 들어 파일 이름이 `mysql-bin-changelog.000031`이고 위치가 `107`일 경우 다음 문을 실행합니다.

      버전 3의 경우

      ```
      SELECT SOURCE_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

      버전 2의 경우

      ```
      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

1. GTID 기반 복제를 비활성화하도록 GTID 파라미터를 재설정합니다.

   1. Aurora MySQL 클러스터와 연결된 DB 클러스터 파라미터 그룹에서 다음과 같이 파라미터가 설정되어 있는지 확인합니다.
      + `gtid_mode` – `OFF`
      + `enforce_gtid_consistency` – `OFF`

   1. Aurora MySQL 클러스터를 다시 시작합니다