La alta disponibilidad de MySQL es una opción que puede seleccionar para permitir que su base de datos MySQL permanezca disponible en caso de una falla o interrupción. La función le permite establecer requisitos de tiempo de actividad más altos y tolerancia de pérdida de datos cero. En este artículo, analizaremos lo que significa el 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 y permanecer disponible cuando se produce una falla o una interrupción. Un sistema altamente disponible garantiza que las aplicaciones y los sistemas de misión crítica de una organización estén siempre en funcionamiento. Es especialmente importante para organizaciones en sectores como la salud, las finanzas y la aviación, donde la falla de un sistema de misión crítica podría tener consecuencias graves.
La alta disponibilidad generalmente se expresa como un porcentaje del tiempo de actividad definido por los acuerdos de nivel de servicio (SLA), con un puntaje de 100 que representa un sistema que nunca falla. Debido a que esto es prácticamente inalcanzable, la mayoría de las organizaciones buscan “cinco nueves” o una disponibilidad del 99,999 %.
Cómo MySQL logra una alta disponibilidad
Un sistema altamente disponible debe poder recuperarse instantáneamente si se produce una falla. Una arquitectura de alta disponibilidad requiere al menos tres elementos básicos que funcionen juntos para garantizar la recuperación y la alta disponibilidad:
Detección de fallas
MySQL tiene una opción de alta disponibilidad que permite que las aplicaciones cumplan con los requisitos para un mayor tiempo de actividad (y tolerancia de pérdida de datos cero). Cuando la opción Alta disponibilidad está activada, el sistema MySQL crea tres instancias en diferentes dominios de falla o zonas de disponibilidad.
Los datos se replican entre las tres instancias mediante MySQL Group Replication, y la aplicación se conecta a la instancia principal para leer y escribir datos hacia y desde la base de datos. Si se produce una falla, el sistema activa una conmutación por error automática a una instancia secundaria en cuestión de 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 el mejor para promover al nodo primario.
Un mecanismo de redireccionamiento
Una vez que se produce la conmutación por error a una instancia secundaria, la función Alta disponibilidad redirige todas las conexiones de aplicaciones y usuarios a lo que ahora es el nuevo nodo primario. También redirige todas las consultas del nodo primario anterior a la nueva base de datos primaria.
Alta disponibilidad de MySQL: Tiempo de actividad
El tiempo de actividad es el tiempo que un sistema está disponible y funciona correctamente, y se expresa como un porcentaje del tiempo total que se espera que el sistema esté operativo. El tiempo de actividad alto significa que el sistema está disponible y funciona como se espera la mayor parte del tiempo.
El tiempo de actividad que puede esperar con diferentes niveles de alta disponibilidad de MySQL dependerá de la solución de alta disponibilidad (HA) específica que implemente.
Replicación MySQL
MySQL Replication le permite configurar varios servidores para proporcionar redundancia y conmutación por error para admitir tiempos de actividad más altos que un servidor MySQL sin capacidad 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 asíncronamente en los servidores esclavos.
Para implementar la conmutación por error, deberá configurar uno o más servidores esclavos como esperas que se pueden promover a maestro en caso de una falla. Por lo general, la conmutación por error es un proceso manual en el que debe promover el nodo esclavo al nodo maestro cambiando el estado del esclavo promovido al modo de lectura/escritura para que pueda aceptar consultas.
Debido a que la conmutación por error se realiza manualmente, llevará más tiempo y podría ser propensa a errores humanos, lo que provocará una interrupción más prolongada. MySQL Replication también utiliza replicación asíncrona, lo que significa que si el maestro falla, es posible que las transacciones cometidas en el maestro aún no se hayan replicado en los servidores esclavos. Si hay una pérdida de datos crítica, los datos deberán restaurarse, lo que aumenta el tiempo que el sistema permanece inactivo.
Replicación del grupo MySQL
MySQL Group Replication le permite lograr tiempos de actividad más altos que MySQL Replication. Al usar MySQL Group Replication, configura varios servidores MySQL en un grupo con un servidor designado como servidor primario y los otros servidores como servidores secundarios. Cada servidor del grupo mantiene una copia de los datos y utiliza la replicación para garantizar que las copias permanezcan sincronizadas.
Si el servidor primario falla, los servidores secundarios del grupo detectan automáticamente la falla y comienzan el proceso de conmutación por error. Uno de los servidores secundarios se promociona automáticamente al nuevo servidor primario y comienza a atender las solicitudes de los clientes. Los otros miembros secundarios del grupo ahora reciben actualizaciones del nuevo servidor primario y continúan procesando solicitudes leídas por el cliente.
Si el servidor defectuoso vuelve a estar en línea, se une automáticamente al grupo como servidor secundario.
Debido a que la detección de fallas y la conmutación por error se producen automáticamente con la replicación de grupo MySQL, el tiempo de inactividad es mínimo y los usuarios y las aplicaciones generalmente no saben que se ha producido una interrupción.
clúster MySQL
Una solución MySQL Cluster HA ofrece el más alto nivel de tiempo de actividad. Este sistema de base de datos distribuida y altamente disponible, junto con la conmutación por error automática y el equilibrio de carga, proporciona altos niveles de disponibilidad, rendimiento y escalabilidad, y está diseñado para proporcionar un tiempo de inactividad casi nulo.
MySQL Cluster utiliza tres tipos de nodos que trabajan juntos para almacenar y administrar datos:
- Nodos de datos: Almacene los datos y maneje las consultas de lectura y escritura.
- Nodos del servidor MySQL: Recibir consultas de las aplicaciones del cliente, procesarlas en los nodos de datos y luego devolver el resultado a los clientes.
- Nodos de administración: Administre el funcionamiento del clúster y maneje la conmutación por error y la recuperación si se produce una falla.
Si uno o más nodos de un clúster fallan, el clúster detecta automáticamente el problema y activa el proceso de conmutación por error. Todo el proceso generalmente ocurre en un segundo de una falla, sin interrumpir el servicio a las aplicaciones del cliente. El clúster sigue funcionando de forma normal, prácticamente sin tiempo de inactividad.