web-dev-qa-db-fra.com

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

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

137

La mise en grappes 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 l'appellent 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 y a deux façons de s'y prendre:

  • 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 de la base de données (ou par un logiciel totalement différent qui s’exécute dans certains cas).

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

    Upside est que c'est flexible et que vous pouvez supporter la panne de n'importe quel serveur tout en ayant la base de données mise à jour.

  • réplication maître-esclave: il n'existe qu'une seule copie des données faisant autorité, qui est transmise 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 changement dans les esclaves.

    Upside est qu'il est plus facile à faire que multi-master et qu'il préserve 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 distribuée aussi uniformément 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 la charge est que vous avez besoin d'une réplication pour pouvoir équilibrer la charge, sinon vous auriez un seul serveur.

122
Vinko Vrsalovic

Du point de vue de SQL Server:

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

Vous pouvez avoir un cluster actif-actif, mais plusieurs instances de SQL Server devront être exécutées sur chaque nœud. (ie Instance 1 sur Node Un basculement vers l'instance 2 sur Node B, et l'instance 1 sur Node B échec sur l'instance 2 sur Node A).

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

14
Jimmy Chandra

La mise en cluster utilise un type de stockage partagé (une cage de lecteur ou un réseau SAN, par exemple), et place deux frontaux de base de données dessus. Les serveurs frontaux partagent une adresse IP et un nom de réseau de cluster que les clients utilisent pour se connecter. Ils décident entre eux-mêmes qui est actuellement en charge de répondre aux demandes des clients.

Si vous vous interrogez sur un serveur de base de données particulier, ajoutez-le à votre question et nous pourrons ajouter des détails sur leur implémentation, mais c'est essentiellement ce qu'est la mise en cluster.

8
SqlRyan

Le clustering de bases de données est en réalité 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, ainsi que dans une architecture sans partage. Si rien n'est partagé, cela signifie que les nœuds individuels ne partagent en réalité 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, ainsi que le nœud SQL, pour y parvenir (parlant spécifiquement de MySQL).

En ce qui concerne les différences: l’équilibrage de la charge n’est que l’un des résultats possibles grâce à la mise en cluster, les autres incluent la haute disponibilité, l’évolutivité et la tolérance aux pannes.

5
Puneet Misra