167 votes

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

Qu'est-ce que le clustering de base de données ? Si vous permettez à la même base de données d'être sur deux serveurs différents, comment font-ils pour garder les données synchronisées entre eux ? Et en quoi cela diffère-t-il de l'équilibrage de charge du point de vue du serveur de base de données ?

140voto

Vinko Vrsalovic Points 116138

La mise en grappe de bases de données est un terme un peu ambigu, certains fournisseurs considèrent qu'une grappe a deux serveurs ou plus qui partagent le même stockage, d'autres appellent une grappe un ensemble de serveurs répliqués.

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

  • la réplication maître-maître (ou multi-maître) : Tout serveur peut mettre à jour la base de données. Elle est généralement prise en charge par un module différent au sein de la base de données (ou un logiciel entièrement différent fonctionnant au-dessus d'eux dans certains cas).

    L'inconvénient est qu'il est très difficile de le faire correctement et que certains systèmes perdent leurs propriétés ACID lorsqu'ils utilisent ce mode de réplication.

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

  • la réplication maître-esclave : Il n'y a qu'une seule copie des données faisant autorité, qui est poussée vers les serveurs esclaves.

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

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

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

1 votes

Ah, j'ai oublié la réplication :) Oui, vous pouvez réaliser l'équilibrage de charge de cette façon en combinaison avec la logique au niveau de l'application :). +1

2 votes

Les docs de Postgresql font référence au "cluster de base de données" de manière différente : " 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 catalogues.) Un cluster de bases de données est un ensemble de bases de données géré par une seule instance d'un serveur de bases de données en cours d'exécution. " postgresql.org/docs/8.3/static/création-cluster.html

1 votes

Que signifient les propriétés ACID, ou plutôt, qu'est-ce qu'on perd exactement si on ne les préserve pas ?

19voto

Jimmy Chandra Points 3562

Du point de vue de SQL Server :

La mise en grappe vous donnera une configuration active - passive. Cela signifie que dans un cluster à deux nœuds, l'un d'eux sera actif (il servira) et l'autre sera passif (il attendra de prendre le relais lorsque le nœud actif tombera en panne). Il s'agit d'une haute disponibilité du point de vue matériel.

Vous pouvez avoir un cluster actif-actif, mais cela nécessitera plusieurs instances de SQL Server fonctionnant sur chaque nœud. (c'est-à-dire que l'instance 1 du nœud A passe à l'instance 2 du nœud B, et l'instance 1 du nœud B passe à l'instance 2 du nœud A).

L'équilibrage de la charge (du moins du point de vue du serveur SQL) n'existe pas (du moins dans le même sens que l'équilibrage de la charge des serveurs web). Vous ne pouvez pas équilibrer la charge de cette manière. Cependant, vous pouvez diviser votre application pour qu'elle fonctionne 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 la charge" dans le monde SQL.

10voto

SqlRyan Points 14999

La mise en grappe utilise un type de stockage partagé (une cage de disques 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 chargé de répondre aux demandes des clients.

Si vous posez une question sur un serveur de base de données particulier, ajoutez-le à votre question et nous pourrons ajouter des détails sur sa mise en œuvre, mais au fond, c'est ce qu'est le clustering.

8voto

Puneet Misra Points 21

La mise en grappe de bases de données est en fait un mode de réplication synchrone entre deux ou plusieurs nœuds avec une fonctionnalité supplémentaire de tolérance aux pannes ajoutée à votre système, et ce dans une architecture sans partage. Par "rien partagé", on entend que les nœuds individuels ne partagent pas de ressources physiques telles 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, ainsi que le nœud SQL pour y parvenir (en particulier MySQL).

En ce qui concerne les différences, l'équilibrage de la charge n'est qu'un des résultats que l'on peut obtenir grâce au regroupement, les autres étant la haute disponibilité, l'évolutivité et la tolérance aux pannes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X