DB 인스턴스 읽기 전용 복제본 작업 - Amazon Relational Database Service

DB 인스턴스 읽기 전용 복제본 작업

읽기 전용 복제본은 DB 인스턴스의 읽기 전용 사본입니다. 애플리케이션에서 읽기 전용 복제본으로 쿼리를 라우팅하여 프라이머리 DB 인스턴스의 로드를 줄일 수 있습니다. 이렇게 하면 읽기 중심의 데이터베이스 워크로드에 대한 단일 DB 인스턴스의 용량 제한에서 벗어나 탄력적으로 스케일 아웃할 수 있습니다.

Amazon RDS는 소스 DB 인스턴스의 읽기 전용 복제본을 생성하기 위해 DB 엔진의 기본 복제 기능을 사용합니다. 특정 엔진에서 읽기 전용 복제본을 사용하는 것에 대한 자세한 내용은 다음 단원을 참조하십시오.

소스 DB 인스턴스에서 읽기 전용 복제본을 생성하면 해당 소스가 프라이머리 DB 인스턴스가 됩니다. 프라이머리 DB 인스턴스를 업데이트하면 Amazon RDS가 읽기 전용 복제본에 비동기식으로 복사합니다. 다음 다이어그램은 다른 가용 영역(AZ)의 읽기 전용 복제본으로 복제되는 소스 DB 인스턴스를 보여 줍니다. 클라이언트는 프라이머리 DB 인스턴스에 대한 읽기/쓰기 액세스 권한과 복제본에 대한 읽기 전용 액세스 권한을 가집니다.


            읽기 전용 복제본 구성

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

다음 섹션에서는 DB 인스턴스 읽기 전용 복제본에 대해 설명합니다. 다중 AZ DB 클러스터 읽기 전용 복제본에 대한 자세한 내용은 다중 AZ DB 클러스터 읽기 전용 복제본 사용 섹션을 참조하세요.

읽기 전용 복제본에 대한 사용 사례

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

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

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

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

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

읽기 전용 복제본의 작동 방식

읽기 전용 복제본을 생성하면 먼저 기존 DB 인스턴스를 원본으로 지정합니다. 그런 다음 Amazon RDS가 소스 인스턴스의 스냅샷을 생성하여 해당 스냅샷에서 읽기 전용 인스턴스를 생성합니다. 그러면 Amazon RDS가 기본 DB 인스턴스를 변경할 때마다 DB 엔진에 비동기식 복제 방법을 사용하여 읽기 전용 복제본을 업데이트합니다.

읽기 전용 복제본은 읽기 전용 연결만을 허용하는 DB 인스턴스로 작동합니다. 탑재된 모드에서 복제본 데이터베이스를 지원하는 RDS for Oracle DB 엔진은 예외입니다. 탑재된 복제본은 사용자 연결을 허용하지 않으므로 읽기 전용 워크로드를 처리할 수 없습니다. 탑재된 복제본의 주된 용도는 리전 간 재해 복구입니다. 자세한 내용은 Amazon RDS의 Oracle의 읽기 전용 복제본 작업 단원을 참조하십시오.

애플리케이션은 DB 인스턴스에 연결되는 방식과 동일하게 읽기 전용 복제본에 연결됩니다. Amazon RDS는 소스 DB 인스턴스에서 모든 데이터베이스를 복제합니다.

다중 AZ 배포의 읽기 전용 복제본

다중 AZ 배포의 고가용성을 위해 구성된 대기 복제본이 있는 DB 인스턴스에 대해 읽기 전용 복제본을 구성할 수 있습니다. 대기 복제본을 사용한 복제는 동기식입니다. 읽기 전용 복제본과 다르게 대기 복제본은 읽기 트래픽을 처리할 수 없습니다.

다음 시나리오에서 클라이언트는 한 AZ의 프라이머리 DB 인스턴스에 대한 읽기/쓰기 액세스 권한을 가집니다. 프라이머리 인스턴스는 업데이트를 두 번째 AZ의 읽기 전용 복제본에 비동기적으로 복사하고 세 번째 AZ의 대기 복제본에도 동기적으로 복사합니다. 클라이언트는 읽기 전용 복제본에 대한 읽기 액세스 권한만 가집니다.


                    읽기 전용 복제본 및 대기 복제본 구성

고가용성 및 대기 복제본에 대한 자세한 내용은 다중 AZ 배포 구성 및 관리 섹션을 참조하세요.

리전 간 읽기 전용 복제본

경우에 따라 읽기 전용 복제본이 프라이머리 DB 인스턴스와 다른 AWS 리전에 있습니다. 이러한 경우 Amazon RDS는 기본 DB 인스턴스와 읽기 전용 복제본 사이에 보안 통신 채널을 설정합니다. Amazon RDS는 보안 그룹 항목 추가와 같이 보안 채널을 활성화하는 데 필요한 모든 AWS 보안 구성을 설정합니다. 리전 간 읽기 전용 복제본에 대한 자세한 내용은 다른 AWS 리전에서 읽기 전용 복제본 생성 섹션을 참조하세요.

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

DB 엔진용 읽기 전용 복제본 간의 차이점

Amazon RDS DB 엔진은 복제를 다르게 구현하기 때문에 다음 표와 같이 몇 가지 중요한 차이점을 알아야 합니다.

기능 또는 특성 MySQL 및 MariaDB Oracle PostgreSQL SQL 서버

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

논리적 복제

물리적 복제

물리적 복제

물리적 복제

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

RDS for MySQL과 RDS for MariaDB는 적용되지 않은 이진 로그를 유지합니다.

기본 DB 인스턴스에 리전 간 읽기 전용 복제본이 없는 경우 Amazon RDS for Oracle이 원본 DB 인스턴스에 대한 최소 2시간의 트랜잭션 로그를 유지합니다. 로그는 아카이브 로그 보존 시간 설정이 통과된 후 또는 두 시간 후 중에서 더 긴 시간이 경과한 후 원본 DB 인스턴스에서 제거됩니다. 설정이 데이터베이스에 성공적으로 적용된 경우에만 아카이브 로그 보존 시간 설정 통과 후 로그가 읽기 전용 복제본에서 제거됩니다.

경우에 따라 기본 DB 인스턴스에 하나 이상의 리전 간 읽기 전용 복제본이 있을 수 있습니다. 이 경우 Amazon RDS for Oracle은 원본 DB 인스턴스에 대한 트랜잭션 로그가 전송되어 모든 리전 간 읽기 전용 복제본에 적용될 때까지 이 로그를 유지합니다.

아카이브 로그 보존 시간 설정에 대한 자세한 내용은 보관된 다시 실행 로그 보존 단원을 참조하세요.

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

보조 복제본에 더 이상 필요하지 않은 경우 기본 복제본에 있는 트랜잭션 로그 파일의 VLF(가상 로그 파일)를 자를 수 있습니다.

VLF는 복제본에서 로그 레코드가 강화된 경우에만 비활성으로 표시할 수 있습니다. 기본 복제본에 있는 디스크 하위 시스템의 속도에 관계없이 트랜잭션 로그는 가장 느린 복제본이 VLF를 강화할 때까지 VLF를 유지합니다.

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

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

아니요. Oracle 읽기 전용 복제본은 인쇄본이며 Oracle은 읽기 전용 복제본에 쓰기를 허용하지 않습니다. 읽기 전용 복제본을 쓰기 가능하도록 승격할 수 있습니다. 승격된 읽기 전용 복제본에는 승격 요청이 이루어진 시점까지 복제된 데이터가 있습니다.

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

아니요. SQL Server 읽기 전용 복제본은 물리적 복사본이며 쓰기도 허용하지 않습니다. 읽기 전용 복제본을 쓰기 가능하도록 승격할 수 있습니다. 승격된 읽기 전용 복제본에는 승격 요청이 이루어진 시점까지 복제된 데이터가 있습니다.

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

예. RDS for MySQL 또는 RDS for MariaDB 읽기 전용 복제본에서는 자동 백업과 수동 스냅샷이 지원됩니다.

예. RDS for Oracle 읽기 전용 복제본에서는 자동 백업과 수동 스냅샷이 지원됩니다.

예. RDS for PostgreSQL 읽기 전용 복제본의 수동 스냅샷을 생성할 수 있습니다. 읽기 전용 복제본에 대한 자동 백업은 RDS for PostgreSQL 14.1 이상 버전에서만 지원됩니다. RDS for PostgreSQL 14.1 이전 버전의 PostgreSQL 읽기 전용 복제본에 대해서는 자동 백업을 설정할 수 없습니다. RDS for PostgreSQL 13 이전 버전의 경우 백업하려면 읽기 전용 복제본에서 스냅샷을 생성하면 됩니다.

아니요. RDS for SQL Server 읽기 전용 복제본에서는 자동 백업과 수동 스냅샷이 지원되지 않습니다.

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

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

예. 다시 실행 로그 데이터는 항상 기본 데이터베이스에서 모든 읽기 전용 복제본으로 병렬로 전송됩니다.

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

예. 다시 실행 로그 데이터는 항상 기본 데이터베이스에서 모든 읽기 전용 복제본으로 병렬로 전송됩니다.

읽기 전용 상태가 아닌 탑재된 상태로 복제본을 유지 관리할 수 있나요?

아니요.

예. 탑재된 복제본의 주된 용도는 리전 간 재해 복구입니다. 탑재된 복제본에는 Active Data Guard 라이선스가 필요하지 않습니다. 자세한 내용은 Amazon RDS의 Oracle의 읽기 전용 복제본 작업 섹션을 참조하세요.

아니요.

아니요.

읽기 전용 복제본 스토리지 유형

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

원본 DB 인스턴스 스토리지 유형 원본 DB 인스턴스 스토리지 할당 읽기 전용 복제본 스토리지 유형 옵션
프로비저닝된 IOPS 100GiB–64TiB 프로비저닝된 IOPS, 범용, 마그네틱
범용 100GiB–64TiB 프로비저닝된 IOPS, 범용, 마그네틱
범용 <100GiB 범용, 마그네틱
Magnetic 100GiB–6TiB 프로비저닝된 IOPS, 범용, 마그네틱
Magnetic <100GiB 범용, 마그네틱
참고

읽기 복제본의 할당된 스토리지를 늘릴 때는 10% 이상이어야 합니다. 이 값을 10% 미만으로 늘리면 오류가 발생합니다.

복제본에서 복제본을 생성할 때의 제한 사항

Amazon RDS는 순환 복제를 지원하지 않습니다. DB 인스턴스를 기존 DB 인스턴스의 복제 소스로 구성할 수 없습니다. 기존 DB 인스턴스에서 새 읽기 전용 복제본만 생성할 수 있습니다. 예를 들어, MySourceDBInstanceReadReplica1으로 복제하는 경우, ReadReplica1MySourceDBInstance로 다시 복제하도록 구성할 수 없습니다.

RDS for MariaDB 및 RDS for MySQL과 특정 RDS for PostgreSQL 버전의 경우 기존 읽기 전용 복제본에서 읽기 전용 복제본을 생성할 수 있습니다. 예를 들어 기존 복제본 ReadReplica1에서 새로운 읽기 전용 복제본 ReadReplica2를 생성할 수 있습니다. RDS for Oracle 및 RDS for SQL Server의 경우 기존 읽기 전용 복제본에서 읽기 전용 복제본을 생성할 수 없습니다.

복제본 삭제 시 고려 사항

읽기 전용 복제본이 더 이상 필요하지 않은 경우, DB 인스턴스를 삭제하는 동일한 메커니즘을 사용하여 읽기 전용 복제본을 명시적으로 삭제할 수 있습니다. 동일한 AWS 리전에서 읽기 전용 복제본을 삭제하지 않고 소스 DB 인스턴스를 삭제하면 각 읽기 전용 복제본이 독립 실행형 DB 인스턴스로 승격됩니다. DB 인스턴스 삭제에 대한 자세한 내용은 DB 인스턴스 삭제 단원을 참조하세요. 읽기 전용 복제본 승격에 대한 자세한 내용은 읽기 전용 복제본을 독립 DB 인스턴스로 승격 단원을 참조하십시오.

교차 리전 읽기 전용 복제본이 있는 경우, 교차 리전 읽기 전용 복제본의 소스 DB 인스턴스 삭제와 관련된 고려 사항은 리전 간 복제 시 고려 사항 섹션을 참조하세요.

읽기 전용 복제본 생성

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 기존 DB 인스턴스에서 읽기 전용 복제본을 생성할 수 있습니다. 또한 SourceDBInstanceIdentifier를 지정하여 읽기 전용 복제본을 생성할 수도 있습니다. 이 코드는 복제하려는 원본 DB 인스턴스 식별자입니다.

읽기 전용 복제본을 생성하면 Amazon RDS가 원본 DB 인스턴스의 DB 스냅샷을 캡처하고 복제를 시작합니다. 그 결과, DB 스냅샷을 캡처하는 동안 원본 DB 인스턴스에서 짧은 I/O 중단이 발생합니다.

참고

이러한 I/O 중단은 일반적으로 1분 정도 지속됩니다. 원본 DB 인스턴스가 다중 AZ 배포인 경우에는 I/O 중단을 방지할 수 있습니다. 이 경우에는 보조 DB 인스턴스에서 스냅샷을 생성하기 때문입니다.

활성 상태의 장기 실행 트랜잭션은 읽기 전용 복제본 생성 프로세스를 늦출 수 있습니다. 읽기 전용 복제본을 생성하기 전에 장기 실행 트랜잭션이 완료되기를 기다리는 것이 좋습니다. 동일한 원본 DB 인스턴스에서 다수의 읽기 전용 복제본을 병렬 방식으로 생성하는 경우에는 Amazon RDS가 첫 번째 생성 작업을 시작하면서 한 번만 스냅샷을 캡처합니다.

읽기 전용 복제본을 생성할 때는 몇 가지 고려할 사항이 있습니다. 첫째, 백업 보존 기간을 0이 아닌 다른 값으로 설정하여 원본 DB 인스턴스의 자동 백업을 활성화해야 합니다. 이 요구 사항은 다른 읽기 전용 복제본의 원본 DB 인스턴스인 읽기 전용 복제본에도 적용됩니다. RDS for MySQL 읽기 전용 복제본에서 자동 백업을 활성화하려면 먼저 읽기 전용 복제본을 생성한 다음 읽기 전용 복제본을 수정하여 자동 백업을 활성화합니다.

참고

AWS 리전 내에서 모든 읽기 전용 복제본은 소스 DB 인스턴스와 동일한 Amazon VPC 기반의 Virtual Private Cloud(VPC)에 생성하는 것이 좋습니다. 원본 DB 인스턴스와 다른 VPC에 읽기 전용 복제본을 생성하는 경우 CIDR(Classless Inter-Domain Routing) 범위가 복제본과 RDS 시스템 간에 겹칠 수 있습니다. CIDR이 겹치면 복제본이 불안정해져 복제본에 연결하는 애플리케이션에 부정적인 영향을 줄 수 있습니다. 읽기 전용 복제본을 생성할 때 오류가 발생하면 다른 대상 DB 서브넷 그룹을 선택합니다. 자세한 내용은 VPC에서 DB 인스턴스를 사용한 작업 단원을 참조하십시오.

콘솔이나 AWS CLI를 사용하여 다른 AWS 계정에서 읽기 전용 복제본을 직접 만들 수 있는 방법은 없습니다.

소스 DB 인스턴스에서 읽기 복제본을 생성하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

  3. 읽기 전용 복제본의 소스로 사용할 DB 인스턴스를 선택합니다.

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

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

  6. 인스턴스 구성을 선택합니다. 읽기 전용 복제본의 소스 DB 인스턴스보다 크거나 같은 DB 인스턴스 클래스와 스토리지 유형을 사용하는 것이 좋습니다.

  7. AWS 리전에서 읽기 전용 복제본의 대상 리전을 지정합니다.

  8. 스토리지에서는 할당된 스토리지 크기 및 스토리지 AutoScaling 사용 여부 등을 지정합니다.

    소스 DB 인스턴스가 최신 스토리지 구성을 사용하지 않는 경우 스토리지 파일 시스템 구성 업그레이드 옵션을 사용할 수 있습니다. 이 설정을 활성화하여 읽기 전용 복제본의 스토리지 파일 시스템을 원하는 구성으로 업그레이드할 수 있습니다. 자세한 내용은 DB 인스턴스의 스토리지 파일 시스템 업그레이드 단원을 참조하십시오.

  9. 사용 가능에서 복제본에 대한 장애 조치 지원을 위해 다른 가용 영역에 예비 복제본을 생성할 것인지 선택합니다.

    참고

    읽기 전용 복제본을 다중 AZ DB 인스턴스로 생성하는 작업은 원본 데이터베이스가 다중 AZ DB 인스턴스인지 여부와는 무관합니다.

  10. 다른 DB 인스턴스 설정을 지정합니다. 각 사용 가능 설정에 대한 자세한 내용은 DB 인스턴스에 대한 설정 단원을 참조하세요.

  11. 암호화된 읽기 전용 복제본을 생성하려면 추가 구성을 펼치고 다음 설정을 지정합니다.

    1. 암호화 활성을 선택합니다.

    2. AWS KMS key의 경우 KMS 키의 AWS KMS key 식별자를 선택합니다.

    참고

    원본 DB 인스턴스를 암호화해야 합니다. 원본 DB 인스턴스를 암호화하는 방법에 대해 자세히 알아보려면 Amazon RDS 리소스 암호화 단원을 참조하세요.

  12. 읽기 전용 복제본 생성을 선택합니다.

읽기 전용 복제본이 생성되면 RDS 콘솔의 [데이터베이스(Databases)] 페이지에서 확인할 수 있습니다. [역할(Role)] 열에 [복제본(Replica)]이 표시됩니다.

소스 DB 인스턴스에서 읽기 복제본을 생성하려면 AWS CLI 명령 create-db-instance-read-replica를 사용합니다. 또한 이 예에서는 할당된 스토리지 크기를 설정하고 스토리지 AutoScaling을 활성화하고 파일 시스템을 원하는 구성으로 업그레이드합니다.

다른 설정을 지정할 수 있습니다. 각 설정에 대한 자세한 내용은 DB 인스턴스에 대한 설정 단원을 참조하세요.

Linux, macOS, Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance \ --allocated-storage 100 \ --max-allocated-storage 1000 \ --upgrade-storage-config

Windows의 경우:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance ^ --allocated-storage 100 ^ --max-allocated-storage 1000 ^ --upgrade-storage-config

소스 MySQL, MariaDB, Oracle, PostgreSQL 또는 SQL Server DB 인스턴스에서 읽기 전용 복제본을 생성하려면 다음 필수 파라미터를 사용하여 Amazon RDS API CreateDBInstanceReadReplica 작업을 호출합니다.

  • DBInstanceIdentifier

  • SourceDBInstanceIdentifier

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

읽기 전용 복제본을 독립 실행형 DB 인스턴스로 승격할 수 있습니다. 원본 DB 인스턴스에 읽기 전용 복제본이 다수 있을 경우 읽기 전용 복제본 중 하나를 DB 인스턴스로 승격하더라도 나머지 복제본에는 아무런 영향도 끼치지 않습니다.

읽기 전용 복제본을 승격할 때 RDS는 DB 인스턴스를 사용할 수 있도록 하기 전에 DB 인스턴스를 재부팅합니다. 승격 프로세스는 읽기 전용 복제본의 크기에 따라 완료하는 데 몇 분 또는 더 오래도 걸릴 수 있습니다.


            읽기 전용 복제본 승격

읽기 전용 복제본 승격 사용 사례

다음과 같은 이유로 읽기 전용 복제본을 독립형 DB 인스턴스로 승격할 수 있습니다.

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

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

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

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

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

  • 스토리지 구성 업그레이드 -소스 DB 인스턴스가 원하는 스토리지 구성이 아닌 경우, 인스턴스의 읽기 전용 복제본을 만들고 스토리지 파일 시스템 구성을 업그레이드할 수 있습니다. 이 옵션은 읽기 전용 복제본의 파일 시스템을 원하는 구성으로 마이그레이션합니다. 그런 다음 읽기 전용 복제본을 독립 실행형 인스턴스로 승격할 수 있습니다.

    이 옵션을 사용하면 이전 32비트 파일 시스템의 스토리지 및 파일 크기 조정 제한을 극복할 수 있습니다. 자세한 내용은 DB 인스턴스의 스토리지 파일 시스템 업그레이드 단원을 참조하십시오.

    이 옵션은 소스 DB 인스턴스가 최신 스토리지 구성을 사용하지 않거나 동일한 요청으로 DB 인스턴스 클래스를 수정하는 경우에만 사용할 수 있습니다.

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

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

참고

읽기 전용 복제본이 RDS for Oracle DB 인스턴스인 경우 승격 대신 전환을 수행할 수 있습니다. 전환 시 소스 DB 인스턴스는 새 복제본이 되고 복제본은 새 소스 DB 인스턴스가 됩니다. 자세한 내용은 Oracle Data Guard 전환 수행 단원을 참조하십시오.

승격된 읽기 전용 복제본의 특징

일단 읽기 전용 복제본을 승격하고 나면 읽기 전용 복제본은 더 이상 읽기 전용 복제본으로 기능하지 않고 독립형 DB 인스턴스가 됩니다. 새 독립형 DB 인스턴스의 특성은 다음과 같습니다.

  • 독립형 DB 인스턴스는 승격 전 읽기 전용 복제본의 옵션 그룹 및 파라미터 그룹을 그대로 보존합니다.

  • 독립형 DB 인스턴스에서 읽기 전용 복제본을 생성하고 특정 시점 복원 작업을 수행할 수 있습니다.

  • DB 인스턴스는 더 이상 읽기 전용 복제본이 아니므로, 복제 대상으로 사용할 수 없습니다.

읽기 전용 복제본을 승격하기 위한 사전 조건

읽기 전용 복제본을 승격하려면 먼저 다음을 수행하세요.

  • 백업 전략을 검토합니다.

    • 백업을 활성화하고 하나 이상의 백업을 완성하는 것이 좋습니다. 백업 기간은 이전 백업 이후 데이터베이스에 대해 이루어진 변경 횟수를 지정하는 기능입니다.

    • 읽기 전용 복제본에 대해 백업을 활성화한 경우 일일 백업이 읽기 전용 복제본 승격을 방해하지 않도록 자동 백업 기간을 구성하십시오.

    • 읽기 전용 복제본이 backing-up 상태가 아닌지 확인합니다. 이 상태에서는 읽기 전용 복제본을 승격할 수 없습니다.

  • 트랜잭션이 기본 DB 인스턴스에 기록되지 않도록 한 다음 RDS가 모든 업데이트를 읽기 전용 복제본에 적용할 때까지 기다립니다.

    읽기 전용 복제본에서 수행된 데이터베이스 업데이트는 기본 DB 인스턴스의 업데이트가 끝난 후에 이어집니다. 복제 지연은 상당히 다양하게 나타날 수 있습니다. Replica Lag 지표를 사용하여 읽기 전용 복제본의 업데이트가 모두 완료되는 시간을 측정합니다.

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

읽기 전용 복제본 승격: 기본 단계

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

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

    참고

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

  2. (선택 사항) 다중 AZ 배포가 되도록 새 DB 인스턴스를 수정합니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정다중 AZ 배포 구성 및 관리 단원을 참조하세요.

읽기 전용 복제본을 독립 실행형 DB 인스턴스로 승격하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

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

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

  4. 작업에서 Promote(승격)를 선택합니다.

  5. 읽기 전용 복제본 승격(Promote Read Replica) 페이지에서 새롭게 승격된 DB 인스턴스의 백업 보존 기간과 백업 기간을 입력합니다.

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

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

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

Linux, macOS, Unix:

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

Windows의 경우:

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

읽기 전용 복제본을 독립형 DB 인스턴스로 승격하려면 필수 파라미터 DBInstanceIdentifier를 사용하여 Amazon RDS API PromoteReadReplica 작업을 호출합니다.

읽기 전용 복제본 모니터링

읽기 전용 복제본의 상태는 몇 가지 방법으로 모니터링할 수 있습니다. Amazon RDS 콘솔의 읽기 전용 복제본 세부 정보에 있는 연결 및 보안(Connectivity & security) 탭의 복제(Replication) 섹션에 읽기 전용 복제본의 상태가 표시됩니다. 읽기 전용 복제본의 세부 정보를 보려면 Amazon RDS 콘솔의 DB 인스턴스 목록에서 읽기 전용 복제본의 이름을 선택합니다.


            읽기 전용 복제본 상태

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

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

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

  • 복제 성능 저하됨(SQL Server 및 PostgreSQL만 해당) – 복제본이 기본 인스턴스에서 데이터를 수신하지만, 하나 이상의 데이터베이스가 업데이트를 가져오지 못할 수 있습니다. 예를 들어, 복제본이 새로 생성된 데이터베이스를 설정하는 동안 이러한 문제가 발생할 수 있습니다. 블루/그린 배포의 블루 환경에서 지원되지 않는 DDL이나 대규모 객체 변경이 이루어진 경우에도 발생할 수 있습니다.

    성능이 저하된 상태에서 오류가 발생하지 않는 한 상태가 replication degraded에서 error로 전환되지 않습니다.

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

  • 종료됨(MariaDB, MySQL 또는 PostgreSQL만 해당) – 복제가 종료됩니다. 수동으로 또는 복제 오류로 인해 연속하여 30일 이상 복제가 중지된 경우 이 오류가 발생합니다. 이 경우 Amazon RDS는 기본 DB 인스턴스와 모든 읽기 전용 복제본 간의 복제를 종료합니다. Amazon RDS는 소스 DB 인스턴스에 대한 스토리지 요건 강화 및 장애 조치 장기화를 방지하기 위해 이 작업을 수행합니다.

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

  • 종료됨(Oracle만 해당) - 복제가 종료되었습니다. 읽기 전용 복제본에 남아 있는 스토리지가 충분하지 않아 복제가 8시간 이상 중지된 경우 이 오류가 발생합니다. 이 경우 Amazon RDS는 기본 DB 인스턴스와 영향을 받는 읽기 전용 복제본 간의 복제를 종료합니다. 이 상태는 터미널 상태이며, 읽기 전용 복제본을 다시 만들어야 합니다.

  • 중지됨(MariaDB 또는 MySQL만 해당) – 고객이 시작한 요청으로 복제가 중지되었습니다.

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

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

DB 인스턴스가 복제되는 위치를 확인할 수 있으며, DB 인스턴스가 복제되는 경우 복제 상태를 확인할 수 있습니다. RDS 콘솔의 [데이터베이스(Databases)] 페이지에서 [역할(Role)] 열에 [기본(Primary)]이 표시됩니다. DB 인스턴스 이름을 선택합니다. 세부 정보 페이지의 [연결 및 보안(Connectivity & security)] 탭에서 복제 상태는 [복제(Replication)] 아래에 있습니다.

복제 모니터링 지연 시간

Amazon CloudWatch에서 Amazon RDS ReplicaLag 지표를 보고 복제 지연을 모니터링할 수 있습니다.

MySQL 및 MariaDB의 경우 ReplicaLag 지표가 Seconds_Behind_Master 명령의 SHOW REPLICA STATUS 필드 값을 보고합니다. 이렇게 MySQL 및 MariaDB에서 복제 지연이 발생하는 공통 원인은 다음과 같습니다.

  • 네트워크 중단.

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

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

참고

이전 버전의 MariaDB 및 MySQL에는 SHOW SLAVE STATUS 대신 SHOW REPLICA STATUS가 사용되었습니다. 10.5 이전 MariaDB 버전 또는 8.0.23 이전 MySQL 버전을 사용하는 경우 SHOW SLAVE STATUS를 사용합니다.

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

Oracle의 경우, ReplicaLag 지표는 Apply Lag 값과 현재 시간과 적용 지연의 DATUM_TIME 값 차이를 합한 값입니다. DATUM_TIME 값은 읽기 전용 복제본이 마지막으로 원본 DB 인스턴스에서 데이터를 수신한 시간입니다. 자세한 내용은 Oracle 설명서에서 V$DATAGUARD_STATS를 참조하십시오.

SQL Server의 경우 ReplicaLag 지표는 지연된 데이터베이스의 최대 지연 시간(초)입니다. 예를 들어, 각각 5초와 10초가 지연되는 두 개의 데이터베이스가 각각 있는 경우 ReplicaLag는 10초입니다. ReplicaLag 지표는 다음 쿼리의 값을 반환합니다.

SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;

자세한 내용은 Microsoft 설명서의 secondary_lag_seconds를 참조하십시오.

ReplicaLag는 복제본 설정 중 또는 읽기 전용 복제본이 -1 상태에 있는 경우와 같이 RDS가 지연 시간을 확인할 수 없는 경우 error을 반환합니다.

참고

새 데이터베이스는 읽기 전용 복제본에서 액세스할 수 있을 때까지 지연 시간 계산에 포함되지 않습니다.

PostgreSQL의 경우 ReplicaLag 지표는 다음 쿼리의 값을 반환합니다.

SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS reader_lag

PostgreSQL 버전 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 값은 리전 간 읽기 전용 복제본이 많이 지체될수록 크게 증가합니다.

CloudWatch를 통한 DB 인스턴스 모니터링에 대한 자세한 내용은 Amazon CloudWatch로 Amazon RDS 지표 모니터링 단원을 참조하세요.

다른 AWS 리전에서 읽기 전용 복제본 생성

Amazon RDS를 사용하면 소스 DB 인스턴스와 다른 AWS 리전에서 읽기 전용 복제본을 생성할 수 있습니다.


                리전 간 읽기 전용 복제본 구성

다른 AWS 리전에서 읽기 전용 복제본을 생성하여 다음을 수행합니다.

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

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

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

소스 인스턴스와 다른 AWS 리전에서 읽기 전용 복제본을 생성하는 방법은 동일한 AWS 리전에서 복제본을 생성하는 것과 유사합니다. AWS Management Console을 사용하거나 create-db-instance-read-replica 명령을 실행하거나, CreateDBInstanceReadReplica API 작업을 호출할 수 있습니다.

참고

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

리전 및 버전 사용 가능 여부

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전에 따라 다릅니다. 교차 리전 복제를 통한 버전 및 리전 가용성에 관한 자세한 내용은 리전 간 읽기 전용 복제본 단원을 참조하세요.

리전 간 읽기 전용 복제본 생성

다음 절차에서는 다른 AWS 리전의 소스 MariaDB, Microsoft SQL Server, MySQL, Oracle 또는 PostgreSQL DB 인스턴스에서 읽기 전용 복제본을 생성하는 방법을 보여줍니다.

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

콘솔로 여러 AWS 리전에서 읽기 전용 복제본을 생성하는 방법
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

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

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

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

  6. 대상 리전(Destination Region)을 선택합니다.

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

  8. 다른 AWS 리전에서 암호화된 읽기 전용 복제본을 생성하는 방법

    1. 암호화 활성을 선택합니다.

    2. AWS KMS key의 경우 대상 AWS 리전에 있는 KMS 키의 AWS KMS key 식별자를 선택합니다.

    참고

    암호화된 읽기 전용 복제본을 생성하려면 원본 DB 인스턴스를 암호화해야 합니다. 원본 DB 인스턴스를 암호화하는 방법에 대해 자세히 알아보려면 Amazon RDS 리소스 암호화 단원을 참조하십시오.

  9. 스토리지 Auto Scaling과 같은 다른 옵션을 선택합니다.

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

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

예를 들어, 원본 DB 인스턴스가 US East (N. Virginia) 리전에 있는 경우 ARN은 다음과 유사합니다.

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

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

소스 DB 인스턴스와 다른 AWS 리전에서 읽기 전용 복제본을 생성하려면 대상 AWS 리전에서 AWS CLI create-db-instance-read-replica 명령을 사용할 수 있습니다. 다른 AWS 리전에 읽기 전용 복제본을 생성하려면 다음 파라미터가 필요합니다.

  • --region - 읽기 전용 복제본이 생성되는 대상 AWS 리전입니다.

  • --source-db-instance-identifier – 소스 DB 인스턴스의 DB 인스턴스 식별자입니다. 이 식별자는 소스 AWS 리전용 ARN 형식으로 되어 있어야 합니다.

  • --db-instance-identifier - 대상 AWS 리전에 있는 읽기 전용 복제본의 식별자입니다.

예 리전 간 읽기 전용 복제본

다음 코드는 US East (N. Virginia) 리전의 소스 DB 인스턴스에서 미국 서부(오레곤) 리전에 읽기 전용 복제본을 생성합니다.

Linux, macOS, Unix:

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

Windows의 경우:

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

다른 AWS 리전에 암호화된 읽기 전용 복제본을 생성하려면 다음 파라미터도 필요합니다.

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

예 암호화된 리전 간 읽기 전용 복제본

다음 코드는 US East (N. Virginia) 리전의 소스 DB 인스턴스에서 미국 서부(오레곤) 리전에 암호화된 읽기 전용 복제본을 생성합니다.

Linux, macOS, Unix:

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

Windows의 경우:

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

--source-region 옵션은 AWS GovCloud(미국 동부) 및 AWS GovCloud(미국 서부) 리전 간에 암호화된 읽기 전용 복제본을 생성할 때 필요합니다. --source-region의 경우 소스 DB 인스턴스의 AWS 리전을 지정합니다.

--source-region이 지정되지 않은 경우에는 --pre-signed-url 값을 지정합니다. 미리 서명된 URL은 소스 AWS 리전에서 호출되는 create-db-instance-read-replica 명령에 대한 서명 버전 4의 서명된 요청이 포함된 URL입니다. pre-signed-url 옵션에 대한 자세한 정보는 AWS CLI 명령 참조에서 create-db-instance-read-replica를 참조하세요.

다른 AWS 리전의 소스 MySQL, Microsoft SQL Server, MariaDB, Oracle 또는 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 인스턴스가 US East (N. Virginia) 리전에 있는 경우, ARN은 다음과 유사한 모양을 띱니다.

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

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%253DCreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%123456789012%25253Adb%25253Amydbinstance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amydbinstance %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=&region-arn;rds:us-east-1:123456789012:db:mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>

Amazon RDS의 리전 간 복제 방법

Amazon RDS는 다음 프로세스를 사용하여 리전 간 읽기 전용 복제본을 생성합니다. 이 프로세스는 관련된 AWS 리전과 데이터베이스의 데이터 양에 따라 완료하는 데 몇 시간이 걸리기도 합니다. 이 정보를 사용하여 리전 간 읽기 전용 복제본을 생성할 때 프로세스가 얼마나 진행되었는지 확인할 수 있습니다.

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

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

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

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

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

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

    복제 지연 시간에 대한 자세한 내용은 읽기 전용 복제본 모니터링 단원을 참조하십시오.

리전 간 복제 시 고려 사항

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

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

  • GovCloud(US-East) 리전과 GovCloud(US-West) 리전 간에 복제할 수 있지만 GovCloud(US) 내부 또는 외부로 복제할 수는 없습니다.

  • Microsoft SQL Server, Oracle 및 PostgreSQL DB 인스턴스의 경우 다른 Amazon RDS DB 인스턴스의 읽기 전용 복제본이 아닌 원본 Amazon RDS DB 인스턴스에서만 교차 리전 Amazon RDS 읽기 전용 복제본을 생성할 수 있습니다. 이 제한은 MariaDB 및 MySQL DB 인스턴스에는 적용되지 않습니다.

  • 소스 인스턴스와 다른 AWS 리전에 읽기 전용 복제본을 생성할 때는 지연 시간이 증가할 수 있다는 점을 감안해야 합니다. 지역 데이터 센터 간 네트워크 채널이 긴 경우에 이러한 지연 시간이 발생합니다.

  • 리전 간 읽기 전용 복제본의 경우 --db-subnet-group-name 파라미터를 지정하는 읽기 전용 복제본 생성 명령은 모두 DB 서브넷 그룹을 동일한 VPC에서 지정해야 합니다.

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

  • 대부분의 경우 읽기 전용 복제본은 지정된 DB 엔진에 대해 기본 DB 파라미터 그룹 및 DB 옵션 그룹을 사용합니다.

    MySQL 및 Oracle DB 엔진의 경우 AWS CLI 명령 create-db-instance-read-replica--db-parameter-group-name 옵션으로 읽기 복제본에 대해 사용자 지정 파라미터 그룹을 지정할 수 있습니다. AWS Management Console을 사용할 때는 사용자 지정 파라미터 그룹을 지정할 수 없습니다.

  • 읽기 전용 복제본은 기본 보안 그룹을 사용합니다.

  • MariaDB, Microsoft SQL Server, MySQL 및 Oracle DB 인스턴스의 경우 교차 리전 읽기 전용 복제본의 소스 DB 인스턴스가 삭제되면 읽기 전용 복제본이 승격됩니다.

  • PostgreSQL DB 인스턴스의 경우 교차 리전 읽기 전용 복제본의 소스 DB 인스턴스가 삭제되면 읽기 전용 복제본의 복제 상태가 terminated로 설정됩니다. 읽기 전용 복제본은 승격되지 않습니다.

    읽기 전용 복제본을 승격하거나 삭제해야 합니다.

리전 간 읽기 전용 복제본 요청

소스 리전과 통신하여 리전 간 읽기 전용 복제본 생성을 요청하려면 요청자(IAM 역할 또는 IAM 사용자)가 소스 DB 인스턴스와 소스 리전에 액세스할 수 있어야 합니다.

요청자의 IAM 정책에 있는 특정 조건으로 인해 요청이 실패할 수 있습니다. 다음 예에서는 소스 DB 인스턴스가 미국 동부(오하이오)에 있고 읽기 전용 복제본이 US East (N. Virginia)에 생성되는 것으로 가정합니다. 이 예에서는 요청을 실패하게 하는 요청자의 IAM 정책에 있는 조건을 보여 줍니다.

  • 요청자의 정책에 aws:RequestedRegion에 대한 조건이 있습니다.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-1" } }

    정책이 소스 리전에 대한 액세스를 허용하지 않기 때문에 요청이 실패합니다. 요청이 성공하려면 소스 리전과 대상 리전을 모두 지정합니다.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } }
  • 요청자의 정책이 소스 DB 인스턴스에 대한 액세스를 허용하지 않습니다.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "arn:aws:rds:us-east-1:123456789012:db:myreadreplica" ...

    요청이 성공하려면 소스 인스턴스와 복제본을 모두 지정합니다.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:myreadreplica", "arn:aws:rds:us-east-2:123456789012:db:mydbinstance" ] ...
  • 요청자의 정책이 aws:ViaAWSService를 거부합니다.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Bool": {"aws:ViaAWSService": "false"} }

    소스 리전과의 통신은 요청자를 대신하여 RDS가 수행합니다. 요청이 성공하려면 AWS 서비스로부터의 호출을 거부하지 않아야 합니다.

  • 요청자의 정책에 aws:SourceVpc 또는 aws:SourceVpce에 대한 조건이 있습니다.

    RDS가 원격 리전을 호출할 때 지정된 VPC 또는 VPC 엔드포인트에서 수신된 요청이 아니기 때문에 요청이 실패할 수 있습니다.

요청을 실패하게 하는 이전 조건 중 하나를 사용해야 하는 경우 aws:CalledVia를 사용한 두 번째 문을 포함하여 요청이 성공하도록 할 수 있습니다. 예를 들어 다음과 같이 aws:CalledVia와 함께 aws:SourceVpce를 사용할 수 있습니다.

... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Condition" : { "ForAnyValue:StringEquals" : { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "rds:CreateDBInstanceReadReplica" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "rds.amazonaws.com" ] } } }

자세한 내용은 IAM 사용 설명서에서 IAM의 정책 및 권한을 참조하세요.

읽기 전용 복제본 승인

리전 간 DB 읽기 전용 복제본 생성 요청에서 success가 반환되면 RDS가 백그라운드에서 복제본 생성을 시작합니다. RDS가 소스 DB 인스턴스에 액세스할 수 있는 권한이 생성됩니다. 이 승인은 소스 DB 인스턴스를 읽기 전용 복제본에 연결하고 RDS가 지정된 읽기 전용 복제본에만 복사할 수 있도록 합니다.

승인은 서비스 연결 IAM 역할에서 rds:CrossRegionCommunication 권한을 사용하여 RDS에 의해 확인됩니다. 복제본이 승인되면 RDS가 소스 리전과 통신하고 복제본 생성을 완료합니다.

RDS는 이전에 CreateDBInstanceReadReplica 요청에 의해 승인되지 않은 DB 인스턴스에 액세스할 권한이 없습니다. 읽기 전용 복제본 생성이 완료되면 승인이 취소됩니다.

RDS는 서비스 연결 역할을 사용하여 소스 리전에서 승인을 확인합니다. 복제 생성 프로세스 중에 서비스 연결 역할을 삭제하면 생성이 실패합니다.

자세한 내용은 IAM 사용 설명서서비스 연결 역할 사용을 참조하십시오.

AWS Security Token Service 보안 인증 사용

전역 AWS Security Token Service(AWS STS) 엔드포인트의 세션 토큰은 기본적으로 활성화된 AWS 리전(상용 리전)에서만 유효합니다. assumeRole에서 AWS STS API 작업을 통해 얻은 자격 증명을 사용하는 경우 소스 리전이 옵트인 리전이면 리전별 엔드포인트를 사용합니다. 그렇지 않으면 요청이 실패합니다. 이는 자격 증명이 두 리전 모두에서 유효해야 하기 때문입니다. 옵트인 리전의 경우 리전별 AWS STS 엔드포인트를 사용할 때만 두 리전 모두에서 유효합니다.

전역 엔드포인트를 사용하려면 작업의 두 리전 모두에 대해 전역 엔드포인트를 사용하도록 설정되어 있어야 합니다. Valid in all AWS 리전 계정 설정에서 AWS STS에 대해 전역 엔드포인트를 설정합니다.

미리 서명된 URL 파라미터의 보안 인증에도 동일한 규칙이 적용됩니다.

자세한 내용은 IAM 사용 설명서AWS 리전에서 AWS STS 관리를 참조하세요.

리전 간 복제 비용

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

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

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

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

MySQL 및 MariaDB 인스턴스의 경우 리전 간 읽기 전용 복제본의 생성 수를 줄이면 데이터 전송 요금을 절감할 수 있습니다. 예를 들어 AWS 리전 하나에 1개의 소스 DB 인스턴스가 있으며, 다른 AWS 리전에 3개의 읽기 전용 복제본을 두기를 바란다고 가정해봅니다. 이 경우 원본 DB 인스턴스에서 읽기 전용 복제본 중 한 개만 생성합니다. 그런 다음 다른 두 개의 복제본은 원본 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개에 대한 데이터 전송 요금이 모두 발생합니다.