Replicação com o Amazon Aurora MySQL
Os recursos de replicação do Aurora MySQL são fundamentais para a alta disponibilidade e a performance do cluster. O Aurora facilita criar ou redimensionar clusters com até 15 réplicas do Aurora.
Todas as réplicas funcionam pelos mesmos dados subjacentes. Se algumas instâncias de banco de dados ficarem offline, outras permanecerão disponíveis para continuar o processamento de consultas ou para assumir a gravação, caso necessário. O Aurora distribui automaticamente as conexões somente leitura entre várias instâncias de banco de dados, ajudando o cluster do Aurora a dar suporte a workloads que exigem muitas consultas.
Nos tópicos a seguir, é possível encontrar informações sobre como a replicação do Aurora MySQL funciona e como ajustar as configurações de replicação tendo em vista disponibilidade e performance melhores.
Tópicos
Usar réplicas do Aurora
As réplicas do Aurora são endpoints independentes em um cluster de banco de dados do Aurora, cuja melhor utilidade é dimensionar operações de leitura e aumentar a disponibilidade. É possível distribuir até 15 réplicas do Aurora entre as zonas de disponibilidade que um cluster de banco de dados abrange em uma Região da AWS. Embora o volume do cluster de banco de dados seja composto de várias cópias dos dados para o cluster de banco de dados, os dados no volume do cluster são representados como um único volume lógico para a instância primária e para as réplicas do Aurora no cluster de banco de dados. Para obter mais informações sobre réplicas do Aurora, consulte Réplicas do Aurora.
As réplicas do Aurora funcionam bem para a escalabilidade de leitura porque são totalmente dedicadas a operações de leitura no seu volume de cluster. As operações de gravação são gerenciadas pela instância principal. Como o volume do cluster é compartilhado entre todas as instâncias no seu cluster de banco de dados do Aurora MySQL, nenhum trabalho adicional é necessário para replicar uma cópia dos dados para cada réplica do Aurora. Por outro lado, as réplicas de leitura do MySQL devem reproduzir, em um único thread, todas as operações de gravação da instância de banco de dados de origem no armazenamento de dados local. Essa limitação pode afetar a possibilidade de réplicas de leitura do MySQL de dar suporte a grandes volumes de tráfego de leitura.
Com o Aurora MySQL, quando a réplica do Aurora é excluída, o endpoint da instância é removido imediatamente, e a réplica do Aurora é removida do endpoint leitor. Se houver instruções em execução na réplica do Aurora que está sendo excluída, haverá um período de carência de três minutos. As instruções existentes podem ser concluídas durante o período de carência. Quando o período de carência termina, a réplica do Aurora é fechada e excluída.
Importante
As réplicas do Aurora para o Aurora MySQL usam sempre o nível de isolamento de transação padrão REPEATABLE READ
para operações nas tabelas do InnoDB. Você pode usar o comando SET TRANSACTION ISOLATION LEVEL
para alterar o nível de transação somente para a instância primária de um cluster de banco de dados do Aurora MySQL. Essa restrição evita bloqueios no nível do usuário nas réplicas do Aurora e permite que elas escalem para oferecer suporte a milhares de conexões de usuários ativos ainda que com um mínimo de atraso na réplica.
nota
As instruções DDL executadas na instância principal podem interromper conexões de banco de dados nas réplicas do Aurora associadas. Se uma conexão de réplica do Aurora estiver usando um objeto de banco de dados ativamente (por exemplo, uma tabela) e esse objeto for modificado na instância principal usando uma instrução DDL, a conexão de réplica do Aurora será interrompida.
nota
A região China (Ningxia) não oferece suporte a réplicas de leitura entre regiões.
Opções de replicação para Amazon Aurora MySQL
Você pode configurar a replicação entre qualquer uma das seguintes opções:
-
Dois clusters de banco de dados do Aurora MySQL em diferentes Regiões da AWS, criando uma réplica de leitura entre regiões de um cluster de banco de dados do Aurora MySQL.
Para obter mais informações, consulte Replicar clusters de banco de dados do Amazon Aurora MySQL entre Regiões da AWS.
-
Dois clusters de banco de dados do Aurora MySQL na mesma Região da AWS usando a replicação do log binário (binlog) do MySQL.
Para obter mais informações, consulte Replicação entre Aurora e o MySQL ou entre Aurora e outro cluster de banco de dados do Aurora (replicação de log binário).
-
Uma instância de banco de dados RDS para MySQL como a fonte de um cluster de banco de dados do Aurora MySQL, criando uma réplica de leitura do Aurora de uma instância de banco de dados RDS para MySQL.
Você pode usar essa abordagem para trazer mudanças de dados existentes e contínuas Aurora MySQL durante a migração para Aurora. Para ter mais informações, consulte Migrar de uma instância de banco de dados do RDS para MySQL para um cluster de banco de dados do Amazon Aurora MySQL usando uma réplica de leitura do Aurora.
Você também pode usar essa abordagem para aumentar a escalabilidade das consultas de leitura para seus dados. É possível consultar os dados usando uma ou mais instâncias de banco de dados dentro de um cluster de Aurora MySQL somente leitura. Para obter mais informações, consulte Escalar leituras para o banco de dados MySQL com o Amazon Aurora.
-
Um cluster de banco de dados do Aurora MySQL em uma Região da AWS e até cinco clusters de banco de dados do Aurora somente leitura Aurora MySQL em diferentes regiões, criando um banco de dados global do Aurora.
Você pode usar um banco de dados global do Aurora para comportar aplicações presentes ao redor do mundo. O cluster de banco de dados do Aurora MySQL primário tem uma instância gravador e até 15 réplicas do Aurora. Os clusters de banco de dados secundários do Aurora MySQL somente leitura podem ser compostos de até 16 réplicas de Aurora. Para obter mais informações, consulte Usar o Amazon Aurora Global Database.
nota
Reinicializar a instância primária de um cluster de banco de dados do Amazon Aurora também reinicia automaticamente as réplicas do Aurora desse cluster de banco de dados para restabelecer um ponto de entrada que garante a consistência de leitura/gravação em todo o cluster de banco de dados.
Considerações sobre performance da replicação do Amazon Aurora MySQL
Os recursos a seguir ajudam você a ajustar a performance da replicação do Aurora MySQL.
O recurso de compactação do log de réplicas reduz a largura de banda da rede para mensagens de replicação. Como cada mensagem é transmitida para todas as réplicas do Aurora, os benefícios são maiores para cluster maiores. Esse recurso envolve certa sobrecarga da CPU no nó gravador para realizar a compactação. Ele está sempre habilitado no Aurora MySQL versão 2 e versão 3.
O recurso de filtragem de logs binários reduz a largura de banda da rede para mensagens de replicação. Como as réplicas do Aurora não usam as informações de log binário incluídas nas mensagens de replicação, esses dados são omitidos das mensagens enviadas para esses nós.
No Aurora MySQL versão 2, você pode controlar esse recurso alterando o valor do parâmetro aurora_enable_repl_bin_log_filtering
. Por padrão, esse parâmetro está ativado. Como essa otimização destina-se a ser transparente, você pode desativar essa configuração somente durante operações de diagnóstico ou solução de problemas relacionadas a replicação. Por exemplo, você pode fazer isso para corresponder o comportamento de um cluster do Aurora MySQL mais antigo no qual esse recurso não estava disponível.
A filtragem do log binário está sempre habilitada no Aurora MySQL versão 3.
Monitorar a replicação do Amazon Aurora MySQL
A escalabilidade de leitura e a alta disponibilidade dependem de um tempo de atraso mínimo. É possível monitorar até que ponto uma réplica do Aurora está atrasada em relação à instância primária do cluster de banco de dados do Aurora MySQL, monitorando a métrica AuroraReplicaLag
do Amazon CloudWatch. A métrica AuroraReplicaLag
é registrada em cada réplica do Aurora.
A instância de banco de dados principal também registra as métricas AuroraReplicaLagMaximum
e AuroraReplicaLagMinimum
do Amazon CloudWatch. A métrica AuroraReplicaLagMaximum
registra a quantidade máxima de atraso entre a instância de banco de dados principal e cada réplica do Aurora no cluster de banco de dados. A métrica AuroraReplicaLagMinimum
registra a quantidade mínima de atraso entre a instância de banco de dados principal e cada réplica do Aurora no cluster de banco de dados.
Se você precisar do valor mais atual para o atraso da réplica do Aurora, confira a métrica AuroraReplicaLag
no Amazon CloudWatch. O atraso da réplica do Aurora também é registrado em cada réplica do Aurora do cluster de banco de dados do Aurora MySQL na tabela information_schema.replica_host_status
. Para obter mais informações sobre essa tabela, consulte information_schema.replica_host_status.
Para obter mais informações sobre como monitorar as instâncias do RDS e as métricas do CloudWatch, consulte Monitorar métricas em um cluster do Amazon Aurora.