Comment éliminer l’erreur « DBInstance xxxxxx failed to stabilize » (L’instance de base de données xxxxxx n'a pas pu être stabilisée) lorsque je crée une instance de base de données RDS à l'aide d'AWS CloudFormation ?

Date de la dernière mise à jour : 31/05/2019

Lorsque j'essaie de créer une ressource AWS::RDS::DBInstance avec AWS CloudFormation, je reçois le message d'erreur « DBInstance xxxxxx failed to stabilize » (L’instance de base de données xxxxxx n'a pas pu être stabilisée). Comment éliminer cette erreur ?

Brève description

Si vous créez une base de données Amazon Relational Database Service (Amazon RDS) (AWS::RDS::DBInstance) à partir d'un instantané de base de données RDS existant à l'aide d'AWS CloudFormation, vous pouvez recevoir une erreur pour les raisons suivantes :

  • Le type de stockage dans l’instantané de bases de données ne correspond pas au type de stockage dans l'instance de base de données.
  • Vos instantanés de base de données contiennent des objets non valides.

Résolution

Mettre en correspondance les types de stockage entre votre instantané de base de données et votre instance de base de données

1.    Vérifiez le type de stockage de l'instantané de base de données à l'aide de la console Amazon RDS ou de la commande describe-db-snapshots dans l'interface de ligne de commande AWS (CLI AWS).

Consultez l'exemple suivant :

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

Remarque : la valeur StorageType gp2 de la commande de l'interface de ligne de commande AWS est associée à la valeur General Purpose (SSD) (Usage général (SSD)) dans la console Amazon RDS.

2.    Dans la définition de ressource AWS::RDS::DBInstance de votre modèle JSON ou YAML, affectez à StorageType la valeur gp2. Reportez-vous aux exemples suivants :

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

Remarque : si vous ne définissez pas explicitement le type de stockage de votre instance de base de données sur General Purpose SSD (SSD à usage général) (gp2), par défaut, AWS CloudFormation affecte à StorageType la valeur standard. Ce paramètre par défaut amène Amazon RDS à convertir gp2 en standard. La conversion prend beaucoup de temps et fait expirer AWS CloudFormation. Ensuite, AWS CloudFormation renvoie l’erreur « DBInstance xxxxxx failed to stabilize » (L’instance de base de données xxxxxx n'a pas pu être stabilisée) lors de la création de l'instance de base de données.

3.    Lancez votre pile AWS CloudFormation pour créer l'instance de base de données.

Vérifiez que vos instantanés de bases de données ne possèdent pas d’objets non valides.

Si l'instantané de base de données utilisé pour créer votre instance de base de données possède des objets non valides, suivez les étapes suivantes :

1.    Identifiez et corrigez les objets non valides dans vos bases de données existantes.

Par exemple, la requête de base de données Oracle suivante retourne une liste d’objets non valides :

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

2.    Recréez des instantanés de vos bases de données existantes.

Important : ne recréez les instantanés de bases de données qu’après avoir réparé ou supprimé tous les objets non valides de vos bases de données.

3.    Lancez votre pile AWS CloudFormation pour créer l'instance de base de données en utilisant l'instantané de base de données existant.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?