AWS CloudFormation을 사용하여 RDS DB 인스턴스를 생성할 때 발생하는 "DBInstance xxxxxx failed to stabilize" 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

AWS CloudFormation을 사용하여 AWS::RDS::DBInstance 리소스를 생성하려고 하면 "DBInstance xxxxxx failed to stabilize(DBInstance xxxxxx 안정화 실패)" 오류가 발생합니다.

간략한 설명

AWS CloudFormation을 사용하여 기존 RDS DB 스냅샷에서 Amazon Relational Database Service(Amazon RDS) DB 인스턴스(AWS::RDS::DBInstance)를 생성하면 다음과 같은 이유로 오류가 발생할 수 있습니다.

  • DB 스냅샷의 스토리지 유형이 DB 인스턴스의 스토리지 유형과 일치하지 않습니다.
  • DB 스냅샷에 유효하지 않은 객체가 포함되어 있습니다.

참고: RDS DB 인스턴스 안정화 문제에 다른 원인이 있을 수 있습니다. 다음 해결 방법 단계는 AWS CloudFormation의 스냅샷에서 RDS DB 인스턴스를 생성하는 문제에만 적용됩니다.

해결 방법

DB 스냅샷과 DB 인스턴스의 스토리지 유형이 일치하도록 설정

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

1.    Amazon RDS 콘솔 또는 describe-db-snapshots AWS CLI 명령을 사용하여 DB 스냅샷의 스토리지 유형을 확인합니다. 예를 들어 다음과 같습니다.

aws rds describe-db-snapshots --db-snapshot-identifier MyRDSSnapShot --region us-east-1
{
    "DBSnapshots": [
        {
            .......
            "AllocatedStorage": 20, 
            "Status": "available", 
            "PercentProgress": 100, 
            "DBSnapshotArn": "arn:aws:rds:us-east-1:1234567890:snapshot:MyRDSSnapShot", 
            "EngineVersion": "12.1.0.2.v7", 
            "ProcessorFeatures": [], 
            "OptionGroupName": "default:oracle-ee-12-1", 
            "SnapshotCreateTime": "2019-03-16T17:43:41Z", 
            "AvailabilityZone": "us-east-1f", 
            "StorageType": "gp2",
            .......
        }
    ]
}

참고: AWS CLI 명령에서 확인된 StorageTypegp2가 Amazon RDS 콘솔의 범용 (SSD) 값에 매핑됩니다.

2.    AWS CloudFormation JSON 또는 YAML 템플릿의 AWS::RDS::DBInstance 리소스 정의에서 StorageType 값을 설정하여 스냅샷의 스토리지 유형에 일치시킵니다. 이 경우 저장소 유형은 gp2로 설정됩니다.

JSON:

{
    "MySampleDB": {
        "Type": "AWS::RDS::DBInstance",
        "Properties": {
            "DBInstanceClass": "db.t2.small",
            "StorageType": "gp2",
            "Engine": "postgres",
            "EngineVersion": "9.5.12",
            ........
        }
    }
}

YAML:

MySampleDB:
  Type: 'AWS::RDS::DBInstance'
  Properties:
    DBInstanceClass: db.t2.small
    StorageType: gp2
    Engine: postgres
    EngineVersion: 9.5.12
    ......

참고: 스토리지 유형이 설정되지 않은 경우 AWS CloudFormation은 기본값으로StorageType표준으로 설정하며, 이 기본값은 참조 스냅샷의 스토리지 유형과 일치하지 않을 수 있습니다. 저장소 유형이 일치하지 않으면 추가 저장소 변환 프로세스로 인해 RDS의 데이터베이스 생성 시간이 더 길어질 수 있습니다. 또한 이러한 불일치로 큰 데이터베이스의 시간 초과 오류가 발생할 수 있습니다. AWS::RDS::DBInstance 리소스에서 스토리지 유형을 명시적으로 정의하는 것이 가장 좋습니다. 또한 스냅샷의 스토리지 유형과 일치하도록 스토리지 유형을 설정하는 것이 좋습니다.

3.    AWS CloudFormation 스택을 시작하여 DB 인스턴스를 생성합니다.

DB 스냅샷에 잘못된 객체가 없는지 확인

DB 인스턴스를 생성하는 데 사용되는 DB 스냅샷에 잘못된 객체가 포함되어 있는 경우 다음 단계를 수행합니다.

1.    기존 데이터베이스에서 잘못된 객체를 찾아 수정합니다.

예를 들어 다음 Oracle 데이터베이스 쿼리는 잘못된 객체의 목록을 반환합니다.

select owner,object_name,object_type,status from dba_objects where status='INVALID'

2.    기존 데이터베이스에서 스냅샷을 다시 생성합니다.

중요: DB 스냅샷은 데이터베이스에서 잘못된 객체를 모두 수정하거나 제거한 후에만 다시 생성하십시오.

3.    AWS CloudFormation 스택을 시작하여 기존 DB 스냅샷을 사용해 DB 인스턴스를 생성합니다.


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