Para uma instância de banco de dados do RDS for MySQL existente com réplicas de leitura que não usam a replicação baseada em GTID, é possível configurar a replicação baseada em GTID entre a instância de banco de dados e as réplicas de leitura.
Como habilitar a replicação baseada em GTID para réplicas de leitura existentes
-
Se a instância de banco de dados ou qualquer réplica de leitura estiver utilizando uma versão 8.0 do RDS for MySQL inferior a 8.0.26, faça upgrade da instância de banco de dados ou da réplica de leitura para 8.0.26 ou uma versão posterior do MySQL 8.0. Todas as versões 5.7 do RDS para MySQL são compatíveis com replicação baseada em GTID.
Para obter mais informações, consulte Atualizações do mecanismo de banco de dados do RDS para MySQL.
-
(Opcional) Redefina os parâmetros GTID e teste o comportamento da instância de banco de dados e as réplicas de leitura:
-
Verifique se o grupo de parâmetros associado a uma instância de banco de dados e cada réplica de leitura tem o parâmetro
enforce_gtid_consistency
definido comoWARN
.Para obter mais informações sobre a definição de parâmetros de configuração usando grupos de parâmetros, consulte Grupos de parâmetros para Amazon RDS.
-
Se você tiver alterado o grupo de parâmetros da instância de banco de dados, reinicie a instância de banco de dados. Se você tiver alterado o grupo de parâmetros para uma réplica de leitura, reinicie a réplica de leitura.
Para obter mais informações, consulte Reinicializar uma instância de banco de dados .
-
Execute a instância de banco de dados e as réplicas de leitura com a workload normal e monitore os arquivos de log.
Caso você veja avisos sobre transações incompatíveis com GTID, ajuste o aplicativo de maneira que ele só use recursos compatíveis com GTID. Verifique se a instância de banco de dados não estiver gerando avisos sobre transações incompatíveis com GTID antes de avançar à próxima etapa.
-
-
Redefina os parâmetros GTID para replicação baseada em GTID que permite transações anônimas até que as réplicas de leitura tenham processado todas elas.
-
Verifique se o grupo de parâmetros associado a uma instância de banco de dados e cada réplica de leitura tem as seguintes configurações de parâmetro:
-
gtid_mode
–ON_PERMISSIVE
-
enforce_gtid_consistency
–ON
-
-
Se você tiver alterado o grupo de parâmetros da instância de banco de dados, reinicie a instância de banco de dados. Se você tiver alterado o grupo de parâmetros para uma réplica de leitura, reinicie a réplica de leitura.
-
-
Aguarde a replicação de todas as transações anônimas. Para verificar se elas estão replicadas, faça o seguinte:
-
Execute a instrução a seguir na instância de banco de dados de origem.
SHOW MASTER STATUS;
Observe os valores nas colunas
File
ePosition
. -
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 declaraçã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. Prossiga para a próxima etapa quando a consulta retornar para todas as réplicas de leitura.
-
-
Redefina os parâmetros GTID apenas para replicação baseada em GTID.
-
Verifique se o grupo de parâmetros associado a uma instância de banco de dados e cada réplica de leitura tem as seguintes configurações de parâmetro:
-
gtid_mode
–ON
-
enforce_gtid_consistency
–ON
-
-
Reinicialize a instância de banco de dados e cada réplica de leitura.
-
-
Em cada réplica de leitura, execute o procedimento a seguir.
CALL mysql.rds_set_master_auto_position(1);