web-dev-qa-db-de.com

Datenbankcluster und Lastenausgleich

Was ist Datenbank-Clustering? Wenn Sie zulassen, dass sich dieselbe Datenbank auf 2 verschiedenen Servern befindet, wie werden die Daten zwischen synchronisiert. Und wie unterscheidet sich dies vom Lastenausgleich aus Sicht des Datenbankservers?

Datenbank-Clustering ist ein mehrdeutiger Begriff. Einige Anbieter betrachten einen Cluster mit zwei oder mehr Servern, die sich denselben Speicher teilen, andere bezeichnen einen Cluster als einen Satz replizierter Server.

Die Replikation definiert die Methode, mit der eine Reihe von Servern synchronisiert bleibt, ohne dass der Speicher gemeinsam genutzt werden muss, um geografisch verteilt zu sein. Hierzu gibt es zwei Möglichkeiten:

  • master-Master-Replikation (oder Multi-Master-Replikation): Jeder Server kann die Datenbank aktualisieren. Dies wird normalerweise von einem anderen Modul in der Datenbank erledigt (oder in einigen Fällen von einer ganz anderen Software, die darauf ausgeführt wird).

    Der Nachteil ist, dass es sehr schwierig ist, eine gute Leistung zu erbringen, und dass einige Systeme in diesem Replikationsmodus ACID-Eigenschaften verlieren.

    Der Vorteil ist, dass es flexibel ist und Sie den Ausfall jedes Servers unterstützen können, während die Datenbank noch aktualisiert wird.

  • master-Slave-Replikation: Es gibt nur eine einzige Kopie der maßgeblichen Daten, die auf die Slave-Server übertragen werden.

    Nachteil ist, dass es weniger fehlertolerant ist, wenn der Master stirbt, gibt es keine weiteren Änderungen an den Slaves.

    Der Vorteil ist, dass es einfacher ist als Multi-Master und normalerweise die ACID-Eigenschaften beibehält.

Load Balancing ist ein anderes Konzept. Es besteht darin, die an diese Server gesendeten Abfragen so zu verteilen, dass die Last so gleichmäßig wie möglich verteilt wird. Dies erfolgt normalerweise auf der Anwendungsebene (oder mit einem Verbindungspool). Die einzige direkte Beziehung zwischen Replikation und Lastenausgleich besteht darin, dass Sie eine gewisse Replikation benötigen, um den Lastenausgleich durchführen zu können. Andernfalls hätten Sie einen einzelnen Server.

122
Vinko Vrsalovic

Aus Sicht von SQL Server:

Durch Clustering erhalten Sie eine Aktiv-Passiv-Konfiguration. Das heißt, in einem Cluster mit 2 Knoten ist einer der aktiven (Serving) und der andere der passive (Warten auf die Übernahme, wenn der aktive Knoten ausfällt). Aus Sicht der Hardware ist dies eine hohe Verfügbarkeit.

Sie können über einen Aktiv/Aktiv-Cluster verfügen, benötigen jedoch mehrere Instanzen von SQL Server, die auf jedem Knoten ausgeführt werden. (dh Instanz 1 auf Node Ein Failover auf Instanz 2 auf Node B und Instanz 1 auf Node B schlägt fehl über Instanz 2 auf Node A).

Der Lastenausgleich (zumindest aus Sicht von SQL Server) ist nicht vorhanden (zumindest im gleichen Sinne wie der Lastenausgleich von Webservern). Auf diese Weise können Sie die Last nicht ausgleichen. Sie können Ihre Anwendung jedoch so aufteilen, dass sie auf einer Datenbank auf Server 1 und auf einer Datenbank auf Server 2 usw. ausgeführt wird. Dies ist das primäre Mittel für den "Lastenausgleich" in der SQL-Welt.

14
Jimmy Chandra

Beim Clustering wird eine Art gemeinsam genutzter Speicher verwendet (z. B. ein Laufwerkskäfig oder ein SAN), und es werden zwei Datenbank-Front-Ends darauf platziert. Die Front-End-Server teilen sich eine IP-Adresse und einen Clusternetzwerknamen, über die Clients eine Verbindung herstellen, und sie entscheiden selbst, wer derzeit für die Bearbeitung von Clientanforderungen zuständig ist.

Wenn Sie Fragen zu einem bestimmten Datenbankserver haben, fügen Sie diese zu Ihrer Frage hinzu, und wir können Details zu deren Implementierung hinzufügen. Im Kern handelt es sich jedoch um Clustering.

8
SqlRyan

Das Datenbank-Clustering ist ein Modus der synchronen Replikation zwischen zwei oder möglicherweise mehreren Knoten mit einer zusätzlichen Fehlertoleranzfunktionalität, die Ihrem System hinzugefügt wird, und dies auch in einer Shared-Nothing-Architektur. Wenn nichts gemeinsam genutzt wird, bedeutet dies, dass die einzelnen Knoten tatsächlich keine physischen Ressourcen wie Festplatte oder Speicher gemeinsam nutzen.

Um die Daten synchron zu halten, gibt es einen Verwaltungsserver, mit dem alle Datenknoten zusammen mit dem SQL-Knoten verbunden sind, um dies zu erreichen (speziell im Zusammenhang mit MySQL).

Nun zu den Unterschieden: Der Lastenausgleich ist nur ein Ergebnis, das durch Clustering erzielt werden kann, die anderen umfassen Hochverfügbarkeit, Skalierbarkeit und Fehlertoleranz.

5
Puneet Misra