다중 AZ DB 클러스터 배포 - Amazon Relational Database Service

다중 AZ DB 클러스터 배포

다중 AZ DB 클러스터 배포는 읽을 수 있는 대기 DB 인스턴스가 두 개 있는 Amazon RDS의 고가용성 배포 모드입니다. 다중 AZ DB 클러스터에는 동일한 AWS 리전에 있는 세 개의 개별 가용 영역에 라이터 DB 인스턴스와 두 개의 리더 DB 인스턴스가 있습니다. 다중 AZ DB 클러스터는 다중 AZ DB 인스턴스 배포에 비해 고가용성, 높은 읽기 워크로드 용량, 낮은 쓰기 대기 시간을 지원합니다.

중요

다중 AZ DB 클러스터는 Aurora DB 클러스터와 동일하지 않습니다. Aurora DB 클러스터에 대한 자세한 내용은 Amazon Aurora 사용 설명서를 참조하세요.

리전 및 버전 사용 가능 여부

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전마다 다릅니다. 다중 AZ DB 클러스터가 포함된 Amazon RDS의 버전 및 리전 가용성에 대한 자세한 내용은 다중 AZ DB 클러스터 단원을 참조하세요.

다중 AZ DB 클러스터의 개요

다중 AZ DB 클러스터에서는 Amazon RDS가 DB 엔진의 네이티브 복제 기능을 사용하여 라이터 DB 인스턴스의 데이터를 두 리더 DB 인스턴스로 복제합니다. 라이터 DB 인스턴스가 변경되면 각 리더 DB 인스턴스로 전송됩니다. 변경 사항을 커밋하려면 하나 이상의 리더 DB 인스턴스의 승인을 받아야 합니다.

리더 DB 인스턴스는 자동 장애 조치 대상 역할을 하며 읽기 트래픽을 제공하여 애플리케이션 읽기 처리량을 높입니다. 라이터 DB 인스턴스에서 중단이 발생하는 경우 RDS는 어느 리더 DB 인스턴스가 장애 조치 대상이 되는지를 관리합니다. RDS는 어느 리더 DB 인스턴스의 가장 최근 변경 기록을 기준으로 이를 수행합니다.

다음 다이어그램은 다중 AZ DB 클러스터를 보여줍니다.


				다중 AZ DB 클러스터

일반적으로 다중 AZ DB 클러스터는 다중 AZ DB 인스턴스 배포에 비해 쓰기 대기 시간이 짧습니다. 또한 읽기 전용 워크로드가 리더 DB 인스턴스에서 실행되도록 허용합니다. RDS 콘솔에는 라이터 DB 인스턴스의 가용 영역과 리더 DB 인스턴스의 가용 영역이 표시됩니다. describe-db-clusters CLI 명령이나 DescribeDBClusters API 작업을 사용하여 이 정보를 찾아볼 수도 있습니다.

다중 AZ DB 클러스터 생성 및 관리

다중 AZ DB 클러스터를 직접 생성하거나 스냅샷에서 복원하여 생성할 수 있습니다. 관련 지침은 해당 주제를 참조하세요.

다음 주제의 지침에 따라 다중 AZ DB를 수정, 재부팅 또는 삭제할 수 있습니다.

다중 AZ DB 클러스터의 스냅샷 생성의 다음 지침에 따라 다중 AZ DB 클러스터의 스냅샷을 생성할 수 있습니다.

다중 AZ DB 클러스터를 특정 시점으로 복원의 다음 지침에 따라 다중 AZ DB 클러스터를 특정 시점으로 복원할 수 있습니다.

다중 AZ DB 클러스터의 연결 관리

다중 AZ DB 클러스터에는 단일 DB 인스턴스 대신 세 개의 DB 인스턴스가 있습니다. 각 연결은 특정 DB 인스턴스에서 처리합니다. 다중 AZ DB 클러스터에 연결하면 지정한 호스트 이름과 포트가 엔드포인트라는 정규화된 도메인 이름으로 연결됩니다. 다중 AZ DB 클러스터는 엔드포인트 메커니즘을 사용하여 이러한 연결을 추상화합니다. 따라서 일부 DB 인스턴스를 사용할 수 없을 때 모든 호스트 이름을 하드코딩하거나, 연결을 다시 라우팅하기 위해 자체 로직을 작성할 필요가 없습니다.

라이터 엔드포인트는 읽기 및 쓰기 작업을 모두 지원하는 DB 클러스터의 라이터 DB 인스턴스에 연결됩니다. 리더 엔드포인트는 읽기 작업만 지원하는 두 리더 DB 인스턴스 중 하나에 연결됩니다.

엔드포인트를 사용하면 사용 사례에 따라 각 연결을 적절한 DB 인스턴스 또는 DB 인스턴스 그룹에 매핑할 수 있습니다. 예를 들어, DDL 및 DML 문을 수행하기 위해 라이터 DB 인스턴스인 어떤 DB 인스턴스에나 연결할 수 있습니다. 쿼리를 수행하려는 경우 리더 엔드포인트에 연결하면 다중 AZ DB 클러스터가 자동으로 리더 DB 인스턴스 간에 연결을 관리합니다. 진단 또는 튜닝의 경우 특정 DB 인스턴스 엔드포인트에 연결하여 특정 DB 인스턴스에 대한 세부 정보를 검토할 수 있습니다.

DB 인스턴스 연결에 대한 정보는 Amazon RDS DB 인스턴스에 연결 섹션을 참조하세요.

다중 AZ DB 클러스터 엔드포인트

엔드포인트는 호스트 주소를 포함하는 고유 식별자로 표시됩니다. 다중 AZ DB 클러스터에서 제공하는 엔드포인트 유형은 다음과 같습니다.

클러스터 엔드포인트

다중 AZ DB 클러스터의 클러스터 엔드포인트(또는 라이터 엔드포인트)는 해당 DB 클러스터의 현재 라이터 DB 인스턴스에 연결됩니다. 이 엔드포인트는 DDL 및 DML 문과 같은 쓰기 작업을 수행할 수 있는 유일한 엔드포인트로, 읽기 작업도 수행할 수 있습니다.

각 다중 AZ DB 클러스터에는 클러스터 엔드포인트와 라이터 DB 인스턴스가 하나씩 있습니다.

삽입, 업데이트, 삭제 및 DDL 변경을 비롯하여 DB 클러스터의 모든 쓰기 작업에 대해 클러스터 엔드포인트를 사용합니다. 또한 쿼리와 같은 읽기 작업에도 클러스터 엔드포인트를 사용할 수 있습니다.

DB 클러스터의 현재 라이터 DB 인스턴스에 장애가 발생하면 다중 AZ DB 클러스터가 자동으로 새 라이터 DB 인스턴스로 장애 조치를 수행합니다. 장애 조치가 이루어지는 동안에도 DB 클러스터가 새로운 라이터 DB 인스턴스의 클러스터 엔드포인트 연결 요청을 처리하여 서비스 중단 시간을 최소화합니다.

다음은 다중 AZ DB 클러스터의 클러스터 엔드포인트를 보여주는 예제입니다.

mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com

리더 엔드포인트

다중 AZ DB 클러스터의 리더 엔드포인트는 DB 클러스터에 대한 읽기 전용 연결을 위한 지원을 제공합니다. SELECT 쿼리와 같은 읽기 작업에 리더 엔드포인트를 사용합니다. 리더 DB 인스턴스에서 이러한 문을 처리하여 이 엔드포인트에서 라이터 DB 인스턴스의 오버헤드를 줄입니다. 또한, 클러스터가 동시 SELECT 쿼리를 처리할 수 있는 용량을 확장할 수 있습니다. 각 다중 AZ DB 클러스터에는 리더 엔드포인트가 하나씩 있습니다.

리더 엔드포인트는 리더 DB 인스턴스 중 하나로 각 연결 요청을 전송합니다. 리더 엔드포인트를 세션에 사용하는 경우 해당 세션에서 SELECT와 같은 읽기 전용 문만 수행할 수 있습니다.

다음은 다중 AZ DB 클러스터의 리더 엔드포인트를 보여주는 예제입니다. 리더 엔드포인트의 읽기 전용 인텐트는 클러스터 엔드포인트 이름 내에서 -ro로 표시됩니다.

mydbcluster.cluster-ro-123456789012.us-east-1.rds.amazonaws.com

인스턴스 엔드포인트

인스턴스 엔드포인트는 다중 AZ DB 클러스터에 있는 특정 DB 인스턴스에 연결됩니다. DB 클러스터의 DB 인스턴스에는 각각 고유한 인스턴스 엔드포인트가 있습니다. 따라서 DB 클러스터의 현재 라이터 DB 인스턴스에 대해 인스턴스 엔드포인트가 하나씩 있고 DB 클러스터의 각 리더 DB 인스턴스에 대해 인스턴스 엔드포인트가 하나씩 있습니다.

인스턴스 엔드포인트에서는 DB 클러스터에 대한 연결을 직접 제어할 수 있습니다. 이 제어 기능은 클러스터 엔드포인트 또는 리더 엔드포인트를 사용하는 것이 적절하지 않을 수 있는 상황에서 문제를 해결하는 데 도움이 될 수 있습니다. 예를 들어 클라이언트 애플리케이션에서 워크로드 유형에 따라 더욱 세분화된 로드 밸런싱이 필요할 수 있습니다. 이 경우, 여러 클라이언트가 DB 클러스터의 다른 리더 DB 인스턴스에 연결하여 읽기 워크로드를 분산하도록 구성할 수 있습니다.

다음은 다중 AZ DB 클러스터의 DB 인스턴스에 대한 인스턴스 엔드포인트를 보여주는 예제입니다.

mydbinstance.123456789012.us-east-1.rds.amazonaws.com

다중 AZ DB 클러스터의 엔드포인트 보기

AWS Management Console에서 각 다중 AZ DB 클러스터의 세부 정보 페이지에 클러스터 엔드포인트와 리더 엔드포인트가 표시됩니다. 각 DB 인스턴스의 세부 정보 페이지에서 인스턴스 엔드포인트를 확인할 수 있습니다.

AWS CLI을 사용하여 describe-db-clusters 명령의 출력에서 라이터 및 리더 엔드포인트를 확인할 수 있습니다. 예를 들어, 다음 명령은 현재 AWS 리전의 모든 클러스터에 대한 엔드포인트 속성을 보여줍니다.

aws rds describe-db-cluster-endpoints

Amazon RDS API로 DescribeDBClusterEndpoints 작업을 호출하여 엔드포인트를 검색합니다. 출력에는 Amazon Aurora DB 클러스터 엔드포인트(있는 경우)도 표시됩니다.

클러스터 엔드포인트 사용

각 다중 AZ 클러스터에는 기본 제공되는 단일 클러스터 엔드포인트가 있으며, Amazon RDS에서 이 엔드포인트의 이름과 기타 속성을 관리합니다. 이 종류의 엔드포인트는 생성, 삭제 또는 수정할 수 없습니다.

DB 클러스터를 관리하거나, 추출, 변환, 로드(ETL) 작업을 수행하거나, 애플리케이션을 개발 및 테스트할 때 클러스터 엔드포인트를 사용하게 됩니다. 클러스터 엔드포인트는 클러스터의 라이터 DB 인스턴스에 연결됩니다. 라이터 DB 인스턴스는 테이블 및 인덱스를 생성하고, INSERT 문을 실행하며, 기타 DDL 및 DML 작업을 수행할 수 있는 유일한 DB 인스턴스입니다.

장애 조치 메커니즘에서 새 DB 인스턴스가 클러스터의 라이터 DB 인스턴스가 되도록 승격하면 클러스터 엔드포인트와 연결되는 물리적 IP 주소가 변경됩니다. 어떤 형식의 연결 풀링이나 기타 멀티플렉싱을 사용하는 경우, 캐싱된 DNS 정보의 TTL(Time to Live)을 플러시하거나 줄이도록 준비합니다. 이렇게 하면 사용할 수 없게 되었거나 장애 조치 후 이제 읽기 전용인 DB 인스턴스에 읽기/쓰기 연결 설정을 시도하지 않아도 됩니다.

리더 엔드포인트 사용

다중 AZ DB 클러스터의 읽기 전용 연결에 리더 엔드포인트를 사용합니다. 이 엔드포인트는 DB 클러스터가 쿼리 집약적인 워크로드를 처리할 수 있도록 도와줍니다. 리더 엔드포인트는 클러스터에서 보고 또는 기타 읽기 전용 작업을 수행하는 애플리케이션에 제공하는 엔드포인트입니다. 리더 엔드포인트는 다중 AZ DB 클러스터에서 사용 가능한 리더 DB 인스턴스에 대한 연결을 전송합니다.

각 다중 AZ 클러스터에는 기본 제공되는 단일 리더 엔드포인트가 있으며, Amazon RDS에서 이 엔드포인트의 이름과 기타 속성을 관리합니다. 이 종류의 엔드포인트는 생성, 삭제 또는 수정할 수 없습니다.

인스턴스 엔드포인트 사용

다중 AZ DB 클러스터의 각 DB 인스턴스에는 Amazon RDS에서 관리하는 고유한 기본 제공 인스턴스 엔드포인트가 있습니다. 이 종류의 엔드포인트는 생성, 삭제 또는 수정할 수 없습니다. 다중 AZ DB 클러스터에서는 일반적으로 인스턴스 엔드포인트보다 라이터 및 리더 엔드포인트를 더 자주 사용합니다.

일상적인 작업에서 인스턴스 엔드포인트를 사용하는 주요 방법은 다중 AZ DB 클러스터의 특정 DB 인스턴스 하나에 영향을 주는 용량 또는 성능 문제를 진단하는 것입니다. 특정 DB 인스턴스에 연결되어 있는 동안 해당 인스턴스의 상태 변수, 지표 등을 검토할 수 있습니다. 이렇게 하면 클러스터의 다른 인스턴스에 일어난 일과 별개로 해당 DB 인스턴스에 일어난 일을 확인하는 데 도움이 됩니다.

다중 AZ DB 엔드포인트가 고가용성으로 작동하는 방법

고가용성이 중요한 다중 AZ DB 클러스터의 경우 라이터 엔드포인트를 읽기/쓰기 또는 범용 연결에 사용하고 리더 엔드포인트를 읽기 전용 연결에 사용합니다. 라이터 및 리더 엔드포인트는 인스턴스 엔드포인트보다 DB 인스턴스 장애 조치를 더 잘 관리합니다. 인스턴스 엔드포인트와 달리, 라이터 및 리더 엔드포인트는 클러스터의 DB 인스턴스를 사용할 수 없게 되면 연결된 DB 인스턴스를 자동으로 변경합니다.

DB 클러스터의 기본 DB 인스턴스에 장애가 발생하면 Amazon RDS가 자동으로 새로운 라이터 DB 인스턴스로 장애 조치하는데, 리더 DB 인스턴스를 새로운 라이터 DB 인스턴스로 승격하여 이를 수행합니다. 장애 조치가 발생하면 라이터 엔드포인트를 사용하여 새롭게 승격된 라이터 DB 인스턴스에 다시 연결할 수 있습니다. 또는 리더 엔드포인트를 사용하여 DB 클러스터에서 리더 DB 인스턴스 중 하나에 다시 연결할 수 있습니다. 장애 조치 중에 리더 DB 인스턴스가 새로운 라이터 DB 인스턴스로 승격된 후 리더 엔드포인트가 잠시 동안 DB 클러스터의 새 라이터 DB 인스턴스에 직접 연결할 수 있습니다. 인스턴스 엔드포인트 연결을 관리하는 애플리케이션 로직을 직접 설계하면 DB 클러스터에서 사용 가능한 DB 인스턴스 집합을 수동으로 또는 프로그래밍 방식으로 검색할 수 있습니다.

AWS Management Console을 사용하여 다중 AZ DB 클러스터 관리

콘솔을 사용하여 다중 AZ DB 클러스터를 관리할 수 있습니다.

콘솔을 사용하여 다중 AZ DB 클러스터를 관리하는 방법

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

  2. 탐색 창에서 데이터베이스(Databases)를 선택한 다음 관리하려는 다중 AZ DB 클러스터를 선택합니다.

다음 이미지는 콘솔의 다중 AZ DB 클러스터를 보여줍니다.


				AWS Management Console의 다중 AZ DB 클러스터

작업(Actions) 메뉴에서 사용할 수 있는 작업은 다중 AZ DB 클러스터를 선택했는지 아니면 클러스터의 DB 인스턴스를 선택했는지에 따라 달라집니다.

다중 AZ DB 클러스터를 선택하여 클러스터 세부 정보를 보고 클러스터 수준에서 작업을 수행합니다.


				AWS Management Console에서의 다중 AZ DB 클러스터 작업

다중 AZ DB 클러스터에서 DB 인스턴스를 선택하여 DB 인스턴스 세부 정보를 보고 DB 인스턴스 수준에서 작업을 수행합니다.


				AWS Management Console에서 다중 AZ DB 클러스터의 DB 인스턴스 작업

다중 AZ DB 클러스터용 파라미터 그룹 작업

다중 AZ DB 클러스터에서 DB 클러스터 파라미터 그룹은 다중 AZ DB 클러스터의 모든 DB 인스턴스에 적용되는 엔진 구성 값에 대한 컨테이너 역할을 합니다.

다중 AZ DB 클러스터에서 DB 파라미터 그룹은 DB 엔진 및 DB 엔진 버전에 대한 기본 DB 파라미터 그룹으로 설정됩니다. DB 클러스터 파라미터 그룹의 설정은 클러스터의 모든 DB 인스턴스에 사용됩니다.

파라미터 그룹에 대한 자세한 내용은 파라미터 그룹 작업 단원을 참조하세요.

복제본 지연 시간 및 다중 AZ DB 클러스터

복제본 지연 시간은 리더 DB 인스턴스에서 가장 최근에 적용된 트랜잭션과 라이터 DB 인스턴스에서 가장 최근 트랜잭션 사이의 시간 차이입니다. Amazon CloudWatch 지표 ReplicaLag는 이 시차를 나타냅니다. CloudWatch 지표에 대한 자세한 내용은 Amazon CloudWatch로 Amazon RDS 지표 모니터링 섹션을 참조하세요.

다중 AZ DB 클러스터는 높은 쓰기 성능을 허용하지만 엔진 기반 복제의 특성으로 인해 복제본 지연이 계속 발생할 수 있습니다. 모든 장애 조치는 새 라이터 DB 인스턴스를 승격하기 전에 먼저 복제본 지연을 해결해야 하므로 이 복제본 지연을 모니터링하고 관리하는 것이 고려 사항입니다.

RDS for MySQL 다중 AZ DB 클러스터용 장애 조치 시간은 나머지 리더 DB 인스턴스의 복제본 지연에 따라 달라집니다. 두 리더 DB 인스턴스는 모두 적용되지 않은 트랜잭션을 적용해야 그 중 하나가 새 라이터 DB 인스턴스로 승격됩니다.

RDS for PostgreSQL 다중 AZ DB 클러스터용 장애 조치 시간은 가장 낮은 나머지 리더 DB 인스턴스의 복제본 지연에 따라 달라집니다. 가장 낮은 복제본 지연을 가진 리더 DB 인스턴스는 모두 적용되지 않은 트랜잭션을 적용해야 새 라이터 DB 인스턴스로 승격됩니다.

복제본 지연이 설정된 시간을 초과할 때 CloudWatch 경보를 생성하는 방법을 보여주는 자습서는 자습서: 다중 AZ DB 클러스터 복제본 지연에 대한 Amazon CloudWatch 경보 생성 섹션을 참조하세요.

복제본 지연의 일반적인 원인

일반적으로 복제본 지연은 쓰기 워크로드가 너무 높아 리더 DB 인스턴스가 트랜잭션을 효율적으로 적용할 수 없을 때 발생합니다. 다양한 워크로드로 인해 일시적 또는 지속적인 복제본 지연이 발생할 수 있습니다. 다음은 몇 가지 일반적인 원인의 예입니다.

  • 라이터 DB 인스턴스의 높은 쓰기 동시성 또는 대량 일괄 업데이트로 인해 리더 DB 인스턴스의 적용 프로세스가 뒤쳐집니다.

  • 하나 이상의 리더 DB 인스턴스의 리소스를 사용하는 대량 읽기 워크로드입니다. 느리거나 큰 쿼리를 실행하면 적용 프로세스에 영향이 있고 복제본 지연이 발생할 수 있습니다.

  • 데이터베이스가 커밋 순서를 유지해야 하기 때문에 대량의 데이터 또는 DDL 문을 수정하는 트랜잭션으로 인해 복제본 지연 시간이 일시적으로 증가하는 경우가 있습니다.

복제본 지연 완화

RDS for MySQL 및 RDS for PostgreSQL용 다중 AZ DB 클러스터의 경우 라이터 DB 인스턴스의 로드를 줄여 복제본 지연을 완화할 수 있습니다. 흐름 제어를 사용하여 복제본 지연을 줄일 수도 있습니다. 흐름 제어는 라이터 DB 인스턴스에서 쓰기를 제한하여 작동하므로 복제본 지연 시간이 계속해서 무제한으로 증가하지 않도록 합니다. 쓰기 제한은 트랜잭션 끝에 지연을 추가하여 수행되며, 이로 인해 라이터 DB 인스턴스의 쓰기 처리량이 감소합니다. 흐름 제어가 지연 제거를 보장하지는 않지만 많은 워크로드에서 전반적인 지연을 줄이는 데 도움이 될 수 있습니다. 다음 섹션에서는 RDS for MySQL 및 RDS PostgreSQL로 흐름 제어를 사용하는 방법을 제공합니다.

RDS for MySQL에 대한 흐름 제어를 통해 복제본 지연 완화

RDS for MySQL 다중 AZ DB 클러스터를 사용하는 경우 동적 파라미터 rpl_semi_sync_master_target_apply_lag을 사용하면 흐름 제어가 기본적으로 활성화됩니다. 이 파라미터는 복제본 지연에 대해 원하는 상한을 지정합니다. 복제본 지연이 구성된 제한에 가까워지면 흐름 제어는 라이터 DB 인스턴스의 쓰기 트랜잭션을 제한하여 지정된 값보다 낮은 복제본 지연을 포함하려고 시도합니다. 경우에 따라 복제본 지연이 지정된 제한을 초과할 수 있습니다. 기본적으로 이 파라미터는 120초로 설정됩니다. 흐름 제어를 비활성화하려면 이 파라미터를 최대 값 86400초(하루)로 설정합니다.

흐름 제어에 의해 주입된 현재 지연을 보려면 다음 쿼리를 실행하여 Rpl_semi_sync_master_flow_control_current_delay 파라미터를 표시하세요.

SHOW GLOBAL STATUS like '%flow_control%';

출력 결과는 다음과 비슷합니다.

+-------------------------------------------------+-------+ | Variable_name | Value | +-------------------------------------------------+-------+ | Rpl_semi_sync_master_flow_control_current_delay | 2010 | +-------------------------------------------------+-------+ 1 row in set (0.00 sec)
참고

지연은 마이크로초 단위로 표시됩니다.

RDS for MySQL Multi-AZ DB 클러스터에서 성능 개선 도우미를 활성화하면 흐름 제어에 의해 쿼리가 지연되었음을 나타내는 해당 SQL 문 대기 이벤트를 모니터링할 수 있습니다. 흐름 제어에 의해 지연이 발생했을 때 성능 개선 도우미 대시보드의 해당 SQL 문에서 /wait/synch/cond/semisync/semi_sync_flow_control_delay_cond 대기 이벤트를 볼 수 있습니다. 이러한 지표를 보려면 성능 스키마가 켜져 있는지 확인합니다. 성능 개선 도우미에 대한 자세한 내용은 성능 개선 도우미를 통한 Amazon RDS 모니터링 섹션을 참조하세요.

RDS for PostgreSQL에 대한 흐름 제어를 통해 복제본 지연 완화

RDS for PostgreSQL용 다중 AZ DB 클러스터를 사용하면 흐름 제어가 확장으로 배포됩니다. 이는 DB 클러스터의 모든 DB 인스턴스에 대해 백그라운드 작업자를 켭니다. 기본적으로 리더 DB 인스턴스의 백그라운드 작업자는 현재 복제본 지연을 라이터 DB 인스턴스의 백그라운드 작업자에게 알립니다. 리더 DB 인스턴스에서 지연이 2분을 초과하면 라이터 DB 인스턴스의 백그라운드 작업자가 트랜잭션 종료 시 지연을 추가합니다. 지연 임계값을 제어하려면 flow_control.target_standby_apply_lag 파라미터를 사용합니다.

흐름 제어가 PostgreSQL 프로세스를 제한하면 pg_stat_activity 및 성능 개선 도우미의 Extension 대기 이벤트가 이를 나타냅니다. 함수 get_flow_control_stats는 현재 추가되고 있는 지연 시간에 대한 세부 정보를 표시합니다.

흐름 제어는 짧지만 동시 트랜잭션이 많은 대부분의 온라인 트랜잭션 처리(OLTP) 워크로드에 이상적입니다. 배치 작업과 같은 장기 실행 트랜잭션으로 인해 지연이 발생하는 경우 흐름 제어는 큰 이점을 제공하지 않습니다.

preload_shared_libraries에서 확장을 제거하고 DB 인스턴스를 재부팅하여 흐름 제어를 해제할 수 있습니다.

다중 AZ DB 클러스터의 장애 조치 프로세스

다중 AZ DB 클러스터의 라이터 DB 인스턴스에 계획되거나 계획되지 않은 중단이 발생하면 Amazon RDS는 자동으로 다른 가용 영역에 있는 리더 DB 인스턴스로 장애 조치합니다. 장애 조치가 완료되는 데 걸리는 시간은 라이터 DB 인스턴스를 사용할 수 없게 된 데이터베이스 활동 및 기타 조건에 따라 달라집니다. 장애 조치에 소요되는 시간은 일반적으로 35초 아래입니다. 장애 조치는 두 리더 DB 인스턴스에 모두 장애가 발생한 라이터의 처리되지 않은 트랜잭션이 적용되면 완료됩니다. 장애 조치가 완료되면 RDS 콘솔에 새 가용 영역이 반영되는 데 시간이 더 걸릴 수 있습니다.

자동 장애 조치

Amazon RDS는 자동으로 장애 조치를 취하여 관리자의 개입 없이 데이터베이스 작업을 신속하게 재개할 수 있도록 합니다. 장애 조치를 수행하려면 라이터 DB 인스턴스가 자동으로 리더 DB 인스턴스로 전환합니다.

다중 AZ DB 클러스터 수동 장애 조치

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 다중 AZ DB 클러스터를 수동으로 장애 조치할 수 있습니다.

다중 AZ DB 클러스터를 수동으로 장애 조치하는 방법

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

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

  3. 장애 조치하려는 다중 AZ DB 클러스터를 선택합니다.

  4. 작업(Actions)으로 장애 조치(Failover)를 선택합니다.

    DB 클러스터 장애 조치(Failover DB Cluster) 페이지가 표시됩니다.

  5. 장애 조치(Failover)를 선택하여 수동 장애 조치를 확인합니다.

다중 AZ DB 클러스터를 수동으로 장애 조치하려면 AWS CLI 명령 failover-db-cluster를 사용하세요.

aws rds failover-db-cluster --db-cluster-identifier mymultiazdbcluster

다중 AZ DB 클러스터를 수동으로 장애 조치하려면 Amazon RDS API FailoverDBCluster를 호출하고 DBClusterIdentifier를 지정하면 됩니다.

다중 AZ DB 클러스터가 장애 조치되었는지 여부 확인

다음 단계에 따라 다중 AZ DB 클러스터가 장애 조치를 수행했는지 확인할 수 있습니다.

  • 장애 조치가 시작되었음을 이메일 또는 SMS로 사용자에게 알리도록 DB 이벤트 구독을 설정합니다. 이벤트에 대한 자세한 내용은 Amazon RDS 이벤트 알림 작업 단원을 참조하세요.

  • Amazon RDS 콘솔 또는 API 작업을 사용하여 DB 이벤트를 확인합니다.

  • Amazon RDS 콘솔, AWS CLI 및 RDS API를 사용하여 다중 AZ DB 클러스터의 현재 상태를 확인합니다.

장애 조치, 복구 시간 절감 및 기타 Amazon RDS 모범 사례에 대한 자세한 내용은 Amazon RDS의 모범 사례 단원을 참조하세요.

DNS 이름 조회를 위한 JVM TTL 설정

장애 조치 메커니즘은 리더 DB 인스턴스로 연결되도록 DB 인스턴스의 도메인 이름 시스템(DNS) 레코드를 자동으로 변경합니다. 그 결과 DB 인스턴스의 기존 연결을 모두 재설정해야 합니다. Java 가상 머신(JVM) 환경에서 Java DNS 캐싱 메커니즘이 작동하는 방식 때문에 JVM 설정을 다시 구성해야 할 수 있습니다.

JVM은 DNS 이름 조회를 캐시합니다. JVM은 호스트 이름을 IP 주소로 확인하는 경우 유지 시간(TTL)이라고 하는 지정된 기간 동안 IP 주소를 캐싱합니다.

AWS 리소스는 간헐적으로 변경되는 DNS 이름 항목을 사용하므로 TTL 값을 60초 이하로 하여 JVM을 구성하는 것이 좋습니다. 이렇게 하면 리소스의 IP 주소가 변경될 때 애플리케이션이 DNS를 다시 쿼리하여 리소스의 새 IP 주소를 수신하고 사용할 수 있습니다.

일부 Java 구성에서는 JVM이 재시작될 때까지 DNS 항목을 새로 고치지 않도록 JVM 기본 TTL이 설정됩니다. 따라서 애플리케이션이 여전히 실행되는 동안 AWS 리소스의 IP 주소가 변경되는 경우 JVM을 수동으로 재시작하여 캐시된 IP 정보가 새로 고쳐질 때까지는 해당 리소스를 사용할 수 없습니다. 이 경우 캐시된 IP 정보를 정기적으로 새로 고치도록 JVM의 TTL을 설정하는 것이 중요합니다.

참고

기본 TTL은 JVM 버전과 보안 관리자 설치 여부에 따라 다를 수 있습니다. 대부분의 JVM은 60초 미만의 기본 TTL을 제공합니다. 이러한 JVM을 사용 중이며 보안 관리자는 사용하지 않는 경우 이 주제의 나머지 내용을 무시해도 좋습니다. Oracle의 보안 관리자에 대한 자세한 내용은 Oracle 설명서의 The Security Manager를 참조하십시오.

JVM의 TTL을 수정하려면 networkaddress.cache.ttl 속성 값을 설정합니다. 필요에 따라 다음 방법 중 하나를 사용합니다.

  • JVM을 사용하는 모든 애플리케이션에 대해 전역적으로 속성 값을 설정하려면 networkaddress.cache.ttl 파일에서 $JAVA_HOME/jre/lib/security/java.security을 설정합니다.

    networkaddress.cache.ttl=60
  • 애플리케이션에만 로컬로 속성을 설정하려면 네트워크 연결이 설정되기 전에 애플리케이션의 초기화 코드에서 networkaddress.cache.ttl을 설정합니다.

    java.security.Security.setProperty("networkaddress.cache.ttl" , "60");

다중 AZ DB 클러스터의 제한

다중 AZ DB 클러스터에는 다음과 같은 제한이 적용됩니다.

  • 다중 AZ DB 클러스터는 프로비저닝된 IOPS 스토리지만 지원합니다.

  • 단일 AZ DB 인스턴스 배포 또는 다중 AZ DB 인스턴스 배포를 다중 AZ DB 클러스터로 변경할 수 없습니다. 대신에 단일 AZ DB 인스턴스 배포 또는 다중 AZ DB 인스턴스 배포의 스냅샷을 다중 AZ DB 클러스터로 복원할 수는 있습니다.

  • 다중 AZ DB 클러스터 스냅샷을 다중 AZ DB 인스턴스 배포 또는 단일 AZ 배포로 복원할 수 없습니다.

  • 다중 AZ DB 클러스터는 모든 수정이 DB 클러스터 수준에서 수행되므로 DB 인스턴스 수준에서 수정을 지원하지 않습니다.

  • 다중 AZ DB 클러스터는 다음 기능을 지원하지 않습니다.

    • Amazon RDS 프록시

    • AWS CloudFormation

    • IPv6 연결 지원(듀얼 스택 모드)

    • Amazon S3 버킷으로 다중 AZ DB 클러스터 스냅샷 데이터 내보내기

    • IAM DB 인증

    • Kerberos 인증

    • 포트 수정

      또는 다중 AZ DB 클러스터를 특정 시점으로 복원하고 다른 포트 지정 가능

    • 옵션 그룹 수

    • 읽기 전용 복제본

    • 예약 DB 인스턴스

    • Amazon S3 버킷에서 다중 AZ DB 클러스터 스냅샷 복원

    • 할당된 최대 스토리지를 설정하여 스토리지 자동 크기 조정

      또는 수동으로 스토리지 크기 조정 가능

    • DB 클러스터 중지 및 시작

    • 다중 AZ DB 클러스터의 스냅샷 복사

    • 암호화되지 않은 다중 AZ DB 클러스터 암호화

  • MySQL용 다중 AZ DB 클러스터용 RDS는 외부 대상 데이터베이스로의 복제를 지원하지 않습니다.

  • RDS for MySQL 다중 AZ DB 클러스터는 다음 시스템 저장 프로시저만 지원합니다.

    • mysql.rds_rotate_general_log

    • mysql.rds_rotate_slow_log

    • mysql.rds_show_configuration

    RDS for MySQL Multi-AZ DB 클러스터는 다른 저장 프로시저를 지원하지 않습니다. 이러한 프로시저 사용에 대한 자세한 내용은 Amazon RDS SQL의 MySQL 참조 섹션을 참조하세요.

  • PostgreSQL 다중 AZ DB 클러스터용 RDS는 aws_s3, pg_transport, pglogical과 같은 PostgreSQL 확장을 지원하지 않습니다.

  • PostgreSQL 다중 AZ DB 클러스터용 RDS는 아웃바운드 네트워크 액세스에 사용자 지정 DNS 서버 사용을 지원하지 않습니다.

  • PostgreSQL 다중 AZ DB 클러스터용 RDS는 논리적 복제를 지원하지 않습니다.