Clúster de base de datos y equilibrio de carga

149

¿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 sincronizados los datos? ¿Y cómo difiere esto del equilibrio de carga desde la perspectiva de un servidor de base de datos?

Malik Daud Ahmad Khokhar
fuente

Respuestas:

132

La agrupación de bases de datos es un término un tanto 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 por el cual un conjunto de servidores permanece sincronizado sin tener que compartir el almacenamiento pudiendo 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 ocupa de un módulo diferente dentro de la base de datos (o 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 se encuentran en este modo de replicación.

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

  • replicación maestro-esclavo: solo hay una copia única de datos autorizados, 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.

    Lo positivo es que es más fácil de hacer que multimaestro y generalmente conserva las propiedades de ACID.

El equilibrio de carga es un concepto diferente, consiste en distribuir las consultas enviadas a esos servidores para que la carga se distribuya de la manera más uniforme 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.

Vinko Vrsalovic
fuente
1
Ah, se olvidó de la replicación :) Sí, puede lograr el equilibrio de carga de esa manera en combinación con lógica de nivel de aplicación :). +1
Jimmy Chandra
1
Los documentos de Postgresql se refieren al "grupo de bases de datos" de manera diferente: "Antes de que pueda hacer algo, debe inicializar un área de almacenamiento de la base de datos en el disco. A esto le llamamos un grupo de bases de datos" (SQL usa el término grupo de catálogo). Un grupo de bases de datos es una colección de bases de datos administradas por una sola instancia de un servidor de bases de datos en ejecución ". postgresql.org/docs/8.3/static/creating-cluster.html
Donato
1
¿Qué significan las propiedades ACID, o más bien, qué es exactamente lo que pierdes si no las conservas?
TheStoryCoder
@TheStoryCoder En informática, ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad) es un conjunto de propiedades de transacciones de bases de datos destinadas a garantizar la validez incluso en caso de errores, fallas de energía, etc. En el contexto de bases de datos, una secuencia de base de datos Las operaciones que satisfacen las propiedades ACID (y estas pueden ser percibidas como una sola operación lógica en los datos) se llaman transacciones. Por ejemplo, una transferencia de fondos de una cuenta bancaria a otra, incluso que implique múltiples cambios, como debitar una cuenta y acreditar otra, es una transacción única.
Fizampou
17

Desde el punto de vista de SQL Server:

El agrupamiento le dará una configuración activa - pasiva. Es decir, en un clúster de 2 nodos, uno de ellos será el activo (en servicio) y el otro será pasivo (en espera de hacerse cargo 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á múltiples 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 del equilibrio de carga del servidor web). No se puede 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. Este es el medio principal de "equilibrio de carga" en el mundo SQL.

Jimmy Chandra
fuente
9

La agrupación en clúster utiliza almacenamiento compartido de algún tipo (una caja de unidades o una SAN, por ejemplo), y coloca dos front-end de la base de datos. Los servidores front-end comparten una dirección IP y un nombre de red de clúster que los clientes usan para conectarse, y deciden entre ellos quién está actualmente a cargo de atender las solicitudes de los clientes.

Si está preguntando acerca de 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 la agrupación.

SqlRyan
fuente
6

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 agregada a su sistema, y ​​eso también en una arquitectura de nada compartido. Al no 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 respecta a mantener los datos sincronizados, hay un servidor de administración al que se conectan todos los nodos de datos junto con el nodo SQL para lograr esto (hablando específicamente de MySQL).

Ahora sobre las diferencias: el equilibrio de carga es solo un resultado que podría lograrse a través de la agrupación, los otros incluyen alta disponibilidad, escalabilidad y tolerancia a fallas.

Puneet Misra
fuente