Usar a replicação baseada em GTID para o Amazon Aurora MySQL
A seguir, você aprenderá a usar identificadores de transações globais (GTIDs) com a replicação de logs binários (binlog) entre um cluster do Aurora MySQL e uma fonte externa.
Para o Aurora, você só pode usar esse recurso com clusters do Aurora MySQL que usem replicação de logs binários para ou de um banco de dados MySQL externo. O outro banco de dados pode ser uma instância do Amazon RDS MySQL, um banco de dados MySQL on-premises ou um cluster de banco de dados do Aurora em uma Região da AWS diferente. Para saber mais sobre como configurar esse tipo de replicação, 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).
Se você usa a replicação de logs binários e não está familiarizado com a replicação baseada em GTID com o MySQL, consulte Replicação com identificadores de transações globais
A replicação baseada em GTID tem suporte para clusters compatíveis com o MySQL 5.7 no Aurora MySQL versão 2.04 e posteriores. A replicação baseada em GTID não tem suporte para clusters compatíveis com o MySQL 5.6 na versão Aurora MySQL 1.
Tópicos
Visão geral dos identificadores de transações globais (GTIDs)
GTIDs são identificadores exclusivos gerados para transações MySQL confirmadas. Você pode usar GTIDs para tornar a replicação de log binário mais simples e fácil de solucionar.
Quando o Aurora sincroniza dados entre as instâncias de banco de dados em um cluster, esse mecanismo de replicação não envolve o log binário (binlog). Para o Aurora MySQL, a replicação baseada em GTID somente é aplicável quando você também usa a replicação de log binário para replicar dentro ou fora de um cluster de banco de dados do Aurora MySQL a partir de um banco de dados externo compatível com MySQL.
O MySQL usa dois tipos diferentes de transações para a replicação de log binário:
-
Transações GTID – Transações identificadas por um GTID.
-
Transações anônimas – transações que não têm um GTID atribuído.
Em uma configuração de replicação, GTIDs são exclusivos entre todas as instâncias de banco de dados. Os GTIDs simplificam a configuração da replicação porque ao usá-los você não precisa consultar posições de arquivo de log. Os GTIDs também facilitam o rastreamento de transações replicadas e a determinação da consistência da instância de origem e de réplicas.
Normalmente, você usa a replicação baseada em GTID com o Aurora ao replicar de um banco de dados externo compatível com MySQL para um cluster do Aurora. É possível configurar essa configuração de replicação como parte de uma migração de um banco de dados no local ou do Amazon RDS para o Aurora MySQL. Se o banco de dados externo já usa GTIDs, a ativação da replicação baseada em GTID para o cluster do Aurora simplificará o processo de replicação.
Você configura a replicação baseada em GTID para um cluster do Aurora MySQL definindo primeiro os parâmetros de configuração relevantes em um grupo de parâmetros de cluster de banco de dados. Em seguida, você associa esse grupo de parâmetros ao cluster.
Parâmetros para replicação baseada em GTID
Use os parâmetros a seguir para configurar a replicação baseada em GTID.
Parâmetro | Valores válidos | Descrição |
---|---|---|
|
|
|
|
|
|
No AWS Management Console, o parâmetro gtid_mode
aparece como gtid-mode
.
Para a replicação baseada em GTID, use essas configurações para o grupo de parâmetros de cluster de banco de dados do seu cluster de banco de dados do Aurora MySQL:
-
ON
eON_PERMISSIVE
somente são aplicáveis à replicação de saída de um cluster do Aurora MySQL. Esses dois valores fazem com que o seu cluster de banco de dados do Aurora use GTIDs para transações que são replicadas para um banco de dados externo. OON
requer que o banco de dados externo também use a replicação baseada em GTID. OON_PERMISSIVE
torna a replicação baseada em GTID opcional no banco de dados externo. -
OFF_PERMISSIVE
, se definido, significa que o cluster de banco de dados do Aurora pode aceitar a replicação de entrada de um banco de dados externo. Ele pode fazer isso independentemente de o banco de dados externo usar a replicação baseada em GTID ou não. -
OFF
, se definido, significa que seu cluster de banco de dados do Aurora apenas aceita a replicação de entrada de bancos de dados externos que não usam a replicação baseada em GTID.
A replicação de entrada é o cenário de replicação de log binário mais comum para clusters do Aurora MySQL. Para a replicação de entrada, recomendamos definir o modo de GTID como OFF_PERMISSIVE
. Essa configuração permite a replicação de entrada de bancos de dados externos, independentemente das configurações de GTID na origem de replicação.
Para obter mais informações sobre parameter groups, consulte Trabalhar com grupos de parâmetros.
Configurar a replicação baseada em GTID para um cluster do Aurora MySQL
Quando a replicação baseada em GTID está habilitada para um cluster de banco de dados do Aurora MySQL, as configurações de GTID aplicam-se à replicação de log binário de entrada e saída.
Para habilitar a replicação baseada em GTID para um cluster do Aurora MySQL
-
Crie ou edite um grupo de parâmetros de cluster de banco de dados usando as seguintes configurações de parâmetros:
-
gtid_mode
–ON
ouON_PERMISSIVE
-
enforce_gtid_consistency
–ON
-
-
Associe o grupo de parâmetros de cluster de banco de dados ao cluster do Aurora MySQL. Para isso, siga o procedimento em Trabalhar com grupos de parâmetros.
-
Opcionalmente, no Aurora MySQL versão 3 e posteriores, especifique como atribuir GTIDs a transações que não os incluem. Para isso, chame o procedimento armazenado em mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL versão 3).
Desabilitação da replicação baseada em GTID para um cluster de banco de dados do Aurora MySQL
Você pode desabilitar a replicação baseada em GTID para um cluster de banco de dados do Aurora MySQL. Isso significa que o cluster do Aurora não pode realizar a replicação de log binário de entrada ou saída com bancos de dados externos que usam a replicação baseada em GTID.
No procedimento a seguir, réplica de leitura significa o destino de replicação em uma configuração do Aurora com replicação de log binário para ou de um banco de dados externo. O termo não significa as instâncias de banco de dados de réplica somente leitura do Aurora. Por exemplo, quando um cluster do Aurora aceita a replicação de entrada de uma origem externa, a instância primária do Aurora atua como a réplica de leitura para replicação de log binário.
Para obter mais detalhes sobre os procedimentos armazenados mencionados nesta seção, consulte Procedimentos armazenados do Aurora MySQL.
Para desabilitar a replicação baseada em GTID para um cluster de banco de dados do Aurora MySQL
-
Na instância primária do Aurora, execute o procedimento a seguir.
CALL mysql.rds_set_master_auto_position(0); (Aurora MySQL version 1 and 2) CALL mysql.rds_set_source_auto_position(0); (Aurora MySQL version 3 and higher)
-
Redefina o
gtid_mode
comoON_PERMISSIVE
.-
Certifique-se que o grupo de parâmetros de cluster de banco de dados associado ao cluster do Aurora MySQL tenha
gtid_mode
definido comoON_PERMISSIVE
.Para obter mais informações sobre a definição de parâmetros de configuração usando grupos de parâmetros, consulte Trabalhar com grupos de parâmetros.
-
Reinicie o cluster de banco de dados do Aurora MySQL.
-
-
Redefina o
gtid_mode
comoOFF_PERMISSIVE
:-
Certifique-se que o grupo de parâmetros de cluster de banco de dados associado ao cluster do Aurora MySQL tenha
gtid_mode
definido comoOFF_PERMISSIVE
. -
Reinicie o cluster de banco de dados do Aurora MySQL.
-
-
-
Na instância de primária do Aurora, execute o comando
SHOW MASTER STATUS
.Sua saída deve ser similar à seguinte.
File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------
Observe o arquivo e posicione na saída.
-
Em cada réplica de leitura, use as informações de arquivo e posição de sua instância de origem na etapa anterior para executar a consulta a seguir.
SELECT MASTER_POS_WAIT('
file
',position
);Por exemplo, caso o nome do arquivo seja
mysql-bin-changelog.000031
e a posição seja107
, execute a instrução a seguir.SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
Se a réplica de leitura ultrapassar a posição especificada, a consulta retornará imediatamente. Do contrário, a função aguarda. Quando a consulta for retornada para todas as réplicas de leitura, vá para a próxima etapa.
-
-
Redefina os parâmetros de GTID para desabilitar a replicação baseada em GTID:
-
Verifique se o grupo de parâmetros de cluster de banco de dados associado ao cluster do Aurora MySQL tem as seguintes configurações de parâmetros:
-
gtid_mode
–OFF
-
enforce_gtid_consistency
–OFF
-
-
Reinicie o cluster de banco de dados do Aurora MySQL.
-