Datenbankcluster und Lastausgleich

149

Was ist Datenbankclustering? Wenn Sie zulassen, dass sich dieselbe Datenbank auf zwei verschiedenen Servern befindet, wie halten sie die Daten zwischen synchronisiert. Und wie unterscheidet sich dies vom Lastausgleich aus Sicht eines Datenbankservers?

Malik Daud Ahmad Khokhar
quelle

Antworten:

132

Datenbankclustering ist ein mehrdeutiger Begriff. Einige Anbieter betrachten einen Cluster mit zwei oder mehr Servern, die denselben Speicher gemeinsam nutzen, andere nennen einen Cluster eine Reihe 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 werden. Es gibt zwei Hauptmethoden:

  • Master-Master- (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).

    Nachteil ist, dass es sehr schwierig ist, gute Ergebnisse zu erzielen, und einige Systeme in diesem Replikationsmodus die ACID-Eigenschaften verlieren.

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

  • Master-Slave-Replikation: Es gibt nur eine einzige Kopie der autorisierenden Daten, die an die Slave-Server übertragen wird.

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

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

Der Lastausgleich ist ein anderes Konzept. Er 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 Anwendungsebene (oder mit einem Verbindungspool). Die einzige direkte Beziehung zwischen Replikation und Lastausgleich besteht darin, dass Sie eine Replikation benötigen, um den Lastausgleich durchführen zu können. Andernfalls hätten Sie einen einzelnen Server.

Vinko Vrsalovic
quelle
1
Ah, ich habe die Replikation vergessen :) Ja, auf diese Weise können Sie einen Lastausgleich in Kombination mit Logik auf Anwendungsebene erzielen :). +1
Jimmy Chandra
1
Postgresql-Dokumente beziehen sich anders auf "Datenbankcluster": "Bevor Sie etwas tun können, müssen Sie einen Datenbankspeicherbereich auf der Festplatte initialisieren. Wir nennen dies einen Datenbankcluster. (SQL verwendet den Begriff Katalogcluster.) Ein Datenbankcluster ist eine Sammlung von Datenbanken, die von einer einzelnen Instanz eines laufenden Datenbankservers verwaltet werden. " postgresql.org/docs/8.3/static/creating-cluster.html
Donato
1
Was bedeuten ACID-Eigenschaften oder was verlieren Sie genau, wenn Sie sie nicht erhalten?
TheStoryCoder
@TheStoryCoder In der Informatik ist ACID (Atomicity, Consistency, Isolation, Durability) eine Reihe von Eigenschaften von Datenbanktransaktionen, die die Gültigkeit auch bei Fehlern, Stromausfällen usw. gewährleisten sollen. Im Kontext von Datenbanken eine Folge von Datenbanken Operationen, die die ACID-Eigenschaften erfüllen (und diese können als einzelne logische Operation für die Daten wahrgenommen werden), werden als Transaktion bezeichnet. Beispielsweise ist eine Überweisung von Geld von einem Bankkonto auf ein anderes, selbst wenn mehrere Änderungen vorgenommen werden, z. B. die Belastung eines Kontos und die Gutschrift eines anderen Kontos, eine einzelne Transaktion.
Fizampou
17

Aus Sicht von SQL Server:

Durch Clustering erhalten Sie eine Aktiv-Passiv-Konfiguration. Das heißt, in einem Cluster mit zwei Knoten ist einer von ihnen aktiv (bedienend) und der andere passiv (wartet auf die Übernahme, wenn der aktive Knoten ausfällt). Es ist eine hohe Verfügbarkeit aus Hardware-Sicht.

Sie können einen Aktiv-Aktiv-Cluster haben, für den jedoch mehrere Instanzen von SQL Server auf jedem Knoten ausgeführt werden müssen. (dh Instanz 1 auf Knoten A, die auf Instanz 2 auf Knoten B umschaltet, und Instanz 1 auf Knoten B, die auf Instanz 2 auf Knoten A umschaltet).

Der Lastausgleich (zumindest aus Sicht von SQL Server) existiert nicht (zumindest im gleichen Sinne wie der Lastausgleich des Webservers). 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 auch auf einer Datenbank auf Server 2 usw. ausgeführt wird. Dies ist das primäre Mittel für den "Lastausgleich" in der SQL-Welt.

Jimmy Chandra
quelle
9

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

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

SqlRyan
quelle
6

Datenbank-Clustering ist eigentlich ein Modus der synchronen Replikation zwischen zwei oder möglicherweise mehr Knoten mit einer zusätzlichen Funktionalität der Fehlertoleranz, die Ihrem System hinzugefügt wurde, und dies auch in einer Shared-Nothing-Architektur. Wenn Sie nichts gemeinsam nutzen, 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 über MySQL).

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

Puneet Misra
quelle