Instruções DDL de longa duração — como ALTER TABLE em tabelas grandes — podem paralisar um banco de dados secundário por centenas de segundos enquanto ele aguarda a conclusão e o commit do primário. A replicação em tempo real de binlog (BRR) elimina esse atraso ao fazer com que o primário notifique o secundário para iniciar a execução da instrução DDL em paralelo, em vez de esperar pelo sinal de commit. Em testes de benchmark com uma tabela de 80 milhões de linhas e 23 GB, o secundário apresentou 277 segundos de atraso de replicação sem BRR e zero atraso com o BRR ativado.
Como funciona
O MySQL utiliza replicação lógica: após o commit de uma transação no banco de dados primário, o evento binlog resultante é enviado ao secundário para reprodução. Para instruções DDL, o payload do binlog é pequeno (um Gtid_log_event e um Query_log_event), portanto o tempo de transmissão é insignificante. O gargalo reside no próprio tempo de execução da DDL — o secundário não pode iniciar até que o primário faça o commit.

O BRR resolve essa questão na source. Quando o primário inicia uma instrução DDL, ele envia imediatamente um evento binlog Brr — um novo tipo de evento introduzido por este recurso — ao secundário via transmissão em tempo real. O secundário começa a executar a DDL em paralelo usando threads Brr Worker dedicadas, independentes das Worker threads padrão do MySQL. Assim que o secundário conclui a maior parte do trabalho da DDL, ele aguarda o resultado do primário:
Se o primário for bem-sucedido, ele sinaliza ao secundário para efetuar o commit.
Se o primário falhar, ele sinaliza ao secundário para reverter a operação.
O atraso total de replicação reduz-se a uma transmissão de rede para o banco de dados secundário mais o tempo de commit da DDL — geralmente dezenas de milissegundos.

O evento binlog Brr não é gravado no binlog nem no relay log, portanto não afeta sistemas downstream que consomem logs binários.
Pré-requisitos
Antes de ativar o BRR, verifique se:
A instância executa o RDS for MySQL 8.0, versão secundária do mecanismo 20250731 ou posterior. Se necessário, atualize a versão secundária do mecanismo ou atualize a versão do banco de dados.
O recurso de transmissão em tempo real está ativado na instância.
Instruções DDL compatíveis
As instruções DDL abrangidas pelo BRR dependem da sua versão secundária do mecanismo:
|
Versão secundária do mecanismo |
Instruções compatíveis |
|
20250731 ou posterior |
|
|
20251031 ou posterior |
Ative o BRR
Defina os seguintes parâmetros nos bancos de dados primário e secundário ao definir parâmetros da instância. As alterações entram em vigor imediatamente — não é necessário reiniciar a instância.
Banco de dados primário
|
Parâmetro |
Descrição |
Padrão |
|
|
Defina como |
— |
|
|
O BRR aplica-se apenas a instruções DDL cujo tempo de execução exceda este limiar (em milissegundos). N é um número inteiro maior ou igual a 0. |
|
Banco de dados secundário
|
Parâmetro |
Descrição |
Padrão |
|
|
Quantidade de threads Brr Worker no secundário. Deve ser um número inteiro maior ou igual a 1. |
— |
Resultados de benchmark
O teste abaixo utilizou uma única tabela com 80.000.000 registros (23 GB) e executou ALTER TABLE sbtest1 ENGINE=InnoDB para reconstruí-la. O primário executou a DDL às 16:21:35 e novamente às 16:32:50. A instância de teste usava a versão secundária do mecanismo 20251031.
|
BRR ativado |
Atraso de replicação do secundário |
|
Não |
277 segundos |
|
Sim |
0 segundos |
