AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

Amazon RDS 인스턴스를 가용 영역 밖으로 이동하려면 어떻게 해야 합니까?

4분 분량
0

Amazon Relational Database Service(Amazon RDS) 또는 Amazon Aurora 인스턴스를 가용 영역 밖으로 이동하려고 합니다. Amazon RDS DB 서브넷 그룹에 있는 서브넷도 삭제하려고 합니다.

간략한 설명

Amazon RDS DB 인스턴스를 시작하려면 DB 서브넷 그룹에 2개 이상의 서브넷이 있어야 합니다. RDS 인스턴스는 연결된 DB 서브넷 그룹 내의 서브넷에서만 시작할 수 있습니다. 서브넷은 동일한 AWS 리전의 서로 다른 가용 영역에 있어야 합니다. 중단을 최소화하려면 3개 이상의 가용 영역에 서브넷을 두는 것이 좋습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

가용 영역 결정

가용 영역 ID

가용 영역 ID를 사용하여 한 AWS 계정의 리소스 위치를 다른 계정의 리소스와 비교하여 확인할 수 있습니다. 예를 들어 use1-az2에 위치한 계정에서 실행되는Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있습니다. 이러한 EC2 인스턴스는 use1-az3에 있는 계정에서 실행되는 RDS 데이터베이스와 통신합니다. 교차 AZ 트래픽으로 인한 추가 비용과 지연 시간을 피하려면 동일한 가용 영역에서 두 인스턴스를 모두 실행하십시오. 정전이 발생하는 경우 가동 중지 시간을 줄이려면 다중 AZ 배포를 사용하십시오.

계정의 가용 영역 매핑을 확인하고 가용 영역 이름을 가져오려면 describe-availability-zones 명령을 실행합니다.

aws ec2 describe-availability-zones --zone-ids ZONE ID --region REGION

참고: ZONE ID를 가용 영역의 ID로 바꾸고 REGION을 해당 리전으로 바꾸십시오.

이동하려는 RDS 인스턴스 식별

이동할 RDS 인스턴스를 식별하려면 AWS Config에서 가용 영역 이름을 사용하거나, AWS CLI에서 list 명령을 실행합니다.

AWS Config

AWS Config를 켭니다. 그런 다음, 다음 명령을 실행하여 가용 영역에서 보조 노드를 실행하거나 보조 노드가 있는 DB 인스턴스 목록을 반환합니다.

SELECT
  resourceId,
  resourceName,
  accountId,
  awsRegion,
  configuration.availabilityZone,
  configuration.secondaryAvailabilityZone
WHERE
  resourceType = 'AWS::RDS::DBInstance'
  AND (
    configuration.availabilityZone = 'us-east-1e'
    OR configuration.secondaryAvailabilityZone = 'us-east-1e'
  )

참고: 이전 쿼리에서 가용 영역은 계정의 매핑에 있는 영역 이름과 일치해야 합니다.

AWS CLI

describe-db-instances 명령을 실행하여 현재 가용 영역에 배포된 RDS DB 인스턴스를 나열합니다.

aws rds describe-db-instances \
    --query 'DBInstances[?Engine!=`aurora-postgresql`&&Engine!=`aurora-mysql`&&(AvailabilityZone==`AVAILABILITY ZONE` || SecondaryAvailabilityZone==`AVAILABILITY ZONE`)].{"0-Engine":Engine, "1-DBInstanceIdentifier":DBInstanceIdentifier, "2-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "3-AvailabilityZone":AvailabilityZone, "4-SecondaryAvailabilityZone":SecondaryAvailabilityZone} | sort_by([], &"1-DBInstanceIdentifier")' \
    --region us-east-1

describe-db-instances 명령을 실행하여 현재 가용 영역에 배포된 Aurora DB 인스턴스를 나열합니다.

aws rds describe-db-instances \
    --query 'DBInstances[?Engine==`aurora-postgresql`&&Engine==`aurora-mysql`&&AvailabilityZone==`AVAILABILITY ZONE`].{"0-Engine":Engine, "1-DBClusterIdentifier":DBClusterIdentifier, "2-DBInstanceIdentifier":DBInstanceIdentifier, "3-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "4-AvailabilityZone":AvailabilityZone} | sort_by([], &"1-DBClusterIdentifier")'  \
    --region us-east-1

인스턴스를 가용 영역 밖으로 이동

RDS DB 인스턴스

참고: 단일 AZ 배포의 가용 영역은 변경할 수 없습니다.

RDS 인스턴스를 가용 영역 밖으로 이동하려면 다음 단계를 완료하십시오.

  1. RDS 인스턴스가 단일 AZ 배포인 경우 DB 인스턴스를 다중 AZ 배포로 수정합니다. 다중 AZ 배포는 다른 서브넷을 사용하는 다른 가용 영역에 대기 DB 인스턴스를 생성합니다.
  2. 장애 조치로 DB 인스턴스를 재부팅합니다. 대기 DB 인스턴스는 기본 DB 인스턴스가 됩니다.
    참고: 장애 조치 후 새 가용 영역에 DB 인스턴스가 표시되는지 확인하십시오.
  3. DB 인스턴스를 단일 AZ DB 인스턴스가 되도록 수정합니다. 그러면 삭제하려는 서브넷에서 단일 AZ DB 인스턴스가 제거됩니다.

Aurora DB 인스턴스

Aurora 인스턴스를 가용 영역 밖으로 이동하려면 다음 단계를 완료하십시오.

  1. Aurora DB 인스턴스가 단일 AZ 배포인 경우 Aurora DB 클러스터에 새 리더 인스턴스를 추가합니다. 새 리더 인스턴스를 생성할 경우 DB 서브넷 그룹의 가용 영역 중 하나를 선택하십시오. 
  2. DB 클러스터의 장애 조치를 강제로 실행하여 새 리더 인스턴스를 새 라이터 DB 인스턴스로 승격시킵니다.
    참고: 대상 리더 인스턴스가 두 개 이상인 경우 하나를 지정하지 않으면 Amazon RDS가 가장 높은 프로모션 티어로 리더를 승격시킵니다. 우선순위 범위는 0(가장 높은 우선순위)에서 15(가장 낮은 우선순위)까지입니다. 자세한 내용은 Aurora DB 클러스터의 내결함성을 참조하십시오.
  3. 이전의 기본 DB 인스턴스를 삭제합니다.

DB 서브넷 그룹에서 서브넷 제거

참고: 서브넷에서 인스턴스를 시작한 경우 서브넷을 삭제할 수 없습니다. 삭제하려는 서브넷에서 DB 인스턴스를 시작한 경우에는 다음과 같은 오류 메시지가 나타납니다. "We're sorry, your request to modify DB subnet group has failed. Some of the subnets to be deleted are currently in use: "

DB 서브넷 그룹에서 서브넷을 제거하려면 다음 단계를 완료하십시오.

  1. Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 **Subnet groups(서브넷 그룹)**를 선택합니다.

  3. DB 인스턴스가 연결된 서브넷 그룹을 선택한 다음, **Edit(편집)**를 선택합니다.

  4. Edit DB subnet groups(DB 서브넷 그룹 편집) 페이지의 **Add subnets(서브넷 추가)**에서 삭제하려는 서브넷을 제거합니다.

  5. 아직 가용 영역에 있는 RDS DB 인스턴스를 확인하려면 describe-db-instances 명령을 실행합니다.

    aws rds describe-db-instances \
        --query 'DBInstances[?Engine!=`aurora-postgresql`&&Engine!=`aurora-mysql`&&(AvailabilityZone==`AVAILABILITY ZONE` || SecondaryAvailabilityZone==`AVAILABILITY ZONE`)].{"0-Engine":Engine, "1-DBInstanceIdentifier":DBInstanceIdentifier, "2-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "3-AvailabilityZone":AvailabilityZone, "4-SecondaryAvailabilityZone":SecondaryAvailabilityZone} | sort_by([], &"1-DBInstanceIdentifier")' \
        --region us-east-1

    아직 가용 영역에 있는 Aurora DB 인스턴스를 확인하려면 describe-db-instances 명령을 실행합니다.

    aws rds describe-db-instances \
        --query 'DBInstances[?Engine==`aurora-postgresql`&&Engine==`aurora-mysql`&&AvailabilityZone==`AVAILABILITY ZONE`].{"0-Engine":Engine, "1-DBClusterIdentifier":DBClusterIdentifier, "2-DBInstanceIdentifier":DBInstanceIdentifier, "3-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "4-AvailabilityZone":AvailabilityZone} | sort_by([], &"1-DBClusterIdentifier")'  \
        --region us-east-1
  6. **Save(저장)**를 선택합니다.

RDS 인스턴스를 원래 배포로 되돌리기

다중 AZ 배포로 시작한 경우 DB 인스턴스를 다중 AZ 배포로 수정합니다. 단일 AZ 배포로 시작한 경우에는 추가 단계가 필요하지 않습니다.

Aurora DB 클러스터에서 리더 인스턴스를 제거한 경우에는 클러스터에 새 리더 DB 인스턴스를 추가하십시오. 단일 AZ 배포로 시작한 경우에는 추가 단계가 필요하지 않습니다.

관련 정보

DB 서브넷 그룹을 사용한 작업

Amazon RDS DB 인스턴스를 동일한 VPC 내의 퍼블릭 서브넷에서 프라이빗 서브넷으로 이동하려면 어떻게 해야 합니까?

Amazon RDS DB 서브넷 그룹에 속한 서브넷을 삭제하려면 어떻게 해야 합니까?

AWS 공식
AWS 공식업데이트됨 일 년 전