如何解決使用 AWS CloudFormation 時,從快照建立 RDS 資料庫執行個體的「DBInstance xxxxxx 無法穩定」錯誤?

2 分的閱讀內容
0

當我嘗試使用 AWS CloudFormation 建立 AWS::RDS::DBInstance 資源時,收到以下錯誤: 「DBInstance xxxxxx 無法穩定。」

簡短描述

如果您使用 AWS CloudFormation 從現有 RDS 資料庫快照建立 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體 (AWS::RDS::DBInstance),則可能會因下列原因而收到錯誤:

  • 資料庫快照中的儲存類型與資料庫執行個體中的儲存類型不符。
  • 您的資料庫快照包含無效的物件。

**注意:**RDS 資料庫執行個體穩定問題還有其他可能的原因。以下解決方法中的步驟僅適用於在 AWS CloudFormation 中從快照建立 RDS 資料庫執行個體的問題。

解決方法

比對資料庫快照與資料庫執行個體之間的儲存類型

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本

1.    使用 Amazon RDS 主控台describe-db-snapshots AWS CLI 命令來驗證資料庫快照的儲存類型。例如:

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 堆疊以建立資料庫執行個體。

確認您的資料庫快照沒有無效物件

如果用來建立資料庫執行個體的資料庫快照包含無效物件,請完成下列步驟:

1.    識別並修正現有資料庫中的無效物件。

例如,下列 Oracle 資料庫查詢會傳回無效物件的清單:

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

2.    從現有資料庫重新建立快照

**重要事項:**只有在修正或移除資料庫中的所有無效物件後,才重新建立資料庫快照。

3.    啟動您的 AWS CloudFormation 堆疊,以使用現有的資料庫快照建立資料庫執行個體。


AWS 官方
AWS 官方已更新 3 年前