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.
Tópicos
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âmetroreplicate-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âmetroreplicate-do-db
oureplicate-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âmetroreplicate-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âmetroreplicate-do-db
oureplicate-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âmetroreplicate-do-table
oureplicate-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:
-
Para obter informações gerais, consulte Opções e variáveis do servidor de réplica
. -
Para obter informações sobre como os parâmetros de filtragem de replicação de banco de dados são avaliados, consulte Avaliação de opções de replicação em nível de banco de dados e log binário
. -
Para obter informações sobre como os parâmetros de filtragem de replicação de tabela são avaliados, consulte Avaliação de opções de replicação em nível de tabela
.
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, masParameterValue='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. -