Usar a replicação baseada em GTID para o Amazon Aurora MySQL - Amazon Aurora

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.

nota

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 na documentação do MySQL para obter informações complementares.

A replicação baseada em GTID é compatível com o Aurora MySQL versões 2 e 3.

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.

nota

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

gtid_mode

OFF, OFF_PERMISSIVE, ON_PERMISSIVE, ON

OFF especifica que novas transações são anônimas (ou seja, não têm GTIDs) e que uma transação deve ser anônima para ser replicada.

OFF_PERMISSIVE especifica que novas transações são anônimas, mas todas podem ser replicadas.

ON_PERMISSIVE especifica que novas transações são GTID, mas todas podem ser replicadas.

ON especifica que novas transações são GTID e que uma transação deve ser GTID para ser replicada.

enforce_gtid_consistency

OFF, ON, WARN

OFF permite que as transações violem a consistência GTID.

ON evita que as transações violem a consistência GTID.

WARN permite que as transações violem a consistência GTID, mas gera um aviso quando ocorre uma violação.

nota

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 e ON_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. O ON requer que o banco de dados externo também use a replicação baseada em GTID. O ON_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.

dica

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
  1. Crie ou edite um grupo de parâmetros de cluster de banco de dados usando as seguintes configurações de parâmetros:

    • gtid_modeON ou ON_PERMISSIVE

    • enforce_gtid_consistencyON

  2. 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.

  3. (Opcional) 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.

nota

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
  1. Na instância primária do Aurora, execute o procedimento a seguir.

    CALL mysql.rds_set_master_auto_position(0); (Aurora MySQL version 2) CALL mysql.rds_set_source_auto_position(0); (Aurora MySQL version 3)
  2. Redefina o gtid_mode como ON_PERMISSIVE.

    1. Certifique-se que o grupo de parâmetros de cluster de banco de dados associado ao cluster do Aurora MySQL tenha gtid_mode definido como ON_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.

    2. Reinicie o cluster de banco de dados do Aurora MySQL.

  3. Redefina o gtid_mode como OFF_PERMISSIVE:

    1. Certifique-se que o grupo de parâmetros de cluster de banco de dados associado ao cluster do Aurora MySQL tenha gtid_mode definido como OFF_PERMISSIVE.

    2. Reinicie o cluster de banco de dados do Aurora MySQL.

    1. 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.

    2. 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 seja 107, 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.

  4. Redefina os parâmetros de GTID para desabilitar a replicação baseada em GTID:

    1. 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_modeOFF

      • enforce_gtid_consistencyOFF

    2. Reinicie o cluster de banco de dados do Aurora MySQL.