Der Unterschied zwischen Cluster und Master-Slave in MySQL: Die Datenkonsistenz zwischen Master und Slave wird durch die MySQL-Replikation sichergestellt. Im Vergleich zur Datensynchronisationsmethode des MySQL-Clusters ist sie asynchron. Da es asynchron ist, kann es beim Kopieren der Daten zwischen Master und Slave zu einer leichten Verzögerung und zu Inkonsistenzen kommen.
Empfohlener Kurs: MySQL-Tutorial.
Die Datenkonsistenz zwischen Master und Slave wird durch MySQL-Replikation sichergestellt. Im Vergleich zur Datensynchronisationsmethode des MySQL-Clusters ist sie asynchron.
Der Cluster verwendet PXC (Percona XtraDB Cluster), Multi-Node-Daten werden in Echtzeit synchronisiert (Lesen und Schreiben)
Über Master-Slave
Master-Slave kann die Trennung von Lesen und Schreiben gewährleisten, d. h. Schreibvorgänge erfolgen auf dem Master und Lesevorgänge erfolgen auf dem Slave. Es gibt auch mehrere Master-Slave-Modi etwa einen Master und mehrere Slaves.
Zum Beispiel gibt es zwei Geschäftsmodule, die kontinuierlich Bestelldatensätze usw. schreiben, und das andere Modul generiert Berichte. Wenn zu diesem Zeitpunkt keine Lese- und Schreibtrennung erfolgt, werden die Lese- und Schreibvorgänge ausgeführt kollidieren, was zu Konflikten führen und die Leistung beeinträchtigen kann. Wenn Lesen und Schreiben getrennt sind, besteht keine Notwendigkeit, das Lesen und Schreiben derselben Tabelle zu berücksichtigen, um die Leistung zu beeinträchtigen, und mehrere Slaves können den Druck auf dem Server gut teilen und den Druck auf a verringern Einzelmaschine.
Master und Slave verwenden MySQL-Replikation, um die Datenkonsistenz sicherzustellen. Aufgrund der Asynchronität kann es zu einer leichten Verzögerung beim Kopieren von Daten zwischen Master und Slave kommen . Es kommt zu Verzögerungen und Inkonsistenzen.
Replikation: Der Master-Knoten muss Binlog aktivieren, eine eindeutige Server-ID festlegen (einzigartig im lokalen Netzwerk), die Server-ID vom Slave-Knoten festlegen, und das Binlog zeichnet alle Informationen auf dem Master auf. Der Vorgang wird in das Relaylog des Slave-Knotens kopiert und auf dem Slave-Knoten wiedergegeben.
Aber der Master-Slave hat auch Mängel. Der Master ist ausgefallen und muss manuell umgeschaltet werden.
Der andere Grund ist, dass die Daten inkonsistent und nicht konsistent sind. Die folgenden sind einige häufige Gründe: Die Master- oder Slave-Bibliothek wird unerwartet heruntergefahren kann zu Schäden an den Binlog- oder Relaylog-Dateien führen, was zu einer Master-Slave-Inkonsistenz führt. (Es gibt einen Artikel in diesem Blog, der nach der Ausfallzeit behoben wurde)
Wenn sql_log_bin=0 gesetzt ist Wird ausgeführt, bevor die Hauptbibliothek Änderungen vornimmt, zeichnet die Hauptbibliothek das Binlog nicht auf und die Slave-Bibliothek kann diesen Teil der Daten nicht ändern.
Das Binlog-Format der Hauptbibliothek ist eine Anweisung, die nach der Synchronisierung mit der Slave-Bibliothek zu einer Master-Slave-Inkonsistenz führen kann.
Der Slave-Knoten ist nicht auf schreibgeschützt eingestellt, Daten werden versehentlich geschrieben
Die Versionen der Master- und Slave-Instanzen sind inkonsistent, insbesondere wenn die höhere Version der Master und die niedrigere Version der Slave ist. Die von der Master-Datenbank unterstützten Funktionen werden möglicherweise nicht von der Slave-Datenbank unterstützt Funktion wird nicht unterstützt
MySql BUG
Dann müssen Sie bei der Verwendung die folgenden Dinge beachten
Das Binlog der Hauptbibliothek übernimmt das ROW-Format
Die Datenbankversionen der Master- und Slave-Instanzen sollten konsistent sein
Die Hauptbibliothek sollte Steuern Sie die Kontoberechtigungen. Sie können set sql_log_bin=0
Schreibgeschützt aus der Bibliothek aktivieren und kein menschliches Schreiben zulassen
Führen Sie regelmäßig eine Master-Slave-Konsistenzprüfung durch
Der größte Vorteil des Clusters ist die Echtzeitfähigkeit Datensynchronisation, hohe Verfügbarkeit und die Daten jedes Knotens werden konsistent synchronisiert. Im Gegensatz zu Master-Slave, bei dem es manchmal zu Dateninkonsistenzen kommt, und hoher Verfügbarkeit hat ein Knotenausfall keine Auswirkungen auf das Geschäft. Aber der Nachteil ist die Leistung. Jeder Schreibvorgang wird zwischen allen Knoten synchronisiert. Es gibt einen kleinen Leistungsverlust, wodurch eine hohe Verfügbarkeit und Datenkonsistenz gewährleistet wird.
Im Cluster gibt es einen Verwaltungsknoten und mehrere SQL-Knoten und Datenknoten, um die Datenkonsistenz zwischen den Knoten sicherzustellen. Der allgemeine Arbeitsprozess erfolgt lautet wie folgt
Wenn der Master die Commit-Anweisung ausführt, wird die Transaktion an den Slave gesendet und der Slave beginnt, sich auf die Übermittlung der Transaktion vorzubereiten
Jeder Slave muss die Transaktion vorbereiten und dann eine OK- (oder ABORT-)Nachricht an den Master senden, die angibt, dass die Transaktion bereit ist (oder die Transaktion nicht vorbereitet werden kann)
Master wartet darauf, dass alle Slaves eine OK- oder ABORT-Nachricht senden
Wenn der Master OK-Nachrichten von allen Slaves empfängt, sendet er eine Commit-Nachricht an alle Slaves und fordert den Slave auf, die zu übermitteln Transaktion;
Jeder Slave wartet auf eine OK- oder ABORT-Nachricht vom Master
Wenn der Slave eine Commit-Anfrage erhält, wird er die Transaktion festschreiben und Wenn der Slave eine Stornierungsanforderung erhält, macht er alle Änderungen rückgängig und gibt die von ihm belegten Ressourcen frei, wodurch die Transaktion abgebrochen wird, und sendet dann eine Bestätigung an den Master Die Transaktion wurde abgebrochen.
Wenn der Master eine Bestätigung von allen Slaves erhält, meldet er, dass die Transaktion festgeschrieben (oder abgebrochen) wurde und fährt dann mit der nächsten Transaktion fort
Da für die synchrone Replikation insgesamt 4 Nachrichtenübertragungen erforderlich sind, ist die Datenaktualisierungsgeschwindigkeit des MySQL-Clusters langsamer als die des eigenständigen MySQL. Daher muss der MySQL-Cluster in einem Gigabit-LAN oder höher ausgeführt werden. Die Knoten können zwei Netzwerkkarten verwenden und die Knotengruppen sind direkt verbunden, um die Datenaktualisierungsgeschwindigkeit sicherzustellen.
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen MySQL-Cluster und Master-Slave. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!