La Alta disponibilidad de MySQL es una opción que se puede seleccionar para permitir que su base de datos de MySQL siga estando disponible en caso de que se produzca un fallo o una interrupción. Esta característica le permite establecer unos requisitos mayores de tiempo de actividad y una tolerancia cero a la pérdida de datos. En este artículo, veremos el significado del concepto general de alta disponibilidad y cómo funciona la opción de Alta disponibilidad de MySQL.
¿Qué es la alta disponibilidad?
La alta disponibilidad es la capacidad de un sistema o servicio de continuar funcionando o de seguir estando disponible cuando se produce un fallo o una interrupción. Un sistema de alta disponibilidad garantiza que los sistemas y las aplicaciones de misión crítica de una organización estén siempre listos y en funcionamiento. Es especialmente importante para las organizaciones de sectores como la sanidad, las finanzas y la aviación, donde un fallo en un sistema de misión crítica puede tener consecuencias graves.
La alta disponibilidad se suele expresar como un porcentaje del tiempo de actividad definido por los acuerdos de nivel de servicio (SLA), donde un resultado de 100 representa un sistema que no falla nunca. Como es prácticamente inalcanzable, la mayoría de las organizaciones aspiran a tener una disponibilidad de “cinco nueves”, es decir, del 99,999%.
¿Cómo se consigue la alta disponibilidad en MySQL?
Un sistema de alta disponibilidad tiene que ser capaz de recuperarse al instante si se produce un error. Una arquitectura de alta disponibilidad exige que al menos tres elementos básicos funcionen conjuntamente para garantizar la recuperabilidad y la alta disponibilidad.
Detección de fallos
MySQL tiene una opción de Alta disponibilidad que permite que las aplicaciones cumplan los requisitos de un mayor tiempo de actividad (y de tolerancia cero a la pérdida de datos). Cuando la opción de Alta disponibilidad está activada, el sistema MySQL crea tres instancias en diferentes dominios de error o zonas de disponibilidad.
Los datos se replican en las tres instancias, usando la Replicación de grupo de MySQL y la aplicación se conecta a la instancia principal para leer y escribir los datos en y desde la base de datos. Si se produce un fallo, el sistema activa una conmutación por error automática a una instancia secundaria en unos minutos.
Conmutación por error
El mecanismo de conmutación por error transfiere los servicios a una instancia replicada. Si hay más de una instancia de copia de seguridad disponible, el mecanismo de conmutación por error elige la mejor para convertirla en el nodo principal.
Un mecanismo de redireccionamiento
Una vez que se ha producido la conmutación por error a una instancia secundaria, la funcionalidad de Alta disponibilidad redirige todas las conexiones de aplicación y de usuario a lo que ahora es el nuevo nodo principal. Y también redirige todas las consultas desde el antiguo nodo principal hasta la nueva base de datos principal.
Alta disponibilidad de MySQL: tiempo de actividad
El tiempo de actividad es el tiempo durante el cual un sistema está disponible y funciona correctamente y se expresa como un porcentaje del tiempo total que se espera que el sistema esté operativo. Un tiempo de actividad elevado significa que el sistema está disponible y que funciona tal como se espera la mayor parte del tiempo.
El tiempo de actividad que puede esperar con los diferentes niveles de Alta disponibilidad de MySQL dependerá de la solución de alta disponibilidad (HA por sus siglas en inglés) concreta que implemente.
La Replicación de MySQL
La Replicación de MySQL le permite configurar múltiples servidores para que proporcionen redundancia y conmutación por error, para lograr unos tiempos de actividad mayores que los de un servidor de MySQL sin función de Alta disponibilidad. Una configuración de maestro/esclavo utiliza un único servidor maestro que acepta lecturas y escrituras y uno o más servidores esclavos de solo lectura. Los datos del servidor maestro se replican de forma asincrónica en los servidores esclavos.
Para implementar la conmutación por error, tendrá que configurar uno o más servidores esclavos como servidores en espera que se pueden promocionar a servidor maestro en caso de fallo. La conmutación por error suele ser un proceso manual en el que hay que promocionar el nodo esclavo a nodo maestro, cambiando el estado del nodo esclavo promocionado y pasándolo al modo de lectura-escritura, para que pueda aceptar solicitudes.
Como la conmutación por error se realiza manualmente, tarda más tiempo y es más propensa a los errores humanos, lo que genera unos tiempos de interrupción más largos. La Replicación de MySQL también usa la replicación asincrónica, lo que significa que si el maestro falla, es posible que las transacciones confirmadas en el maestro todavía no se hayan replicado en los servidores esclavos. Si hay una pérdida de datos críticos, es necesario restaurar los datos, lo que prolonga el plazo de tiempo que el sistema está fuera de servicio.
La Replicación de grupo de MySQL
La Replicación de grupo de MySQL le permite lograr unos tiempos de actividad más elevados que la Replicación de MySQL. Con la Replicación de grupo de MySQL, configura múltiples servidores de MySQL en un grupo, de manera que uno de ellos es designado como servidor principal y los otros como servidores secundarios. Cada servidor del grupo conserva una copia de los datos y utiliza la replicación para garantizar que las copias se mantienen sincronizadas.
Si el servidor principal queda fuera de servicio, los servidores secundarios del grupo detectan automáticamente el fallo e inician el proceso de conmutación por error. Uno de los servidores secundarios es promocionado automáticamente a nuevo servidor principal y empieza a atender las solicitudes de los clientes. Los otros miembros secundarios del grupo reciben ahora las actualizaciones del nuevo servidor principal y siguen procesando las solicitudes de lectura de los clientes.
Si el servidor que ha fallado vuelve a estar en línea, se une automáticamente al grupo como servidor secundario.
Como la detección del fallo y la conmutación por error se producen automáticamente con la Replicación de grupo de MySQL, el tiempo de inactividad es mínimo y los usuarios y las aplicaciones normalmente no detectan que se ha producido una interrupción.
El Clúster de MySQL
Una solución de alta disponibilidad de Clúster de MySQL ofrece el mayor nivel de tiempo de actividad. Este sistema de base de datos distribuida de alta disponibilidad, junto con la conmutación por error automática y el equilibrio de carga, ofrece unos elevados niveles de disponibilidad, rendimiento y escalabilidad y está diseñado para proporcionar un tiempo de inactividad cercano a cero.
El Clúster de MySQL usa tres tipos de nodos que funcionan conjuntamente para almacenar y administrar los datos:
- Nodos de datos: almacenan los datos y manejan las solicitudes de lectura y escritura.
- Nodos de servidor de MySQL: reciben las solicitudes de las aplicaciones cliente, las procesan en los nodos de datos y luego devuelven el resultado a los clientes.
- Nodos de administración: gestionan el funcionamiento del clúster y se encargan de la conmutación por error y la recuperación si se produce un fallo.
Si uno o más nodos de un clúster fallan, el clúster detecta automáticamente el problema y pone en marcha el proceso de conmutación por error. Todo el proceso suele desarrollarse en un segundo como máximo, tras el fallo, sin interrumpir el servicio a las aplicaciones cliente. El clúster sigue funcionando con normalidad, prácticamente sin tiempo de inactividad.