¿Cómo puedo resolver el error «La instancia de la base de datos xxxxxx no se ha podido estabilizar» al crear una instancia de base de datos de RDS a partir de instantáneas con AWS CloudFormation?

4 minutos de lectura
0

Cuando intento crear un recurso de AWS::RDS::DBInstance con AWS CloudFormation, aparece el siguiente error: «La instancia de la base de datos xxxxxx no se ha podido estabilizar».

Breve descripción

Si crea una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) (AWS::RDS::DBInstance) a partir de una instantánea de base de datos de RDS existente mediante AWS CloudFormation, puede recibir un error por los siguientes motivos:

  • El tipo de almacenamiento de la instantánea de base de datos no coincide con el tipo de almacenamiento de la instancia de base de datos.
  • Las instantáneas de base de datos contienen objetos no válidos.

Nota: Hay otras causas posibles de los problemas de estabilización de la instancia de base de datos de RDS. Los pasos de la siguiente resolución se aplican únicamente a los problemas en los que la instancia de base de datos de RDS se crea a partir de instantáneas en AWS CloudFormation.

Resolución

Haga coincidir los tipos de almacenamiento entre la instantánea de base de datos y la instancia de base de datos

Nota: Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de usar la versión más reciente de AWS CLI.

1.    Compruebe el tipo de almacenamiento de la instantánea de base de datos mediante la consola de Amazon RDS o los comandos describe-db-snapshots de la AWS CLI. Por ejemplo:

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:**El valor de StorageType gp2 del comando de la AWS CLI se asigna al valor General Purpose (SSD) en la consola de Amazon RDS.

2.    En la definición de recursos AWS::RDS::DBInstance de su plantilla JSON o YAML de AWS CloudFormation, defina el valor de StorageType para que coincida con el tipo de almacenamiento de la instantánea. En este caso, el tipo de almacenamiento se establece en 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: Si el tipo de almacenamiento no está configurado, AWS CloudFormation establece StorageType como estándar de forma predeterminada, lo que podría no coincidir con el tipo de almacenamiento de la instantánea a la que se hace referencia. Si los tipos de almacenamiento no coinciden, RDS podría tardar más en crear la base de datos debido al proceso de conversión de almacenamiento adicional. Además, esta discordancia podría provocar errores de tiempo de espera para bases de datos más grandes. Se recomienda definir de forma explícita el tipo de almacenamiento en el recurso AWS::RDS::DBInstance. Además, considere configurar el tipo de almacenamiento para que coincida con el tipo de almacenamiento de la instantánea.

3.    Inicie su pila de AWS CloudFormation para crear la instancia de base de datos.

Compruebe que las instantáneas de base de datos no tengan objetos no válidos

Si la instantánea de base de datos que se usa para crear la instancia de base de datos tiene objetos no válidos, siga estos pasos:

1.    Identifique y corrija los objetos no válidos en sus bases de datos existentes.

Por ejemplo, la siguiente consulta de base de datos de Oracle devuelve una lista de objetos no válidos:

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

2.    Vuelva a tomar instantáneas de sus bases de datos existentes.

Importante: Vuelva a tomar las instantáneas de la base de datos solo después de corregir o eliminar todos los objetos no válidos de las bases de datos.

3.    Inicie su pila de AWS CloudFormation para crear la instancia de base de datos con la instantánea de base de datos existente.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años