Cluster de base de données et équilibrage de charge

149

Qu'est-ce que le clustering de bases de données? Si vous autorisez la même base de données à être sur 2 serveurs différents, comment maintiennent-ils les données synchronisées. Et en quoi cela diffère-t-il de l'équilibrage de charge du point de vue du serveur de base de données?

Malik Daud Ahmad Khokhar
la source

Réponses:

132

Le clustering de bases de données est un terme un peu ambigu, certains fournisseurs considèrent qu'un cluster ayant deux serveurs ou plus partagent le même stockage, d'autres appellent un cluster un ensemble de serveurs répliqués.

La réplication définit la méthode par laquelle un ensemble de serveurs reste synchronisé sans avoir à partager le stockage pouvant être dispersé géographiquement, il existe deux façons principales de procéder:

  • Réplication maître-maître (ou multi-maître): tout serveur peut mettre à jour la base de données. Il est généralement pris en charge par un module différent au sein de la base de données (ou un tout autre logiciel fonctionnant dessus dans certains cas).

    L'inconvénient est qu'il est très difficile de bien faire, et certains systèmes perdent les propriétés ACID dans ce mode de réplication.

    L'avantage est qu'il est flexible et que vous pouvez prendre en charge la défaillance de n'importe quel serveur tout en ayant la base de données mise à jour.

  • réplication maître-esclave: il n'y a qu'une seule copie des données faisant autorité, qui sont transmises aux serveurs esclaves.

    L'inconvénient est qu'il est moins tolérant aux pannes, si le maître meurt, il n'y a plus de changements dans les esclaves.

    L'avantage est qu'il est plus facile à faire que le multi-maître et qu'il conserve généralement les propriétés ACID.

L'équilibrage de charge est un concept différent, il consiste à distribuer les requêtes envoyées à ces serveurs afin que la charge soit aussi uniformément répartie que possible. Cela se fait généralement au niveau de la couche application (ou avec un pool de connexions). La seule relation directe entre la réplication et l'équilibrage de charge est que vous avez besoin d'une réplication pour pouvoir équilibrer la charge, sinon vous auriez un seul serveur.

Vinko Vrsalovic
la source
1
Ah, j'ai oublié la réplication :) Oui, vous pouvez réaliser l'équilibrage de charge de cette façon en combinaison avec une logique au niveau de l'application :). +1
Jimmy Chandra
1
Les documents PostgreSQL font référence au "cluster de base de données" différemment: "Avant de pouvoir faire quoi que ce soit, vous devez initialiser une zone de stockage de base de données sur le disque. Nous appelons cela un cluster de base de données. (SQL utilise le terme cluster de catalogue.) Un cluster de base de données est un ensemble de bases de données gérées par une seule instance d'un serveur de base de données en cours d'exécution. " postgresql.org/docs/8.3/static/creating-cluster.html
Donato
1
Que signifient les propriétés ACID, ou plutôt, qu'est-ce que vous perdez exactement si vous ne les préservez pas?
TheStoryCoder
@TheStoryCoder En informatique, ACID (Atomicité, Consistance, Isolation, Durabilité) est un ensemble de propriétés de transactions de bases de données destinées à garantir la validité même en cas d'erreurs, de coupures de courant, etc. Dans le cadre de bases de données, une séquence de base de données les opérations qui satisfont les propriétés ACID (et celles-ci peuvent être perçues comme une seule opération logique sur les données) est appelée une transaction. Par exemple, un transfert de fonds d'un compte bancaire à un autre, même impliquant plusieurs changements tels que le débit d'un compte et le crédit d'un autre, est une seule transaction.
fizampou
17

Du point de vue de SQL Server:

Le clustering vous donnera une configuration active-passive. Cela signifie que dans un cluster à 2 nœuds, l'un d'eux sera actif (serveur) et l'autre sera passif (en attente de prendre le relais lorsque le nœud actif échoue). C'est une haute disponibilité du point de vue matériel.

Vous pouvez avoir un cluster actif-actif, mais il nécessitera plusieurs instances de SQL Server s'exécutant sur chaque nœud. (c'est-à-dire que l'instance 1 sur le nœud A bascule sur l'instance 2 sur le nœud B, et l'instance 1 sur le nœud B bascule sur l'instance 2 sur le nœud A).

L'équilibrage de charge (du moins du point de vue de SQL Server) n'existe pas (du moins dans le même sens de l'équilibrage de charge du serveur Web). Vous ne pouvez pas équilibrer la charge de cette façon. Cependant, vous pouvez diviser votre application pour qu'elle s'exécute sur une base de données sur le serveur 1 et également sur une base de données sur le serveur 2, etc. C'est le principal moyen d '«équilibrage de charge» dans le monde SQL.

Jimmy Chandra
la source
9

Le clustering utilise un certain type de stockage partagé (une cage de lecteur ou un SAN, par exemple) et y place deux frontaux de base de données. Les serveurs frontaux partagent une adresse IP et un nom de réseau de cluster que les clients utilisent pour se connecter, et ils décident entre eux qui est actuellement en charge de traiter les demandes des clients.

Si vous posez des questions sur un serveur de base de données particulier, ajoutez-le à votre question et nous pouvons ajouter des détails sur leur implémentation, mais au fond, c'est ce qu'est le clustering.

SqlRyan
la source
6

Le clustering de bases de données est en fait un mode de réplication synchrone entre deux nœuds ou plus, avec une fonctionnalité supplémentaire de tolérance aux pannes ajoutée à votre système, et cela aussi dans une architecture sans partage. En rien partagé, cela signifie que les nœuds individuels ne partagent en fait aucune ressource physique telle que le disque ou la mémoire.

En ce qui concerne la synchronisation des données, il existe un serveur de gestion auquel tous les nœuds de données sont connectés avec le nœud SQL pour y parvenir (en parlant spécifiquement de MySQL).

Voyons maintenant les différences: l'équilibrage de charge n'est qu'un résultat qui pourrait être obtenu grâce au clustering, les autres incluent la haute disponibilité, l'évolutivité et la tolérance aux pannes.

Puneet Misra
la source