Fazer failover de um cluster de banco de dados multi-AZ para o Amazon RDS
Se houver uma interrupção planejada ou não planejada da sua instância de banco de dados de gravador em um cluster de banco de dados multi-AZ, o Amazon RDS fará o failover automaticamente para uma instância de banco de dados de leitor em uma zona de disponibilidade diferente. Isso garante alta disponibilidade com o mínimo de interrupções. Os failovers podem ocorrer durante falhas de hardware, problemas de rede ou solicitações manuais. O tópico descreve a detecção automática de falhas, a sequência de eventos durante o failover e seu impacto nas operações de leitura e gravação. Ele também apresenta práticas recomendadas para monitorar e minimizar os tempos de failover.
O tempo de conclusão do failover depende da atividade do banco de dados e de outras condições no momento em que a instância de banco de dados de gravador se tornou indisponível. Em geral, os tempos de failover ficam abaixo de 35 segundos. O failover será concluído quando ambas as instâncias de banco de dados de leitor tiverem aplicado transações pendentes do gravador com falha. Quando o failover é concluído, o console do RDS pode levar mais um tempo para refletir a nova zona de disponibilidade.
Tópicos
Failovers automáticos
O Amazon RDS processa os failovers automaticamente para que você possa retomar as operações de banco de dados o mais rápido possível e sem intervenção administrativa. Para fazer failover, a instância de banco de dados de gravador alterna automaticamente para uma instância de banco de dados de leitor.
Fazer o failover manual de cluster de banco de dados multi-AZ
Se você fizer failover de um cluster de banco de dados multi-AZ manualmente, o RDS primeiro encerrará a instância de banco de dados primária. Depois, o sistema de monitoramento interno detecta que a instância de banco de dados primária não está íntegra e promove uma instância de banco de dados de réplica legível. Em geral, os tempos de failover ficam abaixo de 35 segundos.
Você pode fazer failover de um cluster de banco de dados multi-AZ manualmente usando o AWS Management Console, a AWS CLI ou a API do RDS.
Para fazer failover de um cluster de banco de dados multi-AZ manualmente
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Bancos de dados.
-
Escolha o cluster de banco de dados multi-AZ do qual você deseja fazer failover.
-
Em Actions (Ações), selecione Failover.
A página Cluster de banco de dados de failover é exibida.
-
Selecione Failover para confirmar o failover manual.
Para fazer failover de um cluster de banco de dados multi-AZ manualmente, utilize o comando da AWS CLI failover-db-cluster.
aws rds failover-db-cluster --db-cluster-identifier
mymultiazdbcluster
Para fazer failover de um cluster de banco de dados multi-AZ manualmente, chame a API FailoverDBCluster do Amazon RDS e especifique o DBClusterIdentifier
.
Determinar se um cluster de banco de dados multi-AZ fez failover
Para determinar se ocorreu failover no cluster de banco de dados multi-AZ, faça o seguinte:
Configure assinaturas de eventos de banco de dados para notificar você por e-mail ou SMS de que um failover foi iniciado. Para ter mais informações sobre eventos do , consulte Trabalhar com a notificação de eventos do Amazon RDS.
Visualize seus eventos de banco de dados usando o console do Amazon RDS ou operações de API.
Veja o estado atual do seu cluster de banco de dados multi-AZ utilizando o console do Amazon RDS, a AWS CLI e a API do RDS.
Para obter informações sobre como você pode responder aos failovers, reduzir o tempo de recuperação e outras melhores práticas para o Amazon RDS, consulte Práticas recomendadas do Amazon RDS.
Definir o JVM TTL para pesquisas de nome DNS
O mecanismo de failover modifica automaticamente o registro de Domain Name System (DNS) da instância de banco de dados para apontar para a instância de banco de dados de leitor. Como resultado, você precisará restabelecer todas as conexões existentes para sua instância de banco de dados. Em um ambiente de máquina virtual Java (JVM), devido à forma como o mecanismo de cache DNS do Java funciona, talvez seja necessário reconfigurar as configurações da JVM.
A JVM armazena em cache pesquisas de nome DNS. Ao resolver um nome de host para um endereço IP, a JVM armazena em cache o endereço IP por um período especificado, conhecido como Time-To-Live (TTL – Vida útil).
Como os recursos AWS usam entradas de nome DNS que acabam mudando, recomendamos configurar a JVM com um valor TTL de até 60 segundos. Isso garante que quando o endereço IP de um recurso mudar, seu aplicativo poderá receber e usar o novo endereço IP do recurso, consultando novamente o DNS.
Em algumas configurações do Java, o TTL padrão da JVM é definido de maneira que jamais atualiza entradas DNS até a JVM ser reiniciada. Por isso, se o endereço IP de um recurso AWS mudar enquanto a aplicação ainda estiver em execução, não será possível usar esse recurso até você reiniciar manualmente a JVM e as informações de IP armazenadas em cache serem atualizadas. Nesse caso, é crucial definir o TTL da JVM, de forma que ele atualize periodicamente as informações de IP armazenadas em cache.
nota
O TTL padrão pode variar de acordo com a versão da JVM e a possibilidade de um gerenciador de segurança estar instalado. Muitas JVMs oferecem um TTL padrão menor que 60 segundos. Se estiver usando uma JVM como essa, e não um gerenciador de segurança, será possível ignorar o restante deste tópico. Para ter mais informações sobre gerenciadores de segurança no Oracle, consulte The security manager
Para modificar o TTL da JVM, defina o valor da propriedade networkaddress.cache.ttl
-
Para definir o valor da propriedade globalmente para todos os aplicativos que usam a JVM, defina
networkaddress.cache.ttl
no arquivo$JAVA_HOME/jre/lib/security/java.security
.networkaddress.cache.ttl=60
-
Para definir a propriedade localmente somente para seu aplicativo, defina
networkaddress.cache.ttl
no código de inicialização do aplicativo antes de quaisquer conexões de rede serem estabelecidas.java.security.Security.setProperty("networkaddress.cache.ttl" , "60");