¿Cómo logra MySQL una alta disponibilidad?
Cuando consideramos la arquitectura de alta disponibilidad de la base de datos MySQL, debemos considerar principalmente los siguientes aspectos:
Aquí no discutiremos la clasificación de alta disponibilidad en detalle. Sólo alta disponibilidad común. Las ventajas y desventajas de la solución y la elección de la solución de alta disponibilidad.
2. Solución de alta disponibilidad
2.1. Replicación semisincrónica maestro-esclavo o maestro-esclavo
Utilice una base de datos de dos nodos para construir unidireccional. o replicación semisincrónica bidireccional. En las versiones posteriores a la 5.7, la replicación semisíncrona nativa de MySQL es más confiable debido a la introducción de algunas características nuevas, como la replicación sin pérdidas y la replicación lógica de subprocesos múltiples.
La arquitectura común es la siguiente:
Generalmente se usa junto con software de terceros, como proxy y keepalived, y se puede usar para monitorear el estado de la base de datos y ejecutar un serie de comandos de gestión. Si la base de datos principal falla, aún puede usar la base de datos después de cambiar a la base de datos en espera.
Ventajas:
Desventajas:
2.2. Optimización de la replicación semisincrónica
El mecanismo de replicación semisincrónica es confiable. Si la replicación semisincrónica ha tenido efecto, los datos pueden considerarse consistentes. Sin embargo, debido a algunas razones objetivas, como las fluctuaciones de la red, la replicación semisincrónica expiró y cambió a replicación asincrónica. En este momento, no se puede garantizar la coherencia de los datos. Por lo tanto, garantizar la replicación semisincrónica tanto como sea posible puede mejorar la coherencia de los datos.
Esta solución también utiliza una arquitectura de dos nodos, pero tiene funciones optimizadas basadas en la replicación semisincrónica original, lo que hace que el mecanismo de replicación semisincrónica sea más confiable.
El plan de optimización de referencia es el siguiente:
Después de que se agote el tiempo de espera, la replicación semisincrónica se desconectará. Al establecer la replicación nuevamente, se establecen dos canales al mismo tiempo. Uno de los canales de replicación semisincrónicos comienza a replicarse desde la posición actual para garantizar que el esclavo conozca el progreso del host actual. Otro canal de replicación asincrónica comienza a ponerse al día con los datos atrasados del esclavo. La replicación semisincrónica se reanuda cuando el canal de replicación asíncrona alcanza el inicio de la replicación semisincrónica.
Construya dos canales de replicación semisincrónica. En circunstancias normales, el canal semisincrónico que se conecta al servidor de archivos no está habilitado. Cuando el problema de red de la replicación semisincrónica maestro-esclavo se degrada, el canal semisincrónico se degrada. El canal de replicación sincrónico con el servidor de archivos está habilitado. Cuando se reanuda la replicación semisincrónica maestro-esclavo, se cierra el canal de replicación semisincrónica al servidor de archivos.
Ventajas:
Desventajas:
2.3 Optimización de la arquitectura de alta disponibilidad
Ampliar la base de datos de dos nodos a una base de datos de múltiples nodos. o clúster de base de datos de múltiples nodos. Puede elegir un clúster con un maestro y dos esclavos, un maestro y varios esclavos, o varios maestros y varios esclavos según sus necesidades.
Dado que la replicación semisincrónica se considera exitosa solo después de recibir una respuesta exitosa de la estación esclava, la confiabilidad de la replicación semisincrónica de múltiples esclavos es mejor que la de la replicación semisincrónica de un solo esclavo. Además, la probabilidad de que varios nodos caigan al mismo tiempo es menor que la de un solo nodo, por lo que se puede considerar que la arquitectura de múltiples nodos es superior a la arquitectura de dos nodos hasta cierto punto.
Sin embargo, debido a la gran cantidad de bases de datos, se requiere un software de administración de bases de datos para garantizar la mantenibilidad de la base de datos. Puede elegir MMM, MHA o varias versiones de agentes, etc. Los escenarios comunes son los siguientes:
El administrador de MHA detectará periódicamente el nodo maestro en el clúster. Cuando el dispositivo maestro falla, puede actualizar automáticamente el dispositivo esclavo con los datos más recientes al nuevo dispositivo maestro y luego redirigir todos los demás dispositivos esclavos al nuevo dispositivo maestro. Todo el proceso de conmutación por error es completamente transparente para la aplicación.
El nodo MHA se ejecuta en cada servidor MySQL. Su función principal es procesar registros binarios durante la conmutación para garantizar la menor pérdida de datos posible durante la conmutación.
MHA también se puede extender a los siguientes clústeres de múltiples nodos:
Ventajas:
Desventajas:
Zookeeper utiliza algoritmos distribuidos para garantizar la coherencia de los datos de agrupación. Zookeeper puede garantizar eficazmente la alta disponibilidad de los agentes y evitar particiones de red.
Ventajas:
Desventajas:
2.4.***Disfruta del espacio de almacenamiento
* * *El almacenamiento compartido implementa un servidor de base de datos Desacoplamiento desde dispositivos de almacenamiento. La sincronización de datos entre diferentes bases de datos ya no depende de la función de replicación nativa de MySQL, sino que utiliza la sincronización de datos del disco para garantizar la coherencia de los datos.
El concepto de SAN es permitir una conexión de red directa de alta velocidad entre dispositivos de almacenamiento y procesadores (servidores), y lograr un almacenamiento centralizado de datos a través de esta conexión. La arquitectura común es la siguiente:
Cuando se usa * * * para disfrutar del almacenamiento, el servidor MySQL puede montar el sistema de archivos y ejecutarse normalmente. Si se cierra la biblioteca principal, la biblioteca en espera puede montar el mismo sistema de archivos para garantizar que las bibliotecas principal y en espera utilicen los mismos datos.
Ventajas:
Desventajas:
DRBD es una solución de almacenamiento de replicación de bloques basada en software y en red, que se utiliza principalmente para discos y discos entre servidores espejo. para particiones y volúmenes lógicos. Cuando el usuario escribe datos en el disco local, los datos también se enviarán al disco de otro host en la red, de modo que los datos del host local (nodo principal) y el host remoto (nodo en espera) se puedan sincronizar en tiempo real. La arquitectura común es la siguiente:
Cuando ocurre un problema en el host local, una copia de los mismos datos aún permanece en el host remoto y se puede usar continuamente para garantizar la seguridad de los datos.
DRBD es una tecnología de replicación síncrona de nivel rápido implementada a través del módulo del kernel de Linux, que puede lograr el mismo efecto de almacenamiento que SAN.
Ventajas:
Desventajas:
2.5. Protocolo distribuido
Los protocolos distribuidos pueden resolver muy bien el problema de la coherencia de los datos. Las soluciones comunes son las siguientes:
El clúster MySQL es la solución oficial de implementación del clúster. Utiliza el motor de almacenamiento NDB para realizar copias de seguridad de datos redundantes en tiempo real para lograr una alta disponibilidad y coherencia de los datos de la base de datos.
Ventajas:
Desventajas:
El clúster MySQL de alta disponibilidad basado en Galera es una solución de clúster MySQL de sincronización de datos múltiples maestros que es fácil de usar y requiere Sin punto único de falla, alta disponibilidad. Las arquitecturas comunes son las siguientes:
Ventajas:
Desventajas:
El algoritmo Paxos resuelve cómo los sistemas distribuidos pueden llegar a un acuerdo sobre una pregunta de cierto valor (resolución). Este algoritmo se considera el más eficiente de su tipo. La combinación de Paxos y MySQL puede lograr una gran coherencia en los datos distribuidos de MySQL. Las arquitecturas comunes son las siguientes:
Ventajas:
Desventajas:
Resumen
A medida que la demanda de las personas por la coherencia de los datos continúa aumentando, Más y se están probando más métodos para resolver el problema de la coherencia de los datos distribuidos, como la optimización del propio MySQL, la optimización de la arquitectura del clúster MySQL, la introducción de algoritmos Paxos, Raft, 2PC, etc.
El método de utilizar algoritmos distribuidos para resolver problemas de coherencia de datos en bases de datos MySQL es cada vez más aceptado por la gente, y también lo son una serie de productos maduros, como PhxSQL, MariaDB Galera Cluster, Percona XtraDB Cluster, etc. cada vez más popular.
Con la replicación oficial del grupo MySQL GA, el uso de protocolos distribuidos para resolver problemas de coherencia de datos se ha convertido en una dirección generalizada. Se espera que se propongan cada vez más soluciones excelentes y que el problema de alta disponibilidad de MySQL pueda resolverse mejor.
Solución distribuida tidb
Los lvs principales sirven como middleware de separación de lectura y escritura VIP