Como posso resolver o erro “DBInstance xxxxxx falhou ao estabilizar” ao criar uma instância de banco de dados do RDS a partir de snapshots usando o AWS CloudFormation?
Quando tento criar um recurso AWS::RDS::DBInstance com o AWS CloudFormation, recebo este erro: “DBInstance xxxxxx falhou ao estabilizar”.
Breve descrição
Se você criar uma instância de banco de dados do Amazon Relational Database Service (Amazon RDS) (AWS::RDS::DBInstance) a partir de um snapshot do banco de dados do RDS existente usando o AWS CloudFormation, poderá receber um erro por causa dos seguintes motivos:
- O tipo de armazenamento no snapshot do banco de dados não corresponde ao tipo de armazenamento na instância de banco de dados.
- Seus snapshots de banco de dados contêm objetos inválidos.
Observação: há outras causas possíveis de problemas de estabilização da instância de banco de dados do RDS. As etapas da resolução a seguir se aplicam somente aos problemas em que a instância de banco de dados do RDS é criada a partir de snapshots no AWS CloudFormation.
Solução
Compatibilize os tipos de armazenamento entre seu snapshot de banco de dados e sua instância de banco de dados
Observação: se receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se você está usando sua versão mais recente.
1. Verifique o tipo de armazenamento do snapshot de banco de dados usando o console do Amazon RDS ou os comandos da AWS CLI describe-db-snapshots. Por exemplo:
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", ....... } ] }
Observação: o valor gp2 de StorageType do comando da AWS CLI é mapeado para o valor Uso geral (SSD) no console do Amazon RDS.
2. Na definição do recurso AWS::RDS::DBInstance do seu modelo JSON ou YAML do AWS CloudFormation, defina o valor de StorageType para que corresponda ao tipo de armazenamento do snapshot. Nesse caso, o tipo de armazenamento é definido como 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 ......
Observação: se o tipo de armazenamento não está definido, por padrão, o AWS CloudFormation define StorageType como padrão, o que pode não corresponder ao tipo de armazenamento do snapshot referenciado. Se os tipos de armazenamento não corresponderem, o RDS poderá levar mais tempo para criar o banco de dados devido ao processo extra de conversão do armazenamento. Além disso, essa incompatibilidade pode levar a erros de tempo limite, no caso de bancos de dados maiores. É uma prática recomendada definir explicitamente o tipo de armazenamento no recurso AWS::RDS::DBInstance. Além disso, considere definir o tipo de armazenamento para corresponder ao tipo de armazenamento do snapshot.
3. Inicie sua pilha do AWS CloudFormation para criar a instância do banco de dados.
Verifique se os snapshots de banco de dados não têm objetos inválidos
Se o snapshot de banco de dados usado para criar sua instância de banco de dados tiver objetos inválidos, execute as seguintes etapas:
1. Identifique e corrija os objetos inválidos em seus bancos de dados existentes.
Por exemplo, a consulta ao banco de dados Oracle a seguir retorna uma lista de objetos inválidos:
select owner,object_name,object_type,status from dba_objects where status='INVALID'
2. Refaça os snapshots de seus bancos de dados existentes.
Importante: refaça os snapshots do banco de dados somente depois de corrigir ou remover todos os objetos inválidos de seus bancos de dados.
3. Inicie a pilha do AWS CloudFormation para criar a instância de banco de dados usando o snapshot de banco de dados existente.
Conteúdo relevante
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 4 anos