Heim  >  Artikel  >  Datenbank  >  Lassen Sie uns gemeinsam die Hochverfügbarkeitsarchitekturtechnologie von MySQL analysieren

Lassen Sie uns gemeinsam die Hochverfügbarkeitsarchitekturtechnologie von MySQL analysieren

WBOY
WBOYnach vorne
2022-02-22 18:12:131969Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über die technische Analyse der MySQL-Architektur mit mittlerer und hoher Verfügbarkeit. Er stellt hauptsächlich die technische Analyse von MMM, der MySQL-Master-Slave-Architektur und Cluster-bezogenen Problemen vor.

Lassen Sie uns gemeinsam die Hochverfügbarkeitsarchitekturtechnologie von MySQL analysieren

Hintergrundbeschreibung

Mit der Entwicklung der Informationstechnologie setzen Unternehmen zunehmend auf Informationsmanagement. Die Dateninformationen verschiedener Geschäftsanwendungen werden hauptsächlich in Datenbanken gespeichert. Um verschiedene Verluste aufgrund von Datenunterbrechungen zu vermeiden, hat die hohe Verfügbarkeit von Datenbanken beim Aufbau von Unternehmensinformationen höchste Priorität. Gleichzeitig benötigen Schlüsselunternehmen in Branchen oder Bereichen, die mit der Volkswirtschaft und dem Lebensunterhalt der Menschen zusammenhängen, wie z. B. Telekommunikation, Finanzen, Energie und Militärindustrie, eine hohe Verfügbarkeit für die Speicherung wichtiger Daten. Das Datensystem muss rund um die Uhr laufen. 7, um Datenverlust und Datenschäden zu verhindern. Klicken Sie hier, um die Programmier-Lernmaterialien zu erhalten

Einführung in die Hochverfügbarkeitsarchitektur

Hochverfügbarkeitsarchitektur ist grundsätzlich Standard für Internetdienste. Sowohl Anwendungsdienste als auch Datenbankdienste müssen hochverfügbar sein. Für ein System kann viele Module umfassen, z. B. Front-End-Anwendungen, Caches, Datenbanken, Suchvorgänge, Nachrichtenwarteschlangen usw. Jedes Modul muss hochverfügbar sein, um die Hochverfügbarkeit des gesamten Systems sicherzustellen . Bei Datenbankdiensten ist die Hochverfügbarkeit möglicherweise komplexer. Die Verfügbarkeit von Diensten für Benutzer erfordert nicht nur Zugriff, sondern auch Korrektheitsgarantien. Daher erfordert eine Hochverfügbarkeit von Datenbanken mehr Authentifizierung.

MySQL-Hochverfügbarkeitsarchitekturklassifizierung

  • MySQL implementiert MMM für Hochverfügbarkeit
  • MySQL implementiert Hochverfügbarkeits-MHA
  • MySQL implementiert Hochverfügbarkeits-Master-Slave-Architektur
  • MySQL implementiert Hochverfügbarkeits-Clustermodus

Technische Analyse von MMM

MMM (Master-Master-Replikationsmanager für MySQL) ist eine Reihe von Skriptprogrammen, die Dual-Master-Failover und Dual-Master-Tagesverwaltung unterstützen.

  • MMM wurde in der Perl-Sprache entwickelt und wird hauptsächlich zur Überwachung und Verwaltung der MySQL-Master-Master-Replikation (Dual-Master-Replikation) verwendet. Obwohl es sich um eine Dual-Master-Replikation handelt, erlaubt das Unternehmen nur das gleichzeitige Schreiben auf einen Master , und der andere Der alternative Master stellt teilweise Lesedienste bereit, um das Aufwärmen des alternativen Masters beim Umschalten des primären Masters zu beschleunigen. Das Überwachungsende von MMM stellt mehrere virtuelle IPs (VIP) bereit, einschließlich einer beschreibbaren VIP Durch die Überwachungsverwaltung werden lesbare VIPs an das verfügbare MySQL gebunden. Wenn ein bestimmtes MySQL ausfällt, werden die VIPs auf ein anderes MySQL migriert.

  • MMM implementiert einerseits die Failover-Funktion und andererseits kann durch seine zusätzlichen internen Tool-Skripte auch ein Leselastausgleich mehrerer Slaves erreicht werden.
  • Dieses Paket kann auch einen Leselastausgleich auf einer beliebigen Anzahl von Slave-Servern basierend auf einer Standard-Master-Slave-Konfiguration durchführen, sodass Sie es auch zum Starten virtueller IPs auf einer Gruppe replizierter Server verwenden können sind Skripte zur Implementierung von Datensicherungs- und Resynchronisierungsfunktionen zwischen Knoten.

  • MMM-Basiskomponentenanalyse

mmm_mond: Überwachungsprozess, verantwortlich für alle Überwachungsarbeiten, Entscheidung und Verarbeitung aller Knotenrollenaktivitäten. Daher muss das Skript auf einem Supervisor ausgeführt werden.

mmm_agentd: Der auf jedem MSQL-Server ausgeführte Agentenprozess schließt die Überwachungsprüfungsarbeit ab und führt einfache Remote-Diensteinstellungen durch. Dieses Skript muss auf dem überwachten Computer ausgeführt werden.
  • mmm_control: Ein einfaches Skript, das Befehle zum Verwalten von mmm_mond bereitstellt.
  • Grundlegendes Implementierungsprinzip von MMM

MMM bietet automatische und manuelle Möglichkeiten zum Entfernen der virtuellen IP eines Servers mit hoher Replikationsverzögerung in einer Gruppe von Servern. Gleichzeitig kann es auch Daten sichern und eine Replikation realisieren zwischen zwei Knoten.

MySQL selbst bietet keine Replikations-Failover-Lösung. Durch die MMM-Lösung kann ein Server-Failover erreicht werden, wodurch eine hohe Verfügbarkeit von MySQL erreicht wird.

Einsatzszenarien von MMM

Da MMM die Datenkonsistenz nicht vollständig garantieren kann, eignet sich MMM für Szenarien, in denen die Anforderungen an die Datenkonsistenz nicht sehr hoch sind, Sie aber die Geschäftsverfügbarkeit in größtmöglichem Umfang sicherstellen möchten. Für Unternehmen, die hohe Anforderungen an die Datenkonsistenz haben, wird dringend davon abgeraten, eine Hochverfügbarkeitsarchitektur wie MMM zu verwenden.

Das MMM-Projekt kommt von Google: code.google.com/p/mysql-mas…

Die offizielle Website ist: mysql-mmm.org
  • Einführung in MHA
  • MHA (Master High Availability) ist derzeit im Bereich MySQL-Hochverfügbarkeit Es handelt sich um eine relativ ausgereifte Lösung. Sie wurde von Youshimaton von der japanischen Firma DeNA entwickelt (die jetzt bei Facebook arbeitet). Es handelt sich um eine hervorragende Reihe von Hochverfügbarkeitssoftware für Failover und Master-Slave-Förderung in MySQL Hochverfügbarkeitsumgebung. Während des MySQL-Failover-Prozesses kann MHA den Datenbank-Failover-Vorgang automatisch innerhalb von 0 bis 30 Sekunden abschließen, und während des Failover-Prozesses kann MHA die Datenkonsistenz in höchstem Maße sicherstellen, um eine echte Hochverfügbarkeit in diesem Sinne zu erreichen.
  • MHA ist ein Open-Source-MySQL-Hochverfügbarkeitsprogramm. Wenn MHA den Masterknotenausfall überwacht, wird der Slaveknoten mit den neuesten Daten automatisch zum neuen Masterknoten hochgestuft.

  • MHA erhält zusätzliche Informationen von anderen Knoten, um Konsistenzprobleme zu vermeiden. Das heißt, MHA erhält Dateninformationen von anderen Slave-Knoten und sendet diese Informationen an den Slave-Knoten, der dem Master-Knoten am nächsten liegt, sodass der Master-Knoten ausfällt Dies Der Slave-Knoten wird zum Master-Knoten befördert und dieser Slave-Knoten verfügt über alle Dateninformationen anderer Slave-Knoten.

  • MHA bietet auch die Online-Umschaltfunktion des Masterknotens, d. h. das Umschalten des Master-/Slave-Knotens bei Bedarf.

Die Grundkomponenten von MHA

MHA besteht aus zwei Teilen: MHA Manager (Verwaltungsknoten) und MHA Node (Datenknoten).

MHA Manager kann separat auf einem unabhängigen Computer bereitgestellt werden, um mehrere Master-Slave-Cluster zu verwalten, oder er kann auf einem Slave-Knoten bereitgestellt werden.

Implementierungsprinzip von MHA

  • MHA-Knoten werden auf jedem MySQL-Server ausgeführt. Wenn der Master ausfällt, kann er den Slave automatisch zum neuen Master hochstufen Leiten Sie alle anderen Slaves zum neuen Master um. Der gesamte Failover-Prozess ist für die Anwendung völlig transparent.
  • Während des automatischen MHA-Failover-Prozesses versucht MHA, das Binärprotokoll vom ausgefallenen Hauptserver zu speichern, um sicherzustellen, dass Daten nicht im größtmöglichen Umfang verloren gehen. Dies ist jedoch nicht immer möglich.
  • Wenn beispielsweise die Hardware des Hauptservers ausfällt oder nicht über SSH darauf zugegriffen werden kann, kann MHA das Binärprotokoll nicht speichern und führt lediglich einen Failover durch und verliert die neuesten Daten. Mit der halbsynchronen Replikation von MySQL 5.5 können Sie das Risiko von Datenverlusten reduzieren.
  • MHA kann mit halbsynchroner Replikation kombiniert werden. Wenn nur ein Slave das neueste Binärprotokoll erhalten hat, kann MHA das neueste Binärprotokoll auf alle anderen Slave-Server anwenden und so die Datenkonsistenz aller Knoten sicherstellen.

MHA-Nutzungsszenarien

Derzeit unterstützt MHA hauptsächlich eine One-Master-Multiple-Slave-Architektur.

  • Um MHA zu erstellen, muss ein Replikationscluster über mindestens drei Datenbankserver verfügen, einen Master und zwei Slaves, d. h. einer fungiert als Master, einer fungiert als Backup-Master und der andere fungiert als Slave.

  • Da mindestens drei Server erforderlich sind und aus Gründen der Maschinenkosten, hat Taobao es auch auf dieser Basis geändert. Derzeit unterstützt Taobao TMHA bereits einen Master und einen Slave.

  • Auf der Codeebene ist MHA nur eine Reihe von Perl-Skripten. Ich glaube also, dass es mit der technischen Stärke von Alibaba nicht schwierig ist, MHA so zu ändern, dass es einen Master und einen Slave unterstützt.

MySQL-Master-Slave-Architektur

Diese Art von Architektur wird häufig von Start-ups verwendet und erleichtert auch die schrittweise Erweiterung.

Merkmale dieser Architektur

  1. Geringe Kosten, schnelle und bequeme Bereitstellung
  2. Trennung von Lesen und Schreiben
  3. Durch rechtzeitiges Hinzufügen von Slave-Bibliotheken kann auch der Druck beim Lesen der Bibliothek verringert werden
  4. Hochverfügbarkeitssoftware kann Heartbeat verwenden, das vollständig für VIP, Daten und die Verwaltung des DRBD-Dienstes verantwortlich ist.
  5. kann nach dem Master-Ausfall automatisch und schnell umschalten, und die Slave-Bibliothek kann weiterhin Daten über VIP mit der neuen Master-Bibliothek synchronisieren
  6. Die Slave-Bibliothek unterstützt auch die Lese- und Schreibtrennung, die mithilfe von Middleware oder Programmen implementiert werden kann.

    MySQL-Cluster-Übersicht: Die MySQL-Cluster-Technologie bietet Redundanzfunktionen für MySQL in verteilten Systemen, erhöht die Sicherheit und kann die Systemzuverlässigkeit verbessern und Datenvalidität. Der MySQL-Cluster erfordert eine Reihe von Computern. Jeder Computer kann als Knoten verstanden werden und die Funktionen dieser Knoten sind unterschiedlich. MySQL Cluster kann entsprechend seiner Funktion in drei Arten von Knoten unterteilt werden: Verwaltungsknoten, Datenknoten und SQL-Knoten. Ein Computer im Cluster kann ein bestimmter Knoten oder eine Sammlung von zwei oder drei Knotentypen sein, um eine äußerst zuverlässige und leistungsstarke Cluster-Datenverwaltung für Anwendungen bereitzustellen.
  1. Derzeit beträgt das Datenvolumen Daher nehmen die Anforderungen an MySQL weiter zu. Die meisten früheren Hochverfügbarkeitslösungen weisen normalerweise bestimmte Mängel auf, z. B. die MySQL-Replikationslösung. Es dauert eine gewisse Zeit, bis der Master aktiv ist Wenn eine Master-Slave-Umschaltung erforderlich ist, ist viel Zeit erforderlich, daher hängt eine hohe Verfügbarkeit stark von Überwachungssoftware und automatisierten Verwaltungstools ab. Mit der kontinuierlichen Weiterentwicklung von MySQL Cluster wurden die Leistung und die hohe Verfügbarkeit erheblich verbessert.
  2. Grundkonzept von MySQL Cluster
  3. MySQL Cluster ist einfach eine MySQL-Cluster-Technologie, die aus einer Gruppe von Computern besteht Speichern Sie einen oder mehrere Knoten, einschließlich MySQL-Server, DNB-Cluster-Datenknoten, Verwaltung anderer Knoten und spezielle Datenzugriffsprogramme. Zusammen können diese Knoten die hohe Leistung und Verfügbarkeit für Anwendungen und die skalierbare Cluster-Datenverwaltung verbessern

    Der Zugriffsprozess von MySQL Cluster erfolgt in der Regel über einen bestimmten Lastausgleichsalgorithmus. Die SQL-Knoten führen den Datenzugriff auf die Datenknoten durch und geben Datenergebnisse von den Datenknoten zurück Knoten einfach SQL-Knoten und Datenknoten konfigurieren und verwalten;

    MySQL-Cluster-Knoten verstehen

    MySQL-Cluster können je nach Knotentyp in drei Knotentypen unterteilt werden, nämlich Verwaltungsknoten, SQL-Knoten und Datenknoten Beim vollständigen MySQL-Clustersystem werden die Daten tatsächlich in der Speicher-Engine des NDB-Speicherservers gespeichert, die Tabellenstruktur wird auf dem MySQL-Server gespeichert, die Anwendung greift über den MySQL-Server auf die Daten zu und der Clusterverwaltungsserver verwaltet die Daten NDB-Speicher über das Verwaltungstool ndb_mgmd Server;

    【1. Verwaltungsknoten】

    Der Verwaltungsknoten wird hauptsächlich zur Verwaltung anderer Knoten verwendet. Die Datei config.ini wird normalerweise konfiguriert, um zu konfigurieren, wie viele Kopien im Cluster verwaltet werden müssen, wie viel Speicher für Daten und Indizes auf jedem Datenknoten reserviert werden soll, IP-Adresse und der Festplattenpfad zum Speichern von Daten auf jedem Datenknoten;

    Verwaltungsknoten verwalten normalerweise Cluster-Konfigurationsdateien und Cluster-Protokolle. Jeder Knoten im Cluster ruft Konfigurationsinformationen vom Verwaltungsserver ab und fordert eine Möglichkeit an, festzustellen, wo sich der Verwaltungsserver befindet. Wenn im Knoten ein neues Ereignis auftritt, übermittelt der Knoten die Informationen dieser Art von Ereignis an den Verwaltungsserver und schreibt diese Informationen in das Cluster-Protokoll.

    Im Allgemeinen ist mindestens ein Verwaltungsknoten im MySQL-Cluster-System erforderlich. Es ist auch erwähnenswert, dass der Verwaltungsknoten normalerweise zuerst gestartet wird, da der Datenknoten und der SQL-Knoten vor dem Start die Cluster-Konfigurationsinformationen lesen müssen Server, Anwendung Auf Datenknoten kann nicht direkt zugegriffen werden, Daten können nur über SQL-Knoten zurückgegeben werden. Jeder SQL-Knoten ist mit allen Speicherknoten verbunden. Wenn also ein Speicherknoten ausfällt, kann der SQL-Knoten die Anforderung zur Ausführung an einen anderen Speicherknoten übertragen. Im Allgemeinen gilt: Je mehr SQL-Knoten, desto geringer die jedem SQL-Knoten zugewiesene Last und desto besser ist die Gesamtleistung des Systems.

    Datenknoten werden verwendet Speichern Sie die Daten im Cluster. Wenn ein Knoten ausfällt, gibt es immer einen anderen Datenknoten zum Speichern der Daten.

    Normalerweise können diese drei verschiedenen logischen Knoten auf verschiedene Computer verteilt werden. Der Cluster verfügt über mindestens 3 Computer. Um sicherzustellen, dass der Clusterdienst normal aufrechterhalten werden kann, wird der Verwaltungsknoten normalerweise auf einem separaten Host platziert.

    Empfohlenes Lernen:

    MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonLassen Sie uns gemeinsam die Hochverfügbarkeitsarchitekturtechnologie von MySQL analysieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen