Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

MariaDB, MySQL 및 PostgreSQL DB 인스턴스의 읽기 전용 복제본 작업

Amazon RDS는 MariaDB, MySQL 및 PostgreSQL DB 엔진의 기본 복제 기능을 사용하여 원본 DB 인스턴스의 읽기 전용 복제본이라고 하는 특수한 유형의 DB 인스턴스를 만들 수 있습니다. 원본 DB 인스턴스에 적용된 변경 사항은 읽기 전용 복제본에도 동시에 적용됩니다. 애플리케이션에서 읽기 전용 복제본으로 읽기 쿼리를 라우팅하여 원본 DB 인스턴스의 로드에 대한 부하를 줄일 수 있습니다. 읽기 전용 복제본을 이용하면 읽기 중심의 데이터베이스 워크로드를 처리하기 위해 단일 DB 인스턴스의 용량 제한을 탄력적으로 늘릴 수 있습니다.

참고

다음 정보는 원본 DB 인스턴스와 동일한 AWS 리전이나 별도의 AWS 리전에 Amazon RDS 읽기 전용 복제본을 생성할 때도 똑같이 적용됩니다. 하지만 Amazon EC2 인스턴스에서 실행되거나 온프레미스인 인스턴스로 복제를 설정할 때는 적용되지 않습니다.

읽기 전용 복제본을 생성할 때는 먼저 기존 DB 인스턴스를 원본으로 지정합니다. 그러면 Amazon RDS가 원본 인스턴스의 스냅샷을 캡처한 후 이 스냅샷을 이용해 읽기 전용 인스턴스를 생성합니다. 이후부터는 원본 DB 인스턴스를 변경할 때마다 Amazon RDS가 DB 엔진에 비동기식 복제 방법을 사용하여 읽기 전용 복제본을 업데이트합니다. 읽기 전용 복제본은 읽기 전용 연결만을 허용하는 DB 인스턴스로 작동합니다. 애플리케이션은 DB 인스턴스에 연결되는 방식과 동일하게 읽기 전용 복제본에 연결됩니다. Amazon RDS는 원본 DB 인스턴스의 데이터베이스를 모두 복제합니다.

읽기 전용 복제본이 DB 인스턴스와 다른 AWS 리전에 있는 경우, Amazon RDS는 원본 DB 인스턴스와 읽기 전용 복제본 간에 보안 통신 채널을 설정합니다. Amazon RDS는 보안 그룹 항목 추가 등 보안 채널 활성화에 필요한 일체의 AWS 보안 구성을 설정합니다.

MariaDB, MySQL 및 PostgreSQL 엔진은 읽기 전용 복제본을 지원합니다. 이 단원에서는 이 세 가지 엔진 모두에서 읽기 전용 복제본을 사용하는 것에 대한 일반적인 정보를 제공합니다. 특정 엔진에서 읽기 전용 복제본을 사용하는 것에 대한 자세한 내용은 다음 단원을 참조하십시오.

Amazon RDS 읽기 전용 복제본의 개요

임의의 원본 DB 인스턴스에 하나 이상의 읽기 전용 복제본을 배포하는 경우는 다음을 비롯해 다양한 시나리오에서 적용될 수 있습니다.

  • 읽기 중심의 데이터베이스 워크로드를 위해 단일 DB 인스턴스의 컴퓨팅 파워 또는 I/O 용량을 확장합니다. 이 과도한 읽기 트래픽을 하나 이상의 읽기 전용 복제본으로 이동할 수 있습니다.

  • 원본 DB 인스턴스를 사용할 수 없는 동안 읽기 트래픽을 처리합니다. 원본 DB 인스턴스가 I/O 요청을 처리하지 못할 경우(예: 백업 또는 예약된 유지 관리를 위한 I/O 중단), 읽기 트래픽을 읽기 전용 복제본으로 이동할 수 있습니다. 이 사용 사례의 경우 원본 DB 인스턴스를 사용할 수 없으므로 읽기 전용 복제본의 데이터가 “무효”일 수 있다는 점에 유의하십시오.

  • 비즈니스 보고 또는 데이터 웨어하우징에서는 기본 복제본, 프로덕션 DB 인스턴스가 아닌 읽기 전용 복제본에 대한 비즈니스 보고 쿼리를 실행할 수 있습니다.

  • 재해 복구 구현 원본 DB 인스턴스가 실패할 경우 읽기 전용 복제본을 독립 인스턴스로 승격시키는 방법을 재해 복구 솔루션으로 사용할 수 있습니다.

기본적으로 읽기 전용 복제본은 원본 DB 인스턴스와 동일한 스토리지 유형과 함께 생성됩니다. 하지만 다음 표의 옵션에 따라 원본 DB 인스턴스와 다른 스토리지 유형을 할당하여 읽기 전용 복제본을 생성할 수도 있습니다.

원본 DB 인스턴스 스토리지 유형 원본 DB 인스턴스 스토리지 할당 읽기 전용 복제본 스토리지 유형 옵션
PIOPS 100GiB–32TiB PIOPS, GP2, 표준
GP2 100GiB–32TiB PIOPS, GP2, 표준
GP2 100GiB 미만 GP2, 표준
표준 100GiB–32TiB PIOPS, GP2, 표준
표준 100GiB 미만 GP2, 표준

Amazon RDS는 순환 복제를 지원하지 않습니다. 따라서 DB 인스턴스를 기존 DB 인스턴스에 대한 복제 원본으로 구성할 수는 없으며, 기존 DB 인스턴스에서 새로운 읽기 전용 복제본만 생성할 수 있습니다. 예를 들어 MyDBInstance가 ReadReplica1로 복제된 경우 ReadReplica1을 다시 MyDBInstance로 복제하도록 구성하지 못합니다. ReadReplica1에서는 ReadReplica2 같이 새로운 읽기 전용 복제본만 생성할 수 있습니다.

PostgreSQL 읽기 전용 복제본과 MySQL 또는 MariaDB 읽기 전용 복제본의 차이점

PostgreSQL DB 엔진과 MySQL 및 MariaDB DB 엔진은 복제 방식이 다르기 때문에 다음 표에 나온 몇 가지 큰 차이점을 반드시 알고 있어야 합니다.

기능 또는 특성 PostgreSQL MySQL 및 MariaDB

어떤 복제 방식을 사용합니까?

물리적 복제

논리적 복제

트랜잭션 로그는 어떻게 삭제합니까?

PostgreSQL에는 데이터를 읽기 전용 복제본으로 보낼 때 유지할 Write Ahead Log(WAL) 파일 수를 결정할 수 있는 파라미터인 wal_keep_segments가 있습니다. 이 파라미터 값에 따라 유지할 로그 수가 결정됩니다.

Amazon RDS는 적용되지 않은 이진 로그를 보관합니다.

복제본에 쓰기가 가능합니까?

아니요. PostgreSQL 읽기 전용 복제본은 물리적 복사본이므로 PostgreSQL은 읽기 전용 복제본에 대해 쓰기를 허용하지 않습니다.

예. MySQL 또는 MariaDB 읽기 전용 복제본은 쓰기가 가능하도록 활성화할 수 있습니다.

복제본에 대해서도 백업이 가능합니까?

예. PostgreSQL 읽기 전용 복제본의 수동 스냅샷을 생성할 수는 있지만 자동 백업은 활성화할 수 없습니다.

예. MySQL 또는 MariaDB 읽기 전용 복제본은 자동 백업을 활성화할 수 있습니다.

병렬 복제 기능을 사용할 수 있습니까?

아니요. PostgreSQL은 복제를 처리하는 단일 프로세스가 있습니다.

예. MySQL 버전 5.6 이상 및 지원되는 모든 MariaDB 버전은 병렬 복제 스레드가 가능합니다.

읽기 전용 복제본 만들기

기존 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스에서 AWS Management 콘솔, AWS CLI 또는 AWS API를 사용하여 읽기 전용 복제본을 생성할 수 있습니다. 또한 SourceDBInstanceIdentifier를 지정하여 읽기 전용 복제본을 생성할 수도 있습니다. 이 코드는 복제하고자 하는 원본 DB 인스턴스의 식별자 역할을 합니다.

읽기 전용 복제본을 생성하면 Amazon RDS가 원본 DB 인스턴스의 DB 스냅샷을 캡처하고 복제를 시작합니다. 그 결과, DB 스냅샷을 캡처하는 동안 원본 DB 인스턴스에서 짧은 I/O 중단이 발생합니다. 이러한 I/O 중단은 일반적으로 1분 정도 지속됩니다. 원본 DB 인스턴스가 다중 AZ 배포인 경우에는 I/O 중단을 방지할 수 있습니다. 이 경우에는 보조 DB 인스턴스에서 스냅샷을 생성하기 때문입니다. 활성 상태의 장기 실행 트랜잭션은 읽기 전용 복제본 생성 프로세스를 늦출 수 있습니다. 읽기 전용 복제본을 생성하기 전에 장기 실행 트랜잭션이 완료되기를 기다리는 것이 좋습니다. 동일한 원본 DB 인스턴스에서 다수의 읽기 전용 복제본을 병렬 방식으로 생성하는 경우에는 Amazon RDS가 첫 번째 생성 작업을 시작하면서 한 번만 스냅샷을 캡처합니다.

읽기 전용 복제본을 생성할 때는 몇 가지 고려할 사항이 있습니다. 첫째, 백업 보존 기간을 0이 아닌 다른 값으로 설정하여 원본 DB 인스턴스의 자동 백업을 활성화해야 합니다. 이러한 요건은 다른 읽기 전용 복제본의 원본 DB 인스턴스인 읽기 전용 복제본에도 똑같이 적용됩니다. MySQL DB 인스턴스의 경우 자동 백업은 MySQL 5.6 이상을 실행하는 읽기 전용 복제본에서만 지원되며 MySQL 버전 5.5에서는 지원되지 않습니다. Amazon RDS MySQL 5.6 이상 읽기 전용 복제본에서 자동 백업을 활성화하려면 먼저 읽기 전용 복제본을 생성한 다음 자동 백업이 활성화되도록 읽기 전용 복제본을 변경해야 합니다.

AWS Management 콘솔

원본 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스에서 읽기 전용 복제본을 생성하려면

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

  2. 탐색 창에서 데이터베이스를 선택합니다.

  3. 읽기 전용 복제본의 원본으로 사용할 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스를 선택합니다.

  4. 작업에서 읽기 전용 복제본 만들기를 선택합니다.

  5. 사용할 인스턴스 사양을 선택합니다. 읽기 전용 복제본의 원본 DB 인스턴스와 동일한 DB 인스턴스 클래스와 스토리지 유형을 사용하는 것이 좋습니다. 복제본에 대한 장애 조치 지원을 위해 다른 가용 영역에 예비 복제본을 생성하려면 [Multi-AZ deployment]에서 [Yes]를 선택합니다. 읽기 전용 복제본을 다중 AZ DB 인스턴스로 생성하는 작업은 원본 데이터베이스가 다중 AZ DB 인스턴스인지 여부와는 독립적입니다.

  6. 사용하려는 설정을 선택합니다. DB 인스턴스 식별자에 읽기 전용 복제본의 이름을 입력합니다. 필요에 따라 다른 설정을 조정합니다.

  7. 사용하고자 하는 기타 설정을 선택합니다.

  8. [Create read replica]를 선택합니다.

CLI

원본 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스에서 읽기 전용 복제본을 생성하려면 AWS CLI 명령 create-db-instance-read-replica를 사용합니다.

Linux, OS X, Unix의 경우:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance

Windows의 경우:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance

API

원본 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스에서 읽기 전용 복제본을 생성하려면 Amazon RDS API 함수 CreateDBInstanceReadReplica를 호출합니다.

https://rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

읽기 전용 복제본을 독립 DB 인스턴스로 승격

MySQL, MariaDB 또는 PostgreSQL 읽기 전용 복제본을 독립 실행형 DB 인스턴스로 승격할 수 있습니다. 읽기 전용 복제본을 승격하면 DB 인스턴스가 먼저 재부팅된 후에 사용할 수 있습니다.

읽기 전용 복제본을 독립 실행형 DB 인스턴스로 승격해야 하는 몇 가지 이유가 있습니다.

  • DDL 작업 실행(MySQL 및 MariaDB에 한함) – 인덱스를 생성하거나 리빌드하는 등의 DDL 작업은 시간이 걸릴 뿐만 아니라 DB 인스턴스에 상당한 성능 저하를 초래할 수 있습니다. MySQL 또는 MariaDB 읽기 전용 복제본에서 이러한 작업을 하려면 먼저 읽기 전용 복제본이 원본 DB 인스턴스와 동기화되어 있어야 합니다. 그런 다음 읽기 전용 복제본을 승격해야 애플리케이션이 승격된 인스턴스를 사용하도록 유도할 수 있습니다.

  • 샤딩 – 샤딩이란 "무공유(share-nothing)" 아키텍처를 구현함으로써 기본적으로 대규모 데이터베이스를 다수의 소규모 데이터베이스로 분할하는 기술입니다. 데이터베이스 분할은 동일한 쿼리에 조인되지 않은 테이블을 다른 호스트로 분할하는 방법이 일반적입니다. 그 밖에 테이블을 여러 호스트로 복사한 후 해싱 알고리즘을 사용해 어떤 호스트를 업데이트할지 결정하는 방법도 있습니다. 분할된 각 "샤드"(소규모 데이터베이스)마다 읽기 전용 복제본을 생성한 후 "독립된" 샤드로 전환하면서 승격할 수 있습니다. 그런 다음 각 샤드마다 요건에 따라 키 범위(행을 분할한 경우)나 배포된 테이블을 얻을 수 있습니다.

  • 장애 복구 실행 – 원본 DB 인스턴스에 장애가 발생할 경우, 읽기 전용 복제본을 데이터 복구 방법으로 사용할 수 있습니다. 이 방법은 동기식 복제, 장애 자동 감지 및 장애 조치를 보완합니다.

    비동기식 복제의 영향이나 한계에 대해 알고 있더라도 데이터 복구를 위해 읽기 전용 복제본 승격을 사용할 수 있습니다. 이때는 먼저 읽기 전용 복제본을 생성한 다음 원본 DB 인스턴스의 장애 여부를 모니터링해야 합니다. 그 결과 장애가 발견된 경우에는 다음과 같이 실행합니다.

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

    2. 데이터베이스 트래픽을 승격된 DB 인스턴스로 유도합니다.

    3. 승격된 DB 인스턴스를 원본으로 하는 교체용 읽기 전용 복제본을 생성합니다.

읽기 전용 복제본을 승격하면 새 DB 인스턴스가 생성되더라도 이전 읽기 전용 복제본 원본의 백업 보존 기간, 백업 기간, 파라미터 그룹은 그대로 보존됩니다. 승격 프로세스는 읽기 전용 복제본의 크기에 따라 완료하는 데 몇 분에서 더 오래도 걸릴 수 있습니다. 일단 읽기 전용 복제본이 새 DB 인스턴스로 승격되면 다른 DB 인스턴스와 다를 것이 없습니다. 예를 들어 새 DB 인스턴스를 다중 AZ DB 인스턴스로 변환하고, 여기서 읽기 전용 복제본을 생성하고, 특정 시점 복원 작업을 수행할 수 있습니다. 승격된 DB 인스턴스는 더 이상 읽기 전용 복제본이 아니기 때문에 복제 대상으로는 사용할 수 없습니다. 원본 DB 인스턴스에 읽기 전용 복제본이 다수 있을 경우 읽기 전용 복제본 하나를 DB 인스턴스로 승격하더라도 나머지 복제본에는 아무런 영향도 끼치지 않습니다.

백업 기간은 이전 백업 이후 데이터베이스에 대해 이루어진 변경의 양을 지정하는 기능입니다. 읽기 전용 복제본을 독립형 인스턴스로 승격할 계획이라면 백업을 활성화하고 승격 전에 최소 한 개 이상의 백업을 완료하는 것이 좋습니다. 또한 읽기 전용 복제본이 backing-up 상태인 경우에는 독립형 인스턴스로 승격할 수 없습니다. 읽기 전용 복제본에 대해 백업을 활성화한 경우, 일일 백업이 읽기 전용 복제본 승격을 방해하지 않도록 자동 백업 기간을 구성하십시오.

다음은 읽기 전용 복제본을 DB 인스턴스로 승격하기 위한 일반적인 프로세스입니다.

  1. 읽기 전용 복제본의 원본 DB 인스턴스에 쓰기를 하지 못하도록 모든 트랜잭션을 중단한 후 읽기 전용 복제본의 업데이트가 모두 끝날 때까지 기다립니다. 읽기 전용 복제본의 데이터베이스 업데이트는 원본 DB 인스턴스의 업데이트가 끝난 후에 이어집니다. 이러한 복제 지연은 경우에 따라 큰 차이가 날 수도 있습니다. Replica Lag 지표를 사용하여 읽기 전용 복제본의 업데이트가 모두 완료되는 시간을 측정합니다.

  2. MySQL 및 MariaDB에 한함: MySQL 또는 MariaDB 읽기 전용 복제본을 변경해야 하는 경우에는 읽기 전용 복제본의 DB 파라미터 그룹에서 read_only 파라미터를 0으로 설정해야 합니다. 그래야만 인덱스 생성 등 필요한 DDL 작업을 모두 읽기 전용 복제본에 실행할 수 있기 때문입니다. 읽기 전용 복제본에 실행하는 작업은 원본 DB 인스턴스의 성능에 아무런 영향도 끼치지 않습니다.

  3. Amazon RDS 콘솔의 읽기 전용 복제본 승격 옵션, AWS CLI 명령 promote-read-replica 또는 PromoteReadReplica Amazon RDS API 작업 등을 사용하여 읽기 전용 복제본을 승격합니다.

    참고

    승격 프로세스는 완료할 때까지 몇 분 걸립니다. 읽기 전용 복제본을 승격하면 복제가 중지되고 읽기 전용 복제본이 재부팅됩니다. 재부팅이 끝나면 읽기 전용 복제본을 새 DB 인스턴스로 사용할 수 있습니다.

  4. (선택 사항) 다중 AZ 배포가 되도록 새 DB 인스턴스를 수정합니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정Amazon RDS를 위한 고가용성(다중 AZ) 단원을 참조하십시오.

AWS Management 콘솔

읽기 전용 복제본을 DB 인스턴스로 승격하려면

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

  2. Amazon RDS 콘솔에서 데이터베이스를 선택합니다.

    데이터베이스 창이 표시됩니다. 각 읽기 전용 복제본은 역할 열에 복제본이라고 표시됩니다.

  3. 승격시키려는 읽기 전용 복제본을 선택합니다.

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

  5. [Promote Read Replica] 페이지에서 새롭게 승격된 DB 인스턴스의 백업 보존 기간과 백업 기간을 입력합니다.

  6. 원하는 대로 설정되었으면 [Continue]를 선택합니다.

  7. 승인 페이지에서 [Promote Read Replica]를 선택합니다.

CLI

읽기 전용 복제본을 DB 인스턴스로 승격하려면 AWS CLI promote-read-replica 명령을 사용합니다.

Linux, OS X, Unix의 경우:

aws rds promote-read-replica \ --db-instance-identifier myreadreplica

Windows의 경우:

aws rds promote-read-replica ^ --db-instance-identifier myreadreplica

API

읽기 전용 복제본을 DB 인스턴스로 승격하려면 PromoteReadReplica를 호출합니다.

https://rds.amazonaws.com/ ?Action=PromoteReadReplica &DBInstanceIdentifier=myreadreplica &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

다른 AWS 리전에서 읽기 전용 복제본 만들기

Amazon RDS를 사용하여 원본 DB 인스턴스와 다른 AWS 리전에 MySQL, PostgreSQL 또는 MariaDB 읽기 전용 복제본을 생성할 수 있습니다. 읽기 전용 복제본을 생성하면 다음 작업을 수행할 수 있습니다.

  • 재해 복구 기능을 향상시킵니다.

  • 읽기 작업을 사용자에 더 가까운 AWS 리전으로 조정합니다.

  • 한 AWS 리전의 데이터 센터에서 다른 AWS 리전의 데이터 센터로 마이그레이션하는 작업을 더 용이하게 합니다.

원본 인스턴스와 다른 AWS 리전에 MySQL, PostgreSQL 또는 MariaDB 읽기 전용 복제본을 생성하더라도 방법은 동일한 AWS 리전에 복제본을 생성하는 것과 비슷합니다. 여러 리전에 걸쳐 두루 읽기 전용 복제본을 생성하려면 AWS Management 콘솔을 사용하거나, create-db-instance-read-replica 명령을 실행하거나 CreateDBInstanceReadReplica API 작업을 호출합니다.

원본 DB 인스턴스와 다른 AWS 리전에서 암호화된 읽기 전용 복제본을 생성하려면 원본 DB 인스턴스를 암호화해야 합니다.

그 다음 다른 AWS 리전의 원본 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스에서 읽기 전용 복제본을 생성하는 방법에 대한 정보를 찾을 수 있습니다.

AWS Management 콘솔

AWS Management 콘솔을 사용하여 여러 리전에 걸쳐 읽기 전용 복제본을 생성할 수 있습니다.

콘솔을 사용해 여러 리전에서 읽기 전용 복제본 만들기

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

  2. 탐색 창에서 데이터베이스를 선택합니다.

  3. 읽기 전용 복제본의 원본으로 사용할 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스를 선택한 후, 작업에서 Create read replica(읽기 전용 복제본 생성)를 선택합니다. 암호화된 읽기 전용 복제본을 생성하려면 원본 DB 인스턴스를 암호화해야 합니다. 원본 DB 인스턴스를 암호화하는 방법에 대해 자세히 알아보려면 Amazon RDS 리소스 암호화 단원을 참조하십시오.

  4. 사용할 인스턴스 사양을 선택합니다. 읽기 전용 복제본에는 동일한 DB 인스턴스 클래스와 스토리지 유형을 사용하는 것이 좋습니다.

  5. 사용하려는 기타 설정을 선택합니다.

    • DB 인스턴스 식별자에 읽기 전용 복제본의 이름을 입력합니다.

    • 네트워크 및 보안 섹션에서 Designation region(대상 리전)과 Designation DB subnet group(대상 DB 지원 그룹)에 대한 값을 선택합니다.

    • 다른 AWS 리전에서 암호화된 읽기 전용 복제본을 생성하려면 암호화 활성화를 선택한 후 마스터 키를 선택합니다. 마스터 키에서 대상 AWS 리전의 AWS Key Management Service(AWS KMS) 키 식별자를 선택합니다.

    • 사용하고자 하는 기타 설정을 선택합니다.

  6. [Create read replica]를 선택합니다.

CLI

다른 AWS 리전의 원본 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스에서 읽기 전용 복제본을 생성하려면 명령을 사용할 수 있습니다. create-db-instance-read-replica 이 경우 읽기 전용 복제본이 필요한 AWS 리전에서 명령을 실행한 후 원본 DB 인스턴스에 Amazon 리소스 이름(ARN)을 지정해줍니다. create-db-instance-read-replica ARN은 Amazon Web Services에서 생성된 리소스를 고유하게 식별합니다.

예를 들어, 원본 DB 인스턴스가 미국 동부(버지니아 북부) 리전에 있는 경우, ARN은 다음과 유사한 모양을 띱니다.

arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance

ARN에 대한 자세한 내용은 Amazon RDS의 Amazon 리소스 이름(ARN)을 사용한 작업 단원을 참조하십시오.

원본 DB 인스턴스와 다른 AWS 리전에서 암호화된 읽기 전용 복제본을 생성하려면 대상 AWS 리전에서 AWS CLI create-db-instance-read-replica 명령을 사용할 수 있습니다. 다음 파라미터는 다른 AWS 리전에서 암호화된 읽기 전용 복제본을 생성하는 데 사용됩니다.

  • --source-region — 암호화된 읽기 전용 복제본이 생성되는 AWS 리전. source-region이 지정되지 않은 경우에는 pre-signed-url을 지정해야 합니다. pre-signed-url은 읽기 전용 복제본이 생성되는 원본 AWS 리전에서 호출되는 CreateDBInstanceReadReplica 작업에 대한 서명 버전 4의 서명된 요청이 포함된 URL입니다. pre-signed-url에 대한 자세한 내용은 CreateDBInstanceReadReplica을 참조하십시오.

  • --source-db-instance-identifier —- 생성되는 암호화된 읽기 전용 복제본의 DB 인스턴스 식별자. 이 식별자는 원본 AWS 리전용 ARN 형식으로 되어 있어야 합니다. source-db-instance-identifier에 지정된 AWS 리전은 source-region로 지정된 AWS 리전과 일치해야 합니다.

  • --db-instance-identifier —- 대상 AWS 리전에 있는 암호화된 읽기 전용 복제본의 식별자.

  • --kms-key-id —- 대상 AWS 리전에서 읽기 전용 복제본을 암호화하는 데 사용할 키의 AWS KMS 키 식별자.

다음 코드는 us-west-2 리전에서 읽기 전용 복제본을 생성합니다.

Linux, OS X, Unix의 경우:

aws rds create-db-instance-read-replica \ --db-instance-identifier DBInstanceIdentifier \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance

Windows의 경우:

aws rds create-db-instance-read-replica ^ --db-instance-identifier DBInstanceIdentifier ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance

다음 코드는 원본 DB 인스턴스와 다른 AWS 리전에서 읽기 전용 복제본을 생성합니다. create-db-instance-read-replica 명령을 호출하는 AWS 리전이 암호화된 읽기 전용 복제본의 대상 AWS 리전입니다.

Linux, OS X, Unix의 경우:

aws rds create-db-instance-read-replica \ --db-instance-identifier DBInstanceIdentifier \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance \ --source-region us-east-1 \ --kms-key-id my-us-east-1-key

Windows의 경우:

aws rds create-db-instance-read-replica ^ --db-instance-identifier DBInstanceIdentifier ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance ^ --source-region us-east-1 ^ --kms-key-id my-us-east-1-key

API

다른 AWS 리전의 원본 MySQL, MariaDB 또는 PostgreSQL DB 인스턴스에서 읽기 전용 복제본을 생성하려면 Amazon RDS API 함수 CreateDBInstanceReadReplica를 호출할 수 있습니다. 이 경우 읽기 전용 복제본이 필요한 AWS 리전에서 CreateDBInstanceReadReplica 명령을 호출한 후 원본 DB 인스턴스에 Amazon 리소스 이름(ARN)을 지정해줍니다. ARN은 Amazon Web Services에서 생성된 리소스를 고유하게 식별합니다.

원본 DB 인스턴스와 다른 AWS 리전에서 암호화된 읽기 전용 복제본을 생성하려면 대상 AWS 리전에서 Amazon RDS API CreateDBInstanceReadReplica 작업을 사용할 수 있습니다. 다른 AWS 리전에서 암호화된 읽기 전용 복제본을 생성하려면 PreSignedURL에 값을 지정해야 합니다. PreSignedURL에는 읽기 전용 복제본이 생성되는 소스 AWS 리전에서 호출하는 CreateDBInstanceReadReplica 작업에 대한 요청이 포함되어야 합니다. PreSignedUrl에 대한 자세한 내용은 CreateDBInstanceReadReplica를 참조하십시오.

예를 들어, 원본 DB 인스턴스가 미국 동부(버지니아 북부) 리전에 있는 경우, ARN은 다음과 유사한 모양을 띱니다.

arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance

ARN에 대한 자세한 내용은 Amazon RDS의 Amazon 리소스 이름(ARN)을 사용한 작업 단원을 참조하십시오.

https://us-west-2.rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253D CreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%1234567890 12%25253Adb%25253Amy-mysql-instance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amysql-instance1-instance-20161115 %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 &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

리전 간 복제 시 고려 사항

한 AWS 리전 내에서 복제할 때 고려해야 할 모든 사항이 리전 간 복제 시에도 그대로 적용됩니다. 그 밖에 리전 간 복제 시 다음과 같은 고려 사항이 추가로 적용됩니다.

  • 리전 간 복제는 MariaDB, PostgreSQL(버전 9.4.7 및 9.5.2 이상) 또는 MySQL 5.6 이상의 Amazon RDS DB 인스턴스를 사용할 때만 가능합니다.

  • 원본 DB 인스턴스는 다수의 리전에서 리전 간 읽기 전용 복제본을 가질 수 있습니다.

  • 리전 간 Amazon RDS 읽기 전용 복제본은 다른 Amazon RDS DB 인스턴스의 읽기 전용 복제본이 아닌 원본 Amazon RDS DB 인스턴스에서만 생성할 수 있습니다.

  • 복제 채널을 AWS GovCloud (US-West) 리전으로 또는 리전을 벗어나서 설정할 수 없습니다.

  • 원본 인스턴스와 다른 AWS 리전에 읽기 전용 복제본을 생성할 때는 리전의 데이터 센터 간 네트워크 채널이 길어지기 때문에 지연 시간이 증가할 수 있다는 점을 감안해야 합니다.

  • 한 AWS 리전 내에서 똑같은 원본 DB 인스턴스를 통해 생성되는 리전 간 읽기 전용 복제본은 모두 동일한 Amazon VPC에 속하거나 VPC에서 벗어나야 합니다. 리전 간 읽기 전용 복제본의 경우 --db-subnet-group-name 파라미터를 지정하는 읽기 전용 복제본 생성 명령은 모두 DB 서브넷 그룹을 동일한 VPC에서 지정해야 합니다.

  • 다른 리전의 VPC에 있는 소스 DB 인스턴스에서 VPC에 교차 리전 읽기 전용 복제본을 생성할 수 있습니다. 또한 VPC에 없는 소스 DB 인스턴스에서도 VPC에 리전 간 읽기 전용 복제본을 생성할 수 있습니다. 또한 리전 간 읽기 전용 복제본이 VPC에 속하지 않더라도 VPC에 속하는 원본 DB 인스턴스에서 생성할 수 있습니다.

  • VPC에 대한 ACL(액세스 제어 목록) 항목 수 제한으로 인해 5개를 초과하는 교차 리전 읽기 전용 복제본 인스턴스를 보장할 수 없습니다.

리전 간 복제 비용

리전 간 복제를 위해 데이터를 전송할 때는 Amazon RDS 데이터 전송 요금이 발생합니다. 이러한 리전 간 복제 작업에서 요금이 발생하는 이유는 다음과 같이 원본 AWS 리전을 벗어나 데이터를 전송하기 때문입니다.

  • 읽기 전용 복제본을 생성할 때는 Amazon RDS가 원본 인스턴스의 스냅샷을 캡처하여 읽기 전용 복제본 리전으로 전송합니다.

  • 원본 데이터베이스에서 데이터를 변경할 때마다 Amazon RDS가 소스 AWS 리전에서 읽기 전용 복제본 리전으로 데이터를 전송합니다.

데이터 전송 요금에 대한 자세한 내용은 Amazon RDS 요금을 참조하십시오.

MySQL 및 MariaDB 인스턴스의 경우 리전 간 읽기 전용 복제본의 생성 수를 줄이면 데이터 전송 요금도 절감할 수 있습니다. 예를 들어 AWS 리전 한 곳에 원본 DB 인스턴스가 있고, 다른 AWS 리전에 읽기 전용 복제본을 생성한다고 가정하겠습니다. 이때는 원본 DB 인스턴스에서 읽기 전용 복제본을 1개만 생성합니다. 그런 다음 나머지 2개는 원본 DB 인스턴스가 아닌 첫 번째 읽기 전용 복제본에서 생성합니다.

예를 들어 한 AWS 리전에 source-instance-1이 있는 경우 다음 작업을 수행할 수 있습니다.

  • 새로운 AWS 리전에 read-replica-1을 생성한 후 source-instance-1을 원본으로 지정합니다.

  • read-replica-2read-replica-1에서 생성합니다.

  • read-replica-3read-replica-1에서 생성합니다.

위 예에서 요금은 source-instance-1에서 read-replica-1로 데이터를 전송할 때만 발생합니다. read-replica-1에서 나머지 두 복제본으로 데이터를 전송할 때는 동일 AWS 리전이기 때문에 요금이 발생하지 않습니다. 만약 복제본 3개를 전부 source-instance-1에서 생성한다면 복제본 3개에 대한 데이터 전송 요금이 모두 발생합니다.

Amazon RDS의 리전 간 복제 방법

Amazon RDS는 다음 프로세스에 따라 리전 간 읽기 전용 복제본을 생성합니다. 이 프로세스를 완료하려면 관련된 리전과 데이터베이스의 데이터 양에 따라 몇 시간까지 걸리기도 합니다. 이 정보는 리전 간 읽기 전용 복제본을 생성하면서 프로세스의 진행 과정을 파악할 때 사용할 수 있습니다.

  1. Amazon RDS가 원본 DB 인스턴스를 복제 원본으로 구성하기 시작하면서 상태를 modifying으로 설정합니다.

  2. Amazon RDS가 대상 AWS 리전에서 지정된 읽기 전용 복제본 설정을 시작하면서 상태를 생성 중으로 설정합니다.

  3. Amazon RDS가 소스 AWS 리전에서 소스 DB 인스턴스의 자동 DB 스냅샷을 생성합니다. DB 스냅샷 이름은 rds:<InstanceID>-<timestamp>와 같은 형식을 갖습니다. 여기에서 <InstanceID>는 원본 인스턴스의 식별자이고, <timestamp>는 복제 시작일과 시간을 나타냅니다. 예를 들어 rds:mysourceinstance-2013-11-14-09-24는 인스턴스 mysourceinstance에서 2013-11-14-09-24에 생성되었다는 것을 의미합니다. 자동 DB 스냅샷의 생성 단계에서 원본 DB 인스턴스 상태는 modifying, 읽기 전용 복제본 상태는 creating, 그리고 DB 스냅샷 상태는 creating입니다. 콘솔의 [DB Snapshots] 페이지에서 [Progress] 열을 보면 DB 스냅샷 생성이 얼마나 진행되었는지 알 수 있습니다. DB 스냅샷이 완료되면 DB 스냅샷과 원본 DB 인스턴스의 상태가 모두 available로 설정됩니다.

  4. Amazon RDS가 리전 간 스냅샷 복사를 시작하면서 첫 번째 데이터 전송이 이루어집니다. 스냅샷 사본은 대상 AWS 리전에 creating 상태와 함께 자동 스냅샷으로 등록됩니다. 이름은 원본 DB 스냅샷과 동일합니다. [DB Snapshots] 페이지에서 [Progress] 열을 보면 복사가 얼마나 진행되었는지 알 수 있습니다. 복사가 완료되면 DB 스냅샷 사본 상태가 available로 설정됩니다.

  5. Amazon RDS가 이제 복사된 DB 스냅샷을 사용하여 읽기 전용 복제본에 처음으로 데이터를 로드하기 시작합니다. 이 단계에서 읽기 전용 복제본이 대상 DB 인스턴스 목록에 포함되며, 이때 상태는 creating입니다. 로드가 완료되면 읽기 전용 복제본 상태가 available로 설정되고, DB 스냅샷 사본이 삭제됩니다.

  6. 읽기 전용 복제본이 available 상태에 이르면 Amazon RDS가 읽기 전용 복제본 생성 작업을 시작한 이후 원본 인스턴스에 발생한 변경 사항을 복제하기 시작합니다. 이 단계에서 읽기 전용 복제본의 복제 지연 시간은 0보다 큽니다.

    MySQL, MariaDB, 및 PostgreSQL 읽기 전용 복제본의 경우 Amazon RDS ReplicaLag 지표를 보면서 Amazon CloudWatch의 복제 지연을 모니터링할 수 있습니다. MySQL과 MariaDB에서는 ReplicaLag 지표가 SHOW SLAVE STATUS 명령의 Seconds_Behind_Master 필드 값을 보고합니다. 그리고, PostgreSQL에서는 ReplicaLag 지표가 SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS slave_lag의 값을 보고합니다.

    이렇게 MySQL 및 MariaDB에서 복제 지연이 발생하는 공통 원인은 다음과 같습니다.

    • 네트워크 중단.

    • 읽기 전용 복제본 관련 인덱스를 할당하여 테이블에 쓰기 작업 중일 때. 읽기 전용 복제본에서 read_only 파라미터가 0으로 설정되어 있지 않으면 복제가 중단될 수 있습니다.

    • MyISAM 같은 비트랜잭션 스토리지 엔진을 사용할 때. 복제는 MySQL용 InnoDB 스토리지 엔진 및 MariaDB용 XtraDB 스토리지 엔진에 대해서만 지원됩니다.

    ReplicaLag 측정치가 0에 도달하면 복제본이 원본 DB 인스턴스를 따라잡은 것입니다. ReplicaLag 지표가 -1을 반환하는 경우 복제가 현재 활성이 아닙니다. ReplicaLag = -1은 Seconds_Behind_Master = NULL​과 동등합니다.

    PostgreSQL(버전 9.4.7 및 9.5.2 이상)은 물리적인 복제 슬롯을 사용하여 원본 인스턴스에서 Write Ahead Log(WAL) 보존을 관리합니다. Amazon RDS가 리전 간 읽기 전용 복제본 인스턴스마다 물리적 복제 슬롯을 생성하여 인스턴스와 연동시킵니다. 2개의 Amazon CloudWatch 지표인 Oldest Replication Slot LagTransaction Logs Disk Usage는 수신되는 WAL 데이터와 관련하여 가장 지체된 복제본이 얼마나 오래되었는지, 그리고 현재 WAL 데이터에 얼마나 많은 스토리지가 사용되고 있는지 나타냅니다. Transaction Logs Disk Usage 값은 리전 간 읽기 전용 복제본이 많이 지체될 수록 크게 증가합니다.

리전 간 복제 예

예 VPC 외부의 리전 간 읽기 전용 복제본 생성

다음은 us-east-1에 위치한 원본 DB 인스턴스에서 us-west-2에 읽기 전용 복제본을 생성하는 예입니다. 읽기 전용 복제본은 VPC 외부에 생성됩니다.

Linux, OS X, Unix의 경우:

aws rds create-db-instance-read-replica \ --db-instance-identifier SimCoProd01Replica01 \ --region us-west-2 --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:SimcoProd01

Windows의 경우:

aws rds create-db-instance-read-replica ^ --db-instance-identifier SimCoProd01Replica01 ^ --region us-west-2 --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:SimcoProd01

예 VPC 내부의 리전 간 읽기 전용 복제본 생성

다음은 us-east-1에 위치한 원본 DB 인스턴스에서 us-west-2에 읽기 전용 복제본을 생성하는 예입니다. 읽기 전용 복제본은 지정한 DB 서브넷 그룹과 연동된 VPC 내부에 생성됩니다.

Linux, OS X, Unix의 경우:

aws rds create-db-instance-read-replica \ --db-instance-identifier SimCoProd01Replica01 \ --region us-west-2 --db-subnet-group-name my-us-west-2-subnet --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:SimcoProd01

Windows의 경우:

aws rds create-db-instance-read-replica ^ --db-instance-identifier SimCoProd01Replica01 ^ --region us-west-2 --db-subnet-group-name my-us-west-2-subnet --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:SimcoProd01

읽기 전용 복제본 모니터링

읽기 전용 복제본의 상태를 모니터링할 수 있는 방법 은 몇 가지가 있습니다. Amazon RDS 콘솔에서 읽기 전용 복제본 세부 정보의 Availability and durability(가용성 및 내구성) 섹션에 읽기 전용 복제본의 상태가 표시됩니다. 읽기 전용 복제본의 세부 정보를 보려면 Amazon RDS 콘솔의 인스턴스 목록에서 읽기 전용 복제본의 이름을 클릭합니다.


                읽기 전용 복제본 상태

AWS CLI describe-db-instances 명령 또는 Amazon RDS API DescribeDBInstances 작업을 사용하여 읽기 전용 복제본의 상태를 볼 수도 있습니다.

읽기 전용 복제본의 상태는 다음 중 한 가지가 될 수 있습니다.

  • Replicating(복제 중)읽기 전용 복제본이 성공적으로 복제되고 있습니다.

  • Error(오류)복제 도중 오류가 발생하였습니다. Amazon RDS 콘솔의 [Replication Error] 필드나 이벤트 로그를 검사하여 정확한 오류 원인을 찾아내야 합니다. 복제 오류의 문제 해결에 대한 자세한 내용은 MySQL 읽기 전용 복제본의 문제 해결 단원을 참조하십시오.

  • Terminated(종료)복제가 종료되었습니다. 수동으로 또는 복제 오류로 인해 연속하여 30일 이상 복제가 중지된 경우 이 오류가 발생합니다. 이 경우 마스터 DB 인스턴스에 대한 스토리지 요건 증가와 장에 조치 시간 장기화를 방지하기 위해 Amazon RDS가 마스터 DB 인스턴스와 모든 읽기 전용 복제본 사이의 복제를 종료합니다.

    복제가 중단되면 대용량의 오류 메시지를 로그에 써야 하기 때문에 로그 크기와 수가 증가하면서 스토리지에 영향을 끼칠 수 있습니다. 또한 Amazon RDS가 복구 단계에서 다수의 로그를 유지 및 처리하는 데 필요한 시간 때문에 장애 복구에 영향을 끼칠 수도 있습니다.

  • Stopped(중지됨) (MySQL 또는 MariaDB만 해당)—고객 요청으로 복제가 중단되었습니다.

  • replication stop point set(복제 중지 지점이 설정됨) (MySQL만 해당)—고객이 시작한 중지 지점이 mysql.rds_start_replication_until 저장 프로시저를 사용하여 설정되었으며 복제가 진행 중입니다.

  • replication stop point reached(복제 중지 지점에 도달함) (MySQL만 해당)—고객이 시작한 중지 지점이 mysql.rds_start_replication_until 저장 프로시저를 사용하여 설정되었으며 중지 지점에 도달했기 때문에 복제가 중지됩니다.