La replicación de región cruzada en MySQL, un método para copiar datos de forma asincrónica de una base de datos primaria en una región geográfica a una o más bases de datos de réplicas en diferentes regiones, afecta el rendimiento a través de varios factores vinculados a la latencia de la red, el lag de replicación, la distribución de la carga de trabajo y la asignación de recursos.
LATENCIA Y REPLICACIÓN DE RED
El impacto del rendimiento primario surge de una mayor latencia de red entre regiones. Dado que la replicación de la región cruzada se basa en enviar los eventos de registro binario que contienen cambios de datos en los enlaces de red de larga distancia, la distancia física puede causar un retraso de propagación significativo. Esto conduce a un mayor retraso de replicación, donde las réplicas quedan detrás de las primarias en la aplicación de cambios. El retraso de la replicación puede afectar la consistencia de lectura en aplicaciones que dependen de los datos actualizados de las réplicas y pueden aumentar el tiempo de conmutación por error en los escenarios de recuperación de desastres.
El retraso de la replicación ocurre debido a múltiples causas:
- El servidor principal no envía cambios lo suficientemente rápido.
- La red retrasa en la transferencia de cambios.
- La incapacidad del servidor de réplica para aplicar cambios rápidamente.
El retraso total observado se debe tanto a la latencia de red y al procesamiento. Las herramientas de monitoreo rastrean las métricas de red como el retraso de la red y el retraso de la réplica para diagnosticar cuellos de botella.
Impacto del servidor de réplica y uso de recursos
En el lado de la réplica, la aplicación de los cambios desde el primario implica el trabajo de E/S y CPU, lo que puede afectar el rendimiento general de la réplica, especialmente si también está manejando consultas de lectura de aplicación simultáneamente. La alta carga de replicación puede conducir a la contención y la saturación de recursos, desacelerando los tiempos de respuesta de la consulta en la réplica.
El uso de hilos de replicación paralela en la réplica puede aliviar algunos de los retrasos de la aplicación aplicando múltiples transacciones simultáneamente, mejorando el rendimiento de la replicación. Además, la configuración de opciones como la descarga de alto rendimiento (ajustar los parámetros `innodb_flush_log_at_trx_commit` y` sync_binlog`) puede mejorar la eficiencia de la escritura y la replicación.
Impacto en el rendimiento del servidor primario
El servidor principal también incurre en un impacto de carga debido a la replicación. Debe escribir todos los cambios en el registro binario para réplicas aguas abajo, que es una sobrecarga adicional además del procesamiento transaccional normal. Con muchas réplicas conectadas, especialmente la región transversal donde el rendimiento de la red y la confiabilidad varían, el primario puede experimentar un mayor consumo de recursos manteniendo flujos de replicación.
Una forma de mitigar esto es una jerarquía de replicación, donde el principal se replica a una sola réplica intermedia, que luego ventilan a réplicas adicionales, reduciendo la carga en la primaria.
Distribución de carga de trabajo y escalabilidad
La replicación de la región cruzada admite la escala de lectura de las cargas de trabajo más cerca de los usuarios en diferentes regiones globales al proporcionar replicas de lectura cerca de su ubicación, mejorando las latencias de usuario final. Sin embargo, escribir cargas de trabajo todavía convergen en la instancia primaria, que puede convertirse en un cuello de botella.
Grandes transacciones en la primaria que actualizan muchas filas pueden causar picos en los datos de replicación, lo que lleva a explosiones de replicación aplicar el trabajo en las réplicas y causar retraso de replicación. Romper transacciones grandes en lotes más pequeños ayuda a reducir la tensión de replicación.
Consideraciones de diseño de esquema y consulta
Las tablas sin claves primarias o con operaciones de DDL pesadas pueden degradar el rendimiento de la replicación o causar cerraduras exclusivas, lo que agrava problemas de latencia en todas las regiones. El uso de la replicación basada en la fila, que requiere claves primarias para la eficiencia, generalmente se recomienda.
Los niveles de aislamiento de consultas en las réplicas también afectan la velocidad de la aplicación de replicación, con niveles de aislamiento más bajos (por ejemplo, 'Read Committed`) generalmente permitiendo una aplicación más rápida de eventos de replicación que los niveles más altos que mantienen bloqueos por más tiempo.
Consideraciones de red y costos
La replicación de la región cruzada implica la transferencia de datos en las redes de proveedores de nubes, que pueden incurrir en costos y limitaciones de ancho de banda. Esto debe tenerse en cuenta en el diseño y puede restringir indirectamente la velocidad y la frecuencia de replicación.
Resumen de impactos de rendimiento
- Aumento del retraso de replicación debido a la distancia física y la latencia de la red.
- Un mayor consumo de recursos en primaria para el registro binario y en réplicas para aplicar cambios.
- La degradación del rendimiento de la consulta potencial en las réplicas si la replicación es intensiva en recursos.
- El equilibrio de carga a través de las jerarquías de replicación puede reducir los cuellos de botella.
- Impacto de grandes transacciones y diseño de esquemas en la eficiencia de replicación.
- Complicaciones con el costo y el rendimiento de transferencia de datos en entornos en la nube.