Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in die neuen Replikationsfunktionen von MySQL 8.0.2

Detaillierte Einführung in die neuen Replikationsfunktionen von MySQL 8.0.2

黄舟
黄舟Original
2017-09-11 11:25:401718Durchsuche

Übersetzer: Zhishutang Aufschwung. Wir haben hart daran gearbeitet, die MySQL-Replikation durch die Einführung neuer und interessanter Funktionen umfassend zu verbessern. Darüber hinaus hören wir auf Vorschläge und Feedback aus der Community. Daher ist es uns eine Ehre, mit Ihnen die Meilenstein-Veröffentlichung der neuesten Version (MySQL 8.0.2) zu erleben, und wir haben einige der bemerkenswerten Änderungen zusammengefasst. Folgen Sie unserem Blog unten, während wir einige Einblicke in diese neuen Funktionen geben.

Wir haben die MySQL-Gruppenreplikation vor allem in den folgenden Aspekten verstärkt:

Änderungen für Mitglieder, die die Gruppe verlassen, sind nicht zulässig: immer dann, wenn ein Gruppenmitglied die Gruppe verlässt , verlassende Mitglieder setzen automatisch super_read_only, was unerwartete Änderungen verhindern kann, die durch DBA, Benutzer oder Router/Agenten/Load Balancer usw. verursacht werden. Zusätzlich zu der Tatsache, dass Mitglieder, die die Gruppenreplikation verlassen, standardmäßig nicht geändert werden können, kann das Schreiben auch ab dem Zeitpunkt ihres Beitritts verboten werden. Wir können auch den Parameter super_read_only festlegen, wenn der Server startet und das Gruppenreplikations-Plug-in startet. Sobald der Gruppenreplikationsvorgang erfolgreich ist, wird der Wert von super_read_only automatisch angepasst. Im Multi-Master-Modus setzen nicht alle Knoten den Parameter super_read_only; im Single-Master-Modus setzen alle anderen Knoten außer dem Master-Knoten super_read_only auf ON. Sollte der Start Ihrer Gruppenreplikation leider fehlschlagen, wird der Parameter super_read_only nicht gesetzt und es sind keine Schreibvorgänge möglich. Diese neuesten Änderungen gelten auch für MySQL 5.7.19 und MySQL 8.0.2. Ein großer Teil davon ist darauf zurückzuführen, dass wir auf das Feedback der Community gehört und es dann weiterentwickelt und verbessert haben. --Hier Danke an Kenny Gryp

  • Sie können weitere Informationen im Leistungsschema anzeigen: In den vorhandenen Tabellen des Leistungsschemas wurde die Lesbarkeit der zugehörigen statistischen Informationen verbessert. Die Tabellen „replication_group_members“ und „replication_group_member_stats“ wurden ebenfalls erweitert. Jetzt können Sie die Rolleninformationen von Gruppenmitgliedern, Gruppenmitgliedsversionen und Transaktionszählern (lokal/remote) deutlich sehen

  • Bestanden Weisen Sie Gewichtungen zu, um die Wahl der Master-Datenbank festzulegen: Benutzer können die Wahl der Master-Datenbank steuern, indem sie die Gewichtungen der Gruppenmitglieder angeben. Wenn der vorhandene Master-Knoten die Gruppenreplikation verlässt, wird der Knoten mit der höchsten Gewichtung zum Master-Knoten hochgestuft .

  • Einige Feinabstimmungselemente zum Flusskontrollmechanismus hinzugefügt: Benutzer können jetzt die Flusskontrollkomponenten feinabstimmen. Sie können Mindestkontingente für jedes Mitglied, Mindest-Commit-Kontingente für die gesamte Gruppe, Prozesskontrollfenster und mehr definieren.

  • MySQL 8.0.1 hat dem MySQL-Replikationskern-Framework viele überzeugende Funktionen hinzugefügt. MySQL 8.0.2 hat auf dieser Basis große Verbesserungen vorgenommen, hauptsächlich wie folgt:

Verbesserung der Verwaltung des Empfängerthreads (IO), auch wenn die Festplatte voll ist: Diese Funktion wird verbessert die Effizienz der internen Koordination zwischen dem Empfänger und anderen Threads und reduziert Konflikte untereinander. Für Endbenutzer bedeutet dies, dass Überwachungsvorgänge wie „SHOW SLAVE STATUS“ nicht mehr blockiert werden, wenn die Festplatte voll ist und der Empfänger-Thread blockiert. Es führt außerdem einen neuen Thread-Status ein (der Empfänger-Thread wartet auf Speicherplatzressourcen und Sie können den Speicherplatz nicht freigeben, damit der Empfänger-Thread die unvollendete Arbeit fortsetzen kann). Stoppen Sie es manuell, und im Allgemeinen wird es kein Problem geben. Wenn jedoch zu diesem Zeitpunkt eine Schreibtransaktion gelöscht wird und das Relay-Protokoll nicht in einem konsistenten Zustand ist, müssen Sie besonders vorsichtig sein, wenn der Empfänger-Thread das Relay-Protokoll abfragt und darauf wartet, dass Speicherplatz verfügbar wird.

  • Weitere Metadateninformationen im Binärprotokoll aufzeichnen: Transaktionslänge zu globalen Transaktionsprotokollereignissen hinzufügen. Dies kann für unsere zukünftige Optimierungsarbeit eine große Hilfe sein und verbessert auch die Lesbarkeit des Binärprotokolls.

  • Wenn Sie sich mit dem Innenleben der MySQL-Replikation befassen, teilen wir Ihnen gerne mit, dass wir einige Aufräumarbeiten durchgeführt und eine interessante Ergänzung zu unseren Basiskomponentendiensten hinzugefügt haben:

Gruppenmitgliedschaftsereignisse können an andere Komponenten innerhalb weitergegeben werden. Durch die Nutzung der neuen zugrunde liegenden Dienstarchitektur kann das Gruppenreplikations-Plug-in jetzt andere Komponenten im Server über mit Mitgliedern verbundene Ereignisse benachrichtigen. Zum Beispiel die Benachrichtigung von Gruppenmitgliedern über einen Rollenwechsel, einen Schiedsverlust usw. Andere Komponenten können auf diese Informationen reagieren, und Benutzer können auch eigene Komponenten entwickeln, um diese Ereignisse aufzuzeichnen und zu erkennen.

  • Entfernen Sie redundante Informationen zu Knoten aus der internen Struktur von einfacher, weniger fehleranfällig und einfacher zu überwachen, welche Knoten dem Cluster beitreten oder ihn verlassen, während vorherige Informationen im System beibehalten werden.

  • Mehrere Verbesserungen am XCom-Kern und neuer Codierungsstil: Wir haben mehrere Fehler behoben. Als Entwickler werden Sie beim Betrachten des Quellcodes unserer Paxos-Implementierung feststellen, dass der überarbeitete Code vorliegen wird leichter zu lesen und zu verstehen.

  • Einige Quellcodes für die Binärprotokollkonvertierung alter Versionen entfernt: Bei dieser Bereinigungsarbeit haben wir einige Binärprotokolle gelöscht, die von der alten Version meiner Datenbank erstellt wurden, und sie in solche konvertiert, die verwendet werden können Wird von der neuen Version erkannt (unterstützt derzeit nur MySQL5.0 und höher).

Eine weitere interessante Sache: Wir haben die folgenden Replikationsstandards in MySQL 8.0.2 geändert:

  • Replizierte Metadateninformationen werden im INNODB-System gespeichert Tabellen standardmäßig: Dadurch wird die MySQL-Replikationsfunktion leistungsfähiger. Wenn die Replikation abstürzt und automatisch wiederhergestellt wird, können die Eigenschaften von INNODB-Transaktionen verwendet werden, um die Korrektheit der Wiederherstellung am angegebenen Speicherort sicherzustellen. Darüber hinaus erfordern neue Funktionen auch die Speicherung von Metadaten in Form von Tabellen (z. B. Gruppenreplikation und Multi-Source-Replikation), was mit dem neuen Datenwörterbuch von MySQL 8 übereinstimmt.

  • Hash-Scan basierend auf Zeilendaten ist standardmäßig aktiviert: Dies ist möglicherweise kein allgemein anerkannter Ansatz, aber wenn die Slave-Bibliothek über einige Tabellen ohne Primärschlüsselbeschränkungen verfügt, wird die Leistung verbessert verbessern. In diesem Fall minimiert diese Änderung die Leistungseinbußen bei der Verwendung der zeilenbasierten Replikation, da dadurch die Anzahl der Tabellenscans reduziert wird, die zum Aktualisieren aller Zeilen erforderlich sind (der Parameter slave_rows_search_algorithms ist standardmäßig auf TABLE_SCAN, INDEX_SCAN, HASH_SCAN eingestellt).

  • Der Parameter „transaction-write-set-extraction“ ist standardmäßig aktiviert: Verwenden Sie die Schreibsatzextraktion, starten Sie die Gruppenreplikation für Benutzer oder verfolgen Sie den Master mithilfe von WRITESET-basierten Abhängigkeiten auf dem Masterserver.

  • Binärprotokoll ist standardmäßig aktiviert. Ablaufzeit: „expire-logs-days“ ist standardmäßig auf 30 (30 Tage) eingestellt.

Wie Sie Wissen Sie, wir waren sehr beschäftigt. Tatsächlich wurde MySQL 8.0.2 Milestone Release veröffentlicht. Auf der Replikationsseite freuen wir uns sehr, dass viele interessante Funktionen hinzugefügt werden.

Es wird einen eigenen Blog geben, um diese Funktionen vorzustellen und zu erklären. Sie können es auch selbst zum Testen herunterladen (Download-Adresse). Es gibt keine GA-Version. Und vergessen Sie nicht: Wir freuen uns über Ihr Feedback. Sie können uns Feedback über Fehlerberichte oder Funktionsberichte geben, die Mailingliste kopieren oder einfach einen Kommentar zu diesem (oder einem nachfolgenden) Blogbeitrag hinterlassen. MySQL 8 wird immer besser und spannender.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die neuen Replikationsfunktionen von MySQL 8.0.2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn