읽기 전용 복제본 작업 - Amazon Relational Database Service

읽기 전용 복제본 작업

Amazon RDS는 MariaDB, Microsoft SQL Server, MySQL, Oracle 및 PostgreSQL DB 엔진의 기본 복제 기능을 사용하여 원본 DB 인스턴스의 읽기 전용 복제본이라고 하는 특수한 유형의 DB 인스턴스를 생성할 수 있습니다. 원본 DB 인스턴스가 기본 DB 인스턴스가 됩니다. 기본 DB 인스턴스에 적용된 업데이트는 읽기 전용 복제본에 비동기식으로 복사됩니다. 애플리케이션에서 읽기 전용 복제본으로 읽기 쿼리를 라우팅하여 기본 DB 인스턴스의 로드를 줄일 수 있습니다. 읽기 전용 복제본을 사용하면 읽기 중심의 데이터베이스 워크로드에 대한 단일 DB 인스턴스의 용량 제한에서 벗어나 탄력적으로 늘릴 수 있습니다.


            읽기 전용 복제본 구성
참고

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

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

참고

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

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

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


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

고가용성 및 대기 복제본에 대한 자세한 내용은 Amazon RDS를 위한 고가용성(다중 AZ) 섹션을 참조하세요.

읽기 전용 복제본은 ariaDB, Microsoft SQL Server, MySQL, Oracle 및 PostgreSQL DB 엔진에서 지원됩니다. 이 단원에서는 이러한 모든 엔진과 함께 읽기 전용 복제본 사용에 대한 일반 정보를 찾을 수 있습니다. 특정 엔진에서 읽기 전용 복제본을 사용하는 것에 대한 자세한 내용은 다음 단원을 참조하십시오.

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

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

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

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

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

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

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

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

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

Amazon RDS는 순환 복제를 지원하지 않습니다. DB 인스턴스를 기존 DB 인스턴스의 복제 소스로 구성할 수 없습니다. 기존 DB 인스턴스에서 새 읽기 전용 복제본만 생성할 수 있습니다. 예를 들어, MyDBInstanceReadReplica1으로 복제하는 경우, ReadReplica1MyDBInstance로 다시 복제하도록 구성할 수 없습니다. MariaDB 및 MySQL의 경우 기존 읽기 전용 복제본에서 읽기 전용 복제본을 생성할 수 있습니다. 예를 들어, ReadReplica1에서 ReadReplica2와 같은 새 읽기 전용 복제본을 생성할 수 있습니다. Oracle, PostgreSQL 및 SQL Server의 경우 기존 읽기 전용 복제본에서 읽기 전용 복제본을 생성할 수 없습니다.

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

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

다른 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 읽기 전용 복제본은 물리적 복사본이며 쓰기도 허용하지 않습니다. 읽기 전용 복제본을 쓰기 가능하도록 승격할 수 있습니다. 승격된 읽기 전용 복제본에는 승격 요청이 이루어진 시점까지 복제된 데이터가 있습니다.

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

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

아니요. Amazon RDS for Oracle 읽기 전용 복제본의 수동 스냅샷을 생성하거나 자동 백업을 활성화할 수 없습니다.

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

아니요. Amazon RDS for SQL Server 읽기 전용 복제본의 수동 스냅샷을 생성하거나 자동 백업을 활성화할 수 없습니다.

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

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

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

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

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

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

아니요.

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

아니요.

아니요.

읽기 전용 복제본 생성

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 버전 5.6 이상 읽기 전용 복제본에서 자동 백업을 활성화하려면 먼저 읽기 전용 복제본을 생성한 다음 자동 백업이 활성화되도록 읽기 전용 복제본을 변경해야 합니다.

참고

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

소스 DB 인스턴스와 다른 AWS 계정에는 읽기 전용 복제본을 생성할 수 없습니다.

소스 DB 인스턴스에서 읽기 복제본을 생성하려면

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

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

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

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

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

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

  7. 복제본에 대한 장애 조치 지원을 위해 다른 가용 영역에 예비 복제본을 생성하려면 [Multi-AZ deployment]에서 [Yes]를 선택합니다.

    참고

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

  8. 암호화된 읽기 전용 복제본을 생성하려면

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

    2. 마스터 키의 경우 고객 마스터 키(CMK)의 AWS Key Management Service(AWS KMS) 키 식별자를 선택합니다.

    참고

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

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

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

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

원본 DB 인스턴스에서 읽기 복제본을 생성하려면 AWS CLI 명령 create-db-instance-read-replica을(를) 사용합니다. 이 예에서는 스토리지 Auto Scaling도 활성화합니다.

Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

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

Windows의 경우:

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

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

  • DBInstanceIdentifier

  • SourceDBInstanceIdentifier

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

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


                읽기 전용 복제본 승격

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

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

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

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

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

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

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

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

읽기 전용 복제본을 승격하면 새 DB 인스턴스가 생성되더라도 이전 읽기 전용 복제본의 옵션 그룹 및 파라미터 그룹은 그대로 보존됩니다. 승격 프로세스는 읽기 전용 복제본의 크기에 따라 완료하는 데 몇 분 또는 더 오래도 걸릴 수 있습니다. 일단 읽기 전용 복제본이 새 DB 인스턴스로 승격되면 다른 DB 인스턴스와 다를 것이 없습니다. 예를 들어, 새 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 콘솔의 [승격(Promote)] 옵션, AWS CLI 명령 promote-read-replica 또는 PromoteReadReplica Amazon RDS API 작업을 사용하여 읽기 전용 복제본을 승격합니다.

    참고

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

  4. (선택 사항) 다중 AZ 배포가 되도록 새 DB 인스턴스를 수정합니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정Amazon RDS를 위한 고가용성(다중 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 인스턴스로 승격하려면 필수 파라미터 PromoteReadReplica를 사용하여 Amazon RDS API DBInstanceIdentifier 작업을 호출합니다.

읽기 전용 복제본 모니터링

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


                읽기 전용 복제본 상태

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

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

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

  • 복제 성능 저하됨(SQL Server만 해당) – 복제본이 기본 인스턴스에서 데이터를 수신하지만, 하나 이상의 데이터베이스가 업데이트를 가져오지 못할 수 있습니다. 예를 들어, 복제본이 새로 생성된 데이터베이스를 설정하는 동안 이러한 문제가 발생할 수 있습니다.

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

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

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

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

  • 중지됨(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 ag.name name, MAX(hdrs.secondary_lag_seconds) max_lag from sys.dm_hadr_database_replica_state

자세한 내용은 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 지표 모니터링 단원을 참조하십시오.