Todos los productos
Search
Centro de documentos

ApsaraDB RDS:Optimización del retraso de replicación DDL

Última actualización: Sep 03, 2026

Las instrucciones DDL de larga duración, como ALTER TABLE en tablas grandes, pueden bloquear una base de datos secundaria durante cientos de segundos mientras espera que la primaria finalice y confirme la transacción. La replicación en tiempo real de binlog (BRR) elimina este retraso al hacer que la primaria notifique a la secundaria para que comience a ejecutar la instrucción DDL en paralelo, en lugar de esperar la señal de confirmación. En pruebas de rendimiento con una tabla de 80 millones de filas y 23 GB, la secundaria experimentó 277 segundos de retraso de replicación sin BRR y cero segundos con BRR habilitado.

Funcionamiento

MySQL utiliza replicación lógica: después de que una transacción se confirma en la base de datos primaria, el evento de binlog resultante se envía a la secundaria para su reproducción. Para las instrucciones DDL, la carga útil del binlog es pequeña (un Gtid_log_event y un Query_log_event), por lo que el tiempo de transmisión es insignificante. El cuello de botella es el tiempo de ejecución de la propia DDL, ya que la secundaria no puede comenzar hasta que la primaria confirme la transacción.

Standard DDL replication flow

BRR aborda este problema en el origen. Cuando la primaria inicia una instrucción DDL, envía inmediatamente un evento de binlog Brr (un nuevo tipo de evento introducido por esta función) a la secundaria mediante transmisión en tiempo real. La secundaria comienza a ejecutar la DDL en paralelo mediante hilos Brr Worker dedicados, independientes de los hilos Worker estándar de MySQL. Una vez que la secundaria completa la mayor parte del trabajo de la DDL, espera el resultado de la primaria:

  • Si la primaria tiene éxito, indica a la secundaria que confirme la transacción.

  • Si la primaria falla, indica a la secundaria que revierta la transacción.

El retraso total de replicación se reduce a una transmisión de red hacia la base de datos secundaria más el tiempo de confirmación de la DDL, lo cual suele ser de decenas de milisegundos.

BRR parallel DDL replication flow

El evento de binlog Brr no se escribe en el binlog ni en el registro de retransmisión, por lo que no afecta a los sistemas posteriores que consumen registros binarios.

Requisitos previos

Antes de habilitar BRR, asegúrese de cumplir con lo siguiente:

Instrucciones DDL compatibles

Las instrucciones DDL cubiertas por BRR dependen de la versión menor del motor:

Versión menor del motor

Instrucciones compatibles

20250731 o posterior

ALTER TABLE

20251031 o posterior

ALTER TABLE y OPTIMIZE TABLE

Habilitar BRR

Establezca los siguientes parámetros tanto en la base de datos primaria como en la secundaria mediante configuración de parámetros de instancia. Los cambios surten efecto de inmediato y no es necesario reiniciar la instancia.

Base de datos primaria

Parámetro

Descripción

Valor predeterminado

loose_binlog_realtime_apply_ddl_source_enabled

Establézcalo en ON para habilitar BRR en la primaria.

—

loose_binlog_realtime_ddl_time_limit

BRR se aplica solo a instrucciones DDL cuyo tiempo de ejecución supera este umbral (en milisegundos). N es un entero mayor o igual a 0.

1000

Base de datos secundaria

Parámetro

Descripción

Valor predeterminado

loose_binlog_realtime_apply_workers

Número de hilos Brr Worker en la secundaria. Debe ser un entero mayor o igual a 1.

—

Resultados de pruebas de rendimiento

En la siguiente prueba se utilizó una sola tabla con 80,000,000 registros (23 GB) y se ejecutó ALTER TABLE sbtest1 ENGINE=InnoDB para reconstruirla. La primaria ejecutó la DDL a las 16:21:35 y nuevamente a las 16:32:50. La instancia de prueba utilizó la versión menor del motor 20251031.

BRR habilitado

Retraso de replicación de la secundaria

No

277 segundos

Sí

0 segundos

Benchmark results showing replication delay with and without BRR