AWS DMS와 Amazon Aurora를 사용하여 지역 간 재해 복구 구현 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS DMS와 Amazon Aurora를 사용하여 지역 간 재해 복구 구현

작성자: Mark Hudson(AWS)

환경: 프로덕션

기술: 데이터베이스

AWS 서비스: AWS DMS, Amazon RDS, Amazon Aurora

요약

자연재해나 사람에 의한 재해는 언제든지 발생할 수 있으며, 이는 특정 Amazon Web Services(AWS) 리전에서 실행되는 서비스 및 워크로드의 가용성에 영향을 미칠 수 있습니다. 위험을 완화하려면 AWS 서비스에 내장된 지역 간 기능을 통합하는 재해 복구(DR) 계획을 개발해야 합니다. 본질적으로 교차 리전 기능을 제공하지 않는 AWS 서비스의 경우, DR 플랜은 AWS 리전 전반의 장애 조치를 처리할 수 있는 솔루션도 제공해야 합니다.

이 패턴은 단일 지역에 있는 두 개의 Amazon Aurora MySQL Compatible Edition 데이터베이스 클러스터를 포함하는 재해 복구 설정을 안내합니다. DR 요구 사항을 충족하기 위해 데이터베이스 클러스터는 여러 AWS 리전에 걸친 단일 데이터베이스와 함께 Amazon Aurora Global Database 기능을 사용하도록 구성됩니다. AWS Database Migration Service(AWS DMS) 작업은 로컬 리전의 클러스터 간에 데이터를 복제합니다. 하지만 AWS DMS는 현재 지역 간 작업 장애 조치를 지원하지 않습니다. 이 패턴에는 이러한 제한을 해결하고 두 리전에서 AWS DMS를 독립적으로 구성하는 데 필요한 단계가 포함됩니다.

사전 조건 및 제한 사항

사전 조건 

  • Amazon Aurora Global Database를 지원하는 일부 기본 및 보조 AWS 리전.

  • 기본 리전의 단일 계정에 두 개의 독립적인 Amazon Aurora MySQL Compatible Edition 데이터베이스 클러스터를 사용합니다.

  • 데이터베이스 인스턴스 클래스 db.r5 이상(권장).

  • 기존 데이터베이스 클러스터 간에 지속적인 복제를 수행하는 기본 리전의 AWS DMS 작업입니다.

  • 데이터베이스 인스턴스 생성 요구 사항을 충족할 수 있는 DR 리전 리소스가 마련되어 있습니다. 자세한 내용은 VPC에서 DB 인스턴스로 작업을 참조하세요.

제한 사항

제품 버전

  • Amazon Aurora MySQL-Compatible Edition 5.7 또는 8.0. 자세한 내용은 Amazon Aurora 버전을 참조하세요.

아키텍처

대상 기술 스택

  • Amazon Aurora MySQL-Compatible Edition 글로벌 데이터베이스 클러스터

  • DMS

대상 아키텍처 

다음 다이어그램은 두 AWS 지역의 글로벌 데이터베이스를 보여줍니다. 하나는 기본 및 보고자 데이터베이스와 AWS DMS 복제가 있고 다른 하나는 보조 기본 및 보고자 데이터베이스가 있습니다.

리전 간 글로벌 데이터베이스의 아키텍처 다이어그램.

자동화 및 규모 조정

AWS를 CloudFormation 사용하여 가상 사설 클라우드 (VPC), 서브넷, 파라미터 그룹과 같은 필수 인프라를 보조 리전에 생성할 수 있습니다. 또한 AWS를 CloudFormation 사용하여 DR 지역에 보조 클러스터를 생성하고 글로벌 데이터베이스에 추가할 수 있습니다. CloudFormation 템플릿을 사용하여 기본 리전에 데이터베이스 클러스터를 생성한 경우 추가 템플릿으로 업데이트하거나 보강하여 글로벌 데이터베이스 리소스를 생성할 수 있습니다. 자세한 내용은 두 개의 DB 인스턴스가 있는 Amazon Aurora DB 클러스터 생성Aurora MySQL용 글로벌 데이터베이스 클러스터 생성을 참조하세요.

마지막으로, 장애 조치 및 장애 복구 이벤트가 발생한 CloudFormation 후를 사용하여 기본 및 보조 지역에서 AWS DMS 작업을 생성할 수 있습니다. 자세한 내용은 AWS::DMS::ReplicationTask를 참조하세요.

도구

  • Amazon Aurora - Amazon Aurora는 MySQL 및 PostgreSQL과 호환되는 완전 관리형 관계형 데이터베이스 엔진입니다. 이 패턴은 Amazon Aurora MySQL Compatible Edition을 사용합니다.

  • Amazon Aurora Global Database - Amazon Aurora Global Database는 전 세계에 분산된 애플리케이션을 위해 설계되었습니다. Amazon Aurora Global Database의 여러 AWS 리전에 분산될 수 있습니다. 데이터베이스 성능에 영향을 주지 않고 데이터를 복제합니다. 또한 각 지역에서 지연 시간을 줄이면서 로컬 읽기를 빠르게 수행할 수 있으며, 지역 전체의 정전 발생 시 재해 복구 기능을 제공합니다.

  • AWS DMS - AWS Database Migration Service(AWS DMS)는 일회성 마이그레이션 또는 지속적인 복제를 제공합니다. 지속적인 복제 작업을 통해 원본 데이터베이스와 대상 데이터베이스를 동기화할 수 있습니다. 설정이 완료되면 진행 중인 복제 작업은 최소한의 지연 시간으로 소스 변경 사항을 대상에 지속적으로 적용합니다. 데이터 검증 및 변환과 같은 모든 AWS DMS 기능을 모든 복제 작업에 사용할 수 있습니다.

에픽

작업설명필요한 기술

데이터베이스 클러스터 파라미터 그룹을 수정합니다.

기존 데이터베이스 클러스터 파라미터 그룹에서 binlog_format 파라미터를 값으로 설정하여 행 수준 바이너리 로깅을 활성화합니다.

AWS DMS는 지속적인 복제 또는 변경 데이터 캡처(CDC)를 수행할 때 MySQL 호환 데이터베이스에 대한 행 수준 바이너리 로깅을 요구합니다. 자세한 내용은 AWS 관리형 MySQL 호환 데이터베이스를 AWS DMS의 원본으로 사용을 참조하세요.

AWS 관리자

데이터베이스 바이너리 로그 보존 기간을 업데이트합니다.

최종 사용자 디바이스에 설치된 MySQL 클라이언트 또는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 사용하여 기본 데이터베이스 클러스터의 작성자 노드에서 Amazon Relational Database Service(RDS)에서 제공하는 다음과 같은 저장 프로시저를 실행합니다. 여기에서 XX란 로그를 보관하는 데 걸리는 시간입니다.

call mysql.rds_set_configuration('binlog retention hours', XX)

다음 명령을 실행하면 설정을 확인할 수 있습니다.

call mysql.rds_show_configuration;

AWS에서 관리하는 MySQL 호환 데이터베이스는 가능한 한 빨리 바이너리 로그를 제거합니다. 따라서 보존 기간은 AWS DMS 작업이 실행되기 전에 로그가 삭제되지 않도록 충분히 길어야 합니다. 일반적으로 24시간이면 충분하지만 DR 리전에서 AWS DMS 작업을 설정하는 데 필요한 시간을 기준으로 값을 정해야 합니다.

DBA
작업설명필요한 기술

AWS DMS 태스크 ARN을 기록합니다.

Amazon 리소스 이름(ARN)을 사용하여 나중에 사용할 수 있도록 AWS DMS 작업 이름을 얻습니다. AWS DMS 작업 ARN을 검색하려면 콘솔에서 작업을 보거나 다음 명령을 실행하세요.

aws dms describe-replication-tasks

ARN의 모습은 다음과 같습니다.

arn:aws:dms:us-east-1:<accountid>:task:AN6HFFMPM246XOZVEUHCNSOVF7MQCLTOZUIRAMY

마지막 콜론 뒤의 문자는 이후 단계에서 사용된 작업 이름에 해당합니다.

AWS 관리자

체크포인트를 기록하도록 기존 AWS DMS 작업을 수정합니다.

AWS DMS는 복제 엔진이 변경 스트림의 복구 지점을 알 수 있도록 정보가 포함된 체크포인트를 생성합니다. 체크포인트 정보를 기록하려면 콘솔에서 다음 단계를 수행하세요.

  1. AWS DMS 작업을 중지합니다.

  2. 작업의 JSON 편집기를 사용하여 파라미터를 true로 설정합니다. TaskRecoveryTableEnabled

  3. AWS DMS 작업을 시작합니다.

AWS 관리자

체크포인트 정보를 검증합니다.

클러스터의 작성자 엔드포인트에 연결된 MySQL 클라이언트를 사용하여 리포터 데이터베이스 클러스터에서 새 메타데이터 테이블을 쿼리하여 해당 테이블이 존재하고 복제 상태 정보가 포함되어 있는지 확인합니다. 다음 명령을 실행합니다.

select * from awsdms_control.awsdms_txn_state;

ARN의 작업 이름은 이 표의 Task_Name 열에 있어야 합니다.

DBA
작업설명필요한 기술

DR 리전에 기본 인프라를 생성합니다.

Amazon Aurora 클러스터를 생성하고 액세스하는 데 필요한 기본 구성 요소를 생성합니다.

  • Virtual Private Cloud(VPC)

  • 서브넷

  • 보안 그룹

  • 네트워크 액세스 제어 목록

  • 서브넷 그룹

  • DB 파라미터 그룹

  • DB 클러스터 파라미터 그룹

두 파라미터 그룹의 구성이 기본 지역의 구성과 일치하는지 확인합니다.

AWS 관리자

두 Amazon Aurora 클러스터 모두에 DR 지역을 추가합니다.

기본 및 리포터 Amazon Aurora 클러스터에 보조 리전(DR 리전)을 추가합니다. 자세한 내용은 Amazon Aurora Global Database에 AWS 리전 추가를 참조하세요.

AWS 관리자
작업설명필요한 기술

AWS DMS 작업을 중지합니다.

장애 조치가 발생한 후에는 기본 리전의 AWS DMS 작업이 제대로 작동하지 않으므로 오류를 방지하려면 작업을 중지해야 합니다.

AWS 관리자

관리형 장애 조치를 수행하세요.

기본 데이터베이스 클러스터를 DR 지역으로 관리되는 장애 조치를 수행하세요. 자세한 내용은 Amazon Aurora Global Database에 대한 관리형 계획 장애 조치 수행을 참조하세요. 기본 데이터베이스 클러스터에서 장애 조치가 완료된 후 리포터 데이터베이스 클러스터에서 동일한 작업을 수행합니다.

AWS 관리자, DBA

데이터를 기본 데이터베이스로 로드합니다.

DR 데이터베이스 클러스터에 있는 기본 데이터베이스의 작성자 노드에 테스트 데이터를 삽입합니다. 이 데이터는 복제가 제대로 작동하는지 검증하는 데 사용됩니다.

DBA

AWS DMS 복제 인스턴스를 생성합니다.

DR 리전에서 AWS DMS 복제 인스턴스를 생성하려면 복제 인스턴스 생성을 참조하세요.

AWS 관리자, DBA

AWS DMS 소스 및 대상 엔드포인트를 생성합니다.

DR 리전에서 AWS DMS 소스 및 대상 엔드포인트를 생성하려면 소스 및 대상 엔드포인트 생성을 참조하세요. 원본은 기본 데이터베이스 클러스터의 작성자 인스턴스를 가리켜야 합니다. 대상은 보고자 데이터베이스 클러스터의 작성자 인스턴스를 가리켜야 합니다.

AWS 관리자, DBA

복제 체크포인트를 확보합니다.

복제 체크포인트를 얻으려면 MySQL 클라이언트를 사용하여 DR 지역의 리포터 데이터베이스 클러스터에 있는 작성자 노드에 대해 다음을 실행하여 메타데이터 테이블을 쿼리하세요.

select * from awsdms_control.awsdms_txn_state;

표에서 두 번째 에픽에서 획득한 기본 리전에 있는 AWS DMS 작업의 ARN에 해당하는 task_name 값을 찾으세요.

DBA

AWS DMS 작업을 생성합니다.

콘솔을 사용하여 DR 지역에서 AWS DMS 작업을 생성합니다. 작업에서 데이터 변경 사항만 복제하는 마이그레이션 방법을 지정하세요. 자세한 내용은 작업 생성을 참조하세요. 

  1. 작업 설정에서 마법사를 사용하여 다음 사항을 지정합니다.

    • 소스 트랜잭션을 위한 CDC 시작 모드 - 사용자 지정 CDC 시작 모드 활성화

    • 소스 트랜잭션을 위한 사용자 지정 CDC 시작점 - 복구 체크포인트 지정

  2. 복구 체크포인트 상자에 awsdms_txn_state 테이블의 데이터베이스 쿼리를 통해 이전에 가져온 복제 체크포인트 값을 입력합니다. 

  3. 작업 설정 섹션에서 JSON 편집기를 선택하고 TaskRecoveryTableEnabled파라미터를 true로 설정합니다. 

AWS DMS 작업 마이그레이션 작업 시작 설정을 생성 시 자동으로 설정합니다.

AWS 관리자, DBA

AWS DMS 태스크 ARN을 기록합니다.

ARN을 사용하여 나중에 사용할 수 있도록 AWS DMS 작업 이름을 확보합니다. AWS DMS 작업 ARN을 검색하려면 다음 명령을 실행하세요.

aws dms describe-replication-tasks
AWS 관리자, DBA

복제된 데이터를 검증합니다.

DR 리전의 보고서 데이터베이스 클러스터를 쿼리하여 기본 데이터베이스 클러스터에 로드한 테스트 데이터가 복제되었는지 확인합니다.

DBA
작업설명필요한 기술

AWS DMS 작업을 중지합니다.

페일백 발생 후에는 DR 리전의 AWS DMS 작업이 제대로 작동하지 않으므로 오류를 방지하려면 작업을 중지해야 합니다.

AWS 관리자

관리형 페일백을 수행하세요.

기본 데이터베이스 클러스터를 기본 리전으로 페일백합니다. 자세한 내용은 Amazon Aurora Global Database에 대한 관리형 계획 장애 조치 수행을 참조하세요. 기본 데이터베이스 클러스터의 페일백이 완료된 후 리포터 데이터베이스 클러스터에서 동일한 작업을 수행합니다.

AWS 관리자, DBA

복제 체크포인트를 확보합니다.

복제 체크포인트를 얻으려면 MySQL 클라이언트를 사용하여 DR 지역의 리포터 데이터베이스 클러스터에 있는 작성자 노드에 대해 다음을 실행하여 메타데이터 테이블을 쿼리하세요.

select * from awsdms_control.awsdms_txn_state;

표에서 네 번째 에픽에서 획득한 DR 리전에 있는 AWS DMS 작업의 ARN에 해당하는 task_name 값을 찾으세요.

DBA

AWS DMS 소스 및 대상 엔드포인트를 업데이트합니다.

데이터베이스 클러스터가 페일백된 후에는 기본 지역의 클러스터를 확인하여 어느 노드가 작성기 인스턴스인지 확인합니다. 그런 다음 기본 리전의 기존 AWS DMS 소스 및 대상 엔드포인트가 작성자 인스턴스를 가리키는지 확인합니다. 그렇지 않은 경우 작성자 인스턴스 도메인 이름 시스템(DNS) 이름으로 엔드포인트를 업데이트하세요.

AWS 관리자

AWS DMS 작업을 생성합니다.

콘솔을 사용하여 기본 리전에 AWS DMS 작업을 생성합니다. 작업에서 데이터 변경 사항만 복제하는 마이그레이션 방법을 지정하세요. 자세한 내용은 작업 생성을 참조하세요. 

  1. 작업 설정에서 마법사를 사용하여 다음 사항을 지정합니다.

    • 소스 트랜잭션을 위한 CDC 시작 모드 - 사용자 지정 CDC 시작 모드 활성화

    • 소스 트랜잭션을 위한 사용자 지정 CDC 시작점 - 복구 체크포인트 지정

  2. 복구 체크포인트 상자에  awsdms_txn_state 테이블의 데이터베이스 쿼리를 통해 이전에 가져온 복제 체크포인트 값을 입력합니다. 

  3. 또한 작업 설정 섹션에서 JSON 편집기를 선택하고 TaskRecoveryTableEnabled파라미터를 true로 설정합니다.

  4. 마지막으로 AWS DMS 작업 마이그레이션 작업 시작 설정을 생성 시 자동으로 설정합니다.

AWS 관리자, DBA

AWS DMS 태스크 Amazon 리소스 이름(ARN)을 기록합니다.

ARN을 사용하여 나중에 사용할 수 있도록 AWS DMS 작업 이름을 확보합니다. AWS DMS 작업 ARN을 검색하려면 다음 명령을 실행하세요.

aws dms describe-replication-tasks

다른 관리형 장애 조치를 수행할 때 또는 DR 시나리오 중에 작업 이름이 필요합니다.

AWS 관리자, DBA

AWS DMS 작업을 삭제합니다.

기본 리전에서는 기존의 AWS DMS 작업(현재 중지됨)을 삭제하고 보조 리전에서는 기존 AWS DMS 작업(현재 중지됨)을 삭제합니다.

AWS 관리자

관련 리소스

추가 정보

Amazon Aurora Global Database는 1초의 Recovery Time Objective(RTO)와 1분 미만의 Recovery Point Objective(RPO)를 제공하여 기존 복제 솔루션보다 낮고 DR 시나리오에 이상적이기 때문에 이 예제에서 DR에 사용됩니다.

Amazon Aurora Global Database는 다음 사항을 비롯한 많은 다른 이점을 제공합니다.

  • 로컬 지연 시간을 이용한 글로벌 읽기 - 전 세계 소비자는 로컬 지연 시간을 두고 로컬 지역의 정보에 액세스할 수 있습니다.

  • 확장 가능한 보조 Amazon Aurora DB 클러스터 - 보조 클러스터는 독립적으로 확장하여 최대 16개의 읽기 전용 복제본을 추가할 수 있습니다.

  • 기본 DB클러스터에서 보조 Amazon Aurora DB 클러스터로의 빠른 복제 – 복제는 기본 클러스터의 성능에 거의 영향을 미치지 않습니다. 이는 스토리지 계층에서 발생하며 일반적인 지역 간 복제 지연 시간은 1초 미만입니다.

이 패턴은 복제에도 AWS DMS를 사용합니다. Amazon Aurora 데이터베이스는 읽기 전용 복제본을 생성하는 기능을 제공하므로 복제 프로세스와 DR 설정을 간소화할 수 있습니다. 그러나데이터 변환이 필요하거나 대상 데이터베이스에 원본 데이터베이스에 없는 추가 인덱스가 필요한 경우에는 AWS DMS를 복제하는 데 주로 사용됩니다.