indexes crossfit clustered cluster database load-balancing cluster-computing database-agnostic

database - crossfit - clustered indexes



Grupo de bases de datos y balanceo de carga (4)

¿Qué es la agrupación de bases de datos? Si permite que la misma base de datos esté en 2 servidores diferentes, ¿cómo mantienen los datos sincronizados? ¿Y cómo difiere esto del balanceo de carga desde la perspectiva del servidor de base de datos?


Desde el punto de vista de SQL Server:

La agrupación le dará una configuración activa - pasiva. Es decir, en un clúster de 2 nodos, uno de ellos será el activo (que sirve) y el otro será pasivo (esperando tomar el control cuando el nodo activo falle). Es una alta disponibilidad desde el punto de vista del hardware.

Puede tener un clúster activo-activo, pero requerirá varias instancias de SQL Server ejecutándose en cada nodo. (es decir, la instancia 1 en el nodo A que falla a la instancia 2 en el nodo B, y la instancia 1 en el nodo B que falla a la instancia 2 en el nodo A).

El equilibrio de carga (al menos desde el punto de vista de SQL Server) no existe (al menos en el mismo sentido de equilibrio de carga del servidor web). No puedes equilibrar la carga de esa manera. Sin embargo, puede dividir su aplicación para que se ejecute en alguna base de datos en el servidor 1 y también se ejecute en alguna base de datos en el servidor 2, etc. Esta es la media principal del "equilibrio de carga" en el mundo SQL.


La agrupación de bases de datos es en realidad un modo de replicación sincrónica entre dos o posiblemente más nodos con una funcionalidad adicional de tolerancia a fallas añadida a su sistema, y ​​eso también en una arquitectura de nada compartida. Al compartir nada, significa que los nodos individuales en realidad no comparten ningún recurso físico como el disco o la memoria.

En lo que se refiere a mantener sincronizados los datos, hay un servidor de administración al que todos los nodos de datos están conectados junto con el nodo SQL para lograr esto (hablando específicamente de MySQL).

Ahora sobre las diferencias: el balanceo de carga es solo un resultado que se puede lograr a través de la agrupación en clúster, los otros incluyen alta disponibilidad, escalabilidad y tolerancia a fallas.


La agrupación de bases de datos es un término algo ambiguo, algunos proveedores consideran que un clúster que tiene dos o más servidores comparte el mismo almacenamiento, otros llaman a un clúster un conjunto de servidores replicados.

La replicación define el método mediante el cual un conjunto de servidores permanece sincronizado sin tener que compartir el almacenamiento para poder dispersarse geográficamente. Hay dos formas principales de hacerlo:

  • replicación master-master (o multi-master): cualquier servidor puede actualizar la base de datos. Por lo general, se trata de un módulo diferente dentro de la base de datos (o de un software completamente diferente que se ejecuta sobre ellos en algunos casos).

    Lo malo es que es muy difícil hacerlo bien, y algunos sistemas pierden propiedades ACID cuando están en este modo de replicación.

    Lo positivo es que es flexible y puede soportar el fallo de cualquier servidor mientras se mantiene actualizada la base de datos.

  • Replicación maestro-esclavo: solo hay una copia única de datos autoritativos, que se envía a los servidores esclavos.

    Lo malo es que es menos tolerante a fallas, si el maestro muere, no hay más cambios en los esclavos.

    La ventaja es que es más fácil de hacer que multi-master y generalmente conserva las propiedades ACID.

El equilibrio de carga es un concepto diferente, consiste en distribuir las consultas enviadas a esos servidores para que la carga se distribuya lo más uniformemente posible. Por lo general, se realiza en la capa de aplicación (o con un grupo de conexiones). La única relación directa entre la replicación y el equilibrio de carga es que necesita alguna replicación para poder equilibrar la carga, de lo contrario tendría un solo servidor.


La agrupación en clúster usa algún tipo de almacenamiento compartido (una caja de unidades o una SAN, por ejemplo) y pone dos interfaces de bases de datos en ella. Los servidores frontales comparten una dirección IP y un nombre de red de clúster que los clientes utilizan para conectarse, y deciden entre ellos quién está a cargo de atender las solicitudes de los clientes.

Si pregunta por un servidor de base de datos en particular, agréguelo a su pregunta y podemos agregar detalles sobre su implementación, pero en esencia, eso es lo que es la agrupación.