Come posso risolvere l'errore "DBInstance xxxxxx non si è stabilizzata" quando creo un'istanza del DB RDS da istantanee utilizzando AWS CloudFormation?

3 minuti di lettura
0

Quando provo a creare una risorsa AWS::RDS::DBInstance con AWS CloudFormation, ricevo il seguente errore: "DBInstance xxxxxx non si è stabilizzata."

Breve descrizione

Se crei un'istanza DB di Amazon Relational Database Service (Amazon RDS) (AWS::RDS::DBInstance) da un’istantanea RDS DB esistente utilizzando AWS CloudFormation, potresti ricevere un messaggio di errore per i seguenti motivi:

  • Il tipo di archiviazione nell'istantanea del DB non corrisponde al tipo di archiviazione nell'istanza del DB.
  • Le istantanee del DB contengono oggetti non validi.

Nota: esistono altre possibili cause per i problemi di stabilizzazione delle istanze del DB RDS. I passaggi della seguente risoluzione si applicano solo ai problemi in cui l'istanza del DB RDS viene creata da istantanee in AWS CloudFormation.

Soluzione

Assicurati che i tipi di archiviazione dell’istantanea del DB e dell'istanza del DB corrispondano

Nota: se riscontri errori durante l'esecuzione dei comandi dell’interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

1.    Verifica il tipo di archiviazione dell’istantanea del DB utilizzando la console Amazon RDS o i comandi di AWS CLI describe-db-snapshots. Ad esempio:

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",
            .......
        }
    ]
}

Nota: Il valore StorageType gp2 del comando AWS CLI viene mappato al valore General Purpose (SSD) nella console Amazon RDS.

2.    Nella definizione della risorsa AWS::RDS::DBInstance del modello JSON o YAML di AWS CloudFormation, imposta il valore di StorageType in modo che corrisponda al tipo di archiviazione dell'istantanea. In questo caso, il tipo di archiviazione è impostato su 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
    ......

Nota: se il tipo di archiviazione non è impostato, AWS CloudFormation imposta StorageType su standard per impostazione predefinita, che potrebbe non corrispondere al tipo di archiviazione dell'istantanea a cui si fa riferimento. Se i tipi di archiviazione non corrispondono, RDS potrebbe impiegare più tempo per creare il database a causa del processo aggiuntivo di conversione dell’archiviazione. La mancata corrispondenza potrebbe inoltre comportare errori di timeout in database di dimensioni maggiori. È consigliabile definire esplicitamente il tipo di archiviazione nella risorsa AWS::RDS::DBInstance. Valuta anche la possibilità di impostare il tipo di archiviazione in modo che corrisponda a quello dell'istantanea.

3.    Avvia lo stack AWS CloudFormation per creare l'istanza del DB.

Verifica che le istantanee del DB non contengano oggetti non validi

Se l’istantanea del DB utilizzata per creare l'istanza del DB contiene oggetti non validi, completa i seguenti passaggi:

1.    Identifica e correggi gli oggetti non validi nei database esistenti.

Ad esempio, la seguente query del database di Oracle restituisce un elenco di oggetti non validi:

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

2.    Acquisisci di nuovo le istantanee dei database esistenti.

Importante: acquisisci di nuovo le istantanee del DB solo dopo aver corretto o rimosso tutti gli oggetti non validi dai database.

3.    Avvia lo stack AWS CloudFormation per creare l'istanza del DB utilizzando l’istantanea del database esistente.


AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa