Wie kann ich den Fehler „DBInstance xxxxxx konnte nicht stabilisiert werden“ beheben, wenn ich mithilfe von AWS CloudFormation eine RDS-DB-Instance aus Snapshots erstelle?

Lesedauer: 3 Minute
0

Wenn ich versuche, eine AWS::RDS::DBInstance-Ressource mit AWS CloudFormation zu erstellen, erhalte ich die folgende Fehlermeldung: „DBInstance xxxxxx konnte nicht stabilisiert werden.“

Kurzbeschreibung

Wenn Sie mithilfe von AWS CloudFormation eine Amazon Relational Database Service (Amazon RDS)-DB-Instance (AWS::RDS::DBInstance) aus einem vorhandenen RDS-DB-Snapshot erstellen, kann es aus den folgenden Gründen zu einer Fehlermeldung kommen:

  • Der Speichertyp im DB-Snapshot stimmt nicht mit dem Speichertyp in der DB-Instance überein.
  • Ihre DB-Snapshots enthalten ungültige Objekte.

Hinweis: Es gibt andere mögliche Ursachen für Probleme mit der Stabilisierung der RDS-DB-Instance. Die Schritte in der folgenden Behebeung gelten nur für Probleme, bei denen die RDS-DB-Instance aus Snapshots in AWS CloudFormation erstellt wird.

Behebung

Ordnen Sie die Speichertypen zwischen Ihrem DB-Snapshot und Ihrer DB-Instance zu

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, vergewissern Sie sich, dass Sie die neueste AWS CLI-Version verwenden.

  1. Überprüfen Sie den Speichertyp des DB-Snapshots mithilfe der Amazon RDS-Konsole oder der AWS-CLI-Befehle describe-db-snapshots. Zum Beispiel:
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",
            .......
        }
    ]
}

Hinweis: Der StorageType-Wert gp2 aus dem AWS-CLI-Befehl wird dem Wert General Purpose (SSD) in der Amazon RDS-Konsole zugeordnet.

  1. Stellen Sie in der AWS::RDS::DBInstance-Ressourcendefinition Ihrer AWS CloudFormation-JSON- oder YAML-Vorlage den Wert von StorageType so ein, dass er dem Speichertyp des Snapshots entspricht. In diesem Fall ist der Speichertyp auf gp2 festgelegt.

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
    ......

Hinweis: Wenn der Speichertyp nicht festgelegt ist, setzt AWS CloudFormation StorageType standardmäßig auf standard, was möglicherweise nicht dem Speichertyp des referenzierten Snapshots entspricht. Wenn die Speichertypen nicht übereinstimmen, kann es aufgrund des zusätzlichen Speicherkonvertierungsprozesses länger dauern, bis RDS die Datenbank erstellt hat. Außerdem könnte diese Diskrepanz bei größeren Datenbanken zu Timeout-Fehlern führen. Es hat sich bewährt, den Speichertyp in der Ressource AWS::RDS::DBInstance explizit zu definieren. Erwägen Sie außerdem, den Speichertyp so einzustellen, dass er dem Speichertyp des Snapshots entspricht.

  1. Starten Sie Ihren AWS CloudFormation-Stack, um die DB-Instance zu erstellen.

Stellen Sie sicher, dass Ihre DB-Snapshots keine ungültigen Objekte enthalten

Wenn der DB-Snapshot, der zum Erstellen Ihrer DB-Instance verwendet wird, ungültige Objekte enthält, führen Sie die folgenden Schritte aus:

  1. Identifizieren und korrigieren Sie die ungültigen Objekte in Ihren vorhandenen Datenbanken.

Die folgende Oracle-Datenbankabfrage gibt beispielsweise eine Liste ungültiger Objekte zurück:

select owner,object_name,object_type,status from dba_objects where status='INVALID'
  1. Erstellen Sie erneut Snapshots aus Ihren vorhandenen Datenbanken.

Wichtig: Nehmen Sie die DB-Snapshots erst erneut auf, nachdem Sie alle ungültigen Objekte repariert oder aus Ihren Datenbanken entfernt haben.

  1. Starten Sie Ihren AWS CloudFormation-Stack, um die DB-Instance mithilfe des vorhandenen DB-Snapshots zu erstellen.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren