Configurar filtros de replicação com MySQL - Amazon Relational Database Service

Configurar filtros de replicação com MySQL

Você pode usar filtros de replicação para especificar quais bancos de dados e tabelas são replicados com uma réplica de leitura. Os filtros de replicação podem incluir bancos de dados e tabelas na replicação ou excluí-los da replicação.

Veja a seguir alguns casos de uso para filtros de replicação:

  • Para reduzir o tamanho de uma réplica de leitura. Com a filtragem de replicação, você pode excluir os bancos de dados e tabelas que não são necessários na réplica de leitura.

  • Para excluir bancos de dados e tabelas de réplicas de leitura por motivos de segurança.

  • Para replicar diferentes bancos de dados e tabelas para casos de uso específicos em diferentes réplicas de leitura. Por exemplo, você pode usar réplicas de leitura específicas para análise ou fragmentação.

  • Para uma instância de banco de dados que tenha réplicas de leitura em diferentes Regiões da AWS, para replicar diferentes bancos de dados ou tabelas em diferentes Regiões da AWS.

nota

É possível usar filtros de replicação para especificar quais bancos de dados e tabelas serão replicados com uma instância de banco de dados primária do MySQL configurada como uma réplica em uma topologia de replicação de entrada. Para obter mais informações sobre essa configuração, consulte Configurar a replicação da posição do arquivo de log binário com uma instância de origem externa.

Configurar parâmetros de filtragem de replicação para o RDS para MySQL

Para configurar filtros de replicação, defina os seguintes parâmetros de filtragem de replicação na réplica de leitura:

  • replicate-do-db – Replicar alterações nos bancos de dados especificados. Quando você define esse parâmetro para uma réplica de leitura, somente os bancos de dados especificados no parâmetro são replicados.

  • replicate-ignore-db – Não replique as alterações nos bancos de dados especificados. Quando o parâmetro replicate-do-db é definido para uma réplica de leitura, esse parâmetro não é avaliado.

  • replicate-do-table – Replicar alterações nas tabelas especificadas. Quando você define esse parâmetro para uma réplica de leitura, somente as tabelas especificadas no parâmetro são replicadas. Além disso, quando o parâmetro replicate-do-db ou replicate-ignore-db estiver definido, certifique-se de incluir o banco de dados que inclui as tabelas especificadas na replicação com a réplica de leitura.

  • replicate-ignore-table – Não replique as alterações nas tabelas especificadas. Quando o parâmetro replicate-do-table é definido para uma réplica de leitura, esse parâmetro não é avaliado.

  • replicate-wild-do-table – Replicar tabelas com base nos padrões de nome de banco de dados e tabela especificados. Os caracteres curinga % e _ são compatíveis. Quando o parâmetro replicate-do-db ou replicate-ignore-db estiver definido, certifique-se de incluir o banco de dados que inclui as tabelas especificadas na replicação com a réplica de leitura.

  • replicate-wild-ignore-table – Não replique tabelas com base nos padrões de nome de banco de dados e tabela especificados. Os caracteres curinga % e _ são compatíveis. Quando o parâmetro replicate-do-table ou replicate-wild-do-table é definido para uma réplica de leitura, esse parâmetro não é avaliado.

Os parâmetros são avaliados na ordem em que estão listados. Para obter mais informações sobre como esses parâmetros funcionam, consulte a documentação do MySQL:

Por padrão, cada um desses parâmetros tem um valor vazio. Em cada réplica de leitura, você pode usar esses parâmetros para definir, alterar e excluir filtros de replicação. Quando você define um desses parâmetros, separe cada filtro dos outros com uma vírgula.

Você pode usar % os caracteres curinga _ e nos parâmetros replicate-wild-do-table e replicate-wild-ignore-table. O curinga % corresponde a qualquer número de caracteres e o caractere curinga _ corresponde apenas a um caractere.

O formato de log binário da instância de banco de dados de origem é importante para replicação porque determina o registro de alterações de dados. A configuração do parâmetro binlog_format determina se a replicação é baseada em linha ou baseada em declaração. Para obter mais informações, consulte Configurar o registro em log binário do RDS para MySQL.

nota

Todas as instruções DDL (Data Definition Language, linguagem de definição de dados) são replicadas como instruções, independentemente da binlog_format configuração na instância de banco de dados de origem.

Limitações de filtragem de replicação do RDS para MySQL

As seguintes limitações aplicam-se à filtragem de replicação para o RDS para MySQL:

  • Cada parâmetro de filtragem de replicação tem um limite de 2.000 caracteres.

  • As vírgulas não são aceitas em filtros de replicação para valores de parâmetros. Em uma lista de parâmetros, as vírgulas só podem ser usadas como separadores de valores. Por exemplo, ParameterValue='`a,b`' não é aceito, mas ParameterValue='a,b' é.

  • O MySQL --binlog-do-db e --binlog-ignore-db as opções para filtragem de log binário não são compatíveis.

  • A filtragem de replicação não suporta transações XA.

    Para obter mais informações, consulte Restrictions on XA Transactions na documentação do MySQL.

Exemplos de filtragem de replicação do RDS para MySQL

Para configurar a filtragem de replicação para uma réplica de leitura, modifique os parâmetros de filtragem de replicação no grupo de parâmetros associado à réplica de leitura.

nota

Não é possível modificar um grupo de parâmetros padrão. Se a réplica de leitura estiver usando um grupo de parâmetros padrão, crie um novo grupo de parâmetros e o associe à instância de banco de dados. Para obter mais informações sobre grupos de parâmetros de banco de dados, consulte Grupos de parâmetros para Amazon RDS.

Você pode definir parâmetros em um grupo de parâmetros usando a AWS Management Console, a AWS CLI ou a API do RDS. Para obter informações sobre como configurar parâmetros, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS. Quando você define parâmetros em um grupo de parâmetros, todas as instâncias de banco de dados associadas ao grupo de parâmetros usam as configurações de parâmetro. Se você definir os parâmetros de filtragem de replicação em um grupo de parâmetros, verifique se o grupo de parâmetros está associado apenas a réplicas de leitura. Deixe os parâmetros de filtragem de replicação vazios para instâncias de banco de dados de origem.

Os exemplos a seguir definem os parâmetros usando o AWS CLI. Estes exemplos definem ApplyMethod para immediate de modo que as mudanças do parâmetro ocorram imediatamente depois que o comando CLI termina. Se você quiser que uma alteração pendente seja aplicada depois que a réplica de leitura for reinicializada, defina como ApplyMethod pending-reboot.

Os exemplos a seguir definem filtros de replicação:

exemplo Incluir bancos de dados em replicação

O exemplo a seguir inclui os bancos de dados mydb1 e mydb2 na replicação.

Para Linux, macOS ou Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"

Para Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"
exemplo Incluir tabelas na replicação

O exemplo a seguir inclui as tabelas table1 e table2 no banco de dados mydb1 na replicação.

Para Linux, macOS ou Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"

Para Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"
exemplo Incluir tabelas na replicação usando caracteres curinga

O exemplo a seguir inclui tabelas com nomes que começam com order e return no banco de dados mydb na replicação.

Para Linux, macOS ou Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"

Para Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
exemplo Excluir bancos de dados da replicação

O exemplo a seguir exclui os bancos de dados mydb5 e mydb6 da replicação.

Para Linux, macOS ou Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6',ApplyMethod=immediate"

Para Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6',ApplyMethod=immediate"
exemplo Excluir tabelas da replicação

O exemplo a seguir exclui a tabela table1 no banco de dados mydb5 e a tabela table2 no banco de dados mydb6 da replicação.

Para Linux, macOS ou Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"

Para Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
exemplo Excluir tabelas da replicação usando caracteres curinga

O exemplo a seguir exclui tabelas com nomes que começam com order e return no banco de dados mydb7 da replicação.

Para Linux, macOS ou Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"

Para Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"

Visualizar os filtros de replicação para uma réplica de leitura

Você pode visualizar os filtros de replicação de uma réplica de leitura das seguintes maneiras:

  • Verifique as configurações dos parâmetros de filtragem de replicação no grupo de parâmetros associado à réplica de leitura.

    Para obter instruções, consulte Visualizar valores de parâmetros para um grupo de parâmetros de banco de dados no Amazon RDS.

  • Em um cliente MySQL, conecte-se à réplica de leitura e execute a instrução SHOW REPLICA STATUS.

    Na saída, os campos a seguir mostram os filtros de replicação para a réplica de leitura:

    • Replicate_Do_DB

    • Replicate_Ignore_DB

    • Replicate_Do_Table

    • Replicate_Ignore_Table

    • Replicate_Wild_Do_Table

    • Replicate_Wild_Ignore_Table

    Para obter mais informações sobre esses campos, consulte Verificar o status da replicação na documentação do MySQL.

    nota

    As versões anteriores do MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.