¿Cómo hacer que el clúster MySQL sea completamente a prueba de fallos?

¿Cómo hacer que el clúster MySQL sea completamente a prueba de fallos?

Así que quiero configurar un servidor de base de datos MySQL con alta disponibilidad; por eso conseguí dos dispositivos (Banana Pi) y seguí un tutorial sobre cómo instalar el software de clúster MySQL. Sé que una constelación de solo dos dispositivos no es exactamente cómo se debe usar el clúster MySQL, pero para ahorrar costos de hardware solo compré esos dos dispositivos por ahora.

Hasta ahora tengo la siguiente configuración (sqlnode1 y sqlnode2 son los nombres de host de los dispositivos):

Nodos de gestión (ndb_mgmd):

  • sqlnode1 (ID de nodo: 1)
  • sqlnode2 (ID de nodo: 2)

Motores de almacenamiento (ndbd):

  • sqlnode1: configurado para usar el nodo de administración en localhost (id de nodo: 3)
  • sqlnode2: configurado para usar el nodo de administración en localhost (id de nodo: 4)

Servidores MySQL (mysqld):

  • sqlnode1: configurado para usar ambos nodos ndbd (id de nodo: 5)
  • sqlnode2: configurado para usar ambos nodos ndbd (id de nodo: 6)

Básicamente, cada dispositivo tiene ndb_mgmd, ndbd y mysqld en ejecución.

Lo que me gustaría lograr es que si uno de los dispositivos falla, el otro dispositivo debería ser completamente utilizable (por algunas razones muy específicas no puedo usar una replicación de base de datos simple aquí).

Una vez que inicio todos los componentes, todo funciona bien. Si cambio datos en un host MySQL, el otro aplica los cambios inmediatamente (y viceversa).

Sin embargo, si desconecto el cable LAN de uno de los dispositivos, sucede lo siguiente:

  • Desconexión de sqlnode2: el nodo en funcionamiento (sqlnode1) se bloquea durante un breve período de tiempo y luego continúa funcionando correctamente (que es básicamente lo que quiero)
  • Desconexión de sqlnode1: el nodo en funcionamiento (sqlnode2) se bloquea durante un breve período de tiempo y luegono funciona en absoluto- todas las consultas terminan en "4009 Cluster Failure" y las consultas solo comienzan a funcionar nuevamente después de restaurar la conexión de red del nodo que se desconectó. Después de eso, monitorear el demonio ndb_mgmd muestra que el ID de nodo 4 (ndbd en sqlnode2) se ha visto obligado a cerrar.

En resumen, todo el sistema parece depender de sqlnode1 y realmente me pregunto por qué sucede esto porque pensé que si un componente se cae (y hay otro del mismo tipo disponible), todo continúa ejecutándose.

Seguí este tutorial para configurar dos nodos de administración diferentes:http://www.clusterdb.com/mysql-cluster/deploying-mysql-cluster-over-multiple-hosts

¿Yo me perdí algo? ¿O tal vez no entendí bien cómo funciona la agrupación en clústeres de MySQL?

Respuesta1

No he usado Mysql Cluster, pero deberías poder realizar la replicación en él, además, MySQL Cluster hace bastante más de lo que probablemente necesites, si todo lo que necesitas es replicación. El clúster MySQL tiene la capacidad de enrutar a diferentes servidores SQL sobre la marcha si uno falla, lo que reduce la necesidad de modificar los registros DNS del nombre del host cada vez o configurar un servidor SQL temporal o simplemente dejarlo inactivo hasta que se solucione. También puede hacer otras cosas. Entonces, para ayudarlo, le sugiero que utilice la edición comunitaria de MySQL, ya que es más fácil de usar que el clúster MySQL.

Tome la edición de la comunidad mysql, esto le permitirá tener replicación, por lo tanto, puede configurar 1 servidor mysql como maestro donde se edita todo y el segundo servidor mysql es el esclavo y puede simplemente recuperar lo que tiene el maestro en un intervalo configurable. . También puedes agregar fácilmente más esclavos en el futuro. Además, los esclavos no necesariamente tienen que estar en máquinas separadas, puede ejecutar más de 1 instancia de MySQL. Sin embargo, esto anularía el propósito de replicación y ser a prueba de fallos. Lo más probable es que esto sea lo que estás buscando. Además, mysql tiene una guía en su sitio web para configurar la replicación para la edición comunitaria de mysql.

Servidor comunitario MySQL

Respuesta2

Resolví mis problemas cambiando al clúster Galera MySQL, que parece hacer exactamente lo que quiero/necesito.

información relacionada