


Gedanken zur Architekturoptimierung aufgrund des Master-Slave-Replikationsproblems
Es liegt ein Problem vor
Die Master-Slave-Replikationsarchitektur weist viele Replikationsstagnationsprobleme wie 1032-Fehler und 1062-Fehler auf. Darunter tritt der 1032-Fehler auf, nachdem die Master-Datenbank erfolgreich war Beim Löschen wurde festgestellt, dass dieser Datensatz nicht in der Slave-Bibliothek gefunden werden konnte. Der Fehler 1062 wurde durch einen Primärschlüsselkonflikt verursacht, der auftrat, als die Slave-Bibliothek nach der Hauptbibliothek ausgeführt wurde Die Einfügung wurde abgeschlossen und die Einfügung konnte nicht erfolgreich sein. Diese Probleme können durch Überspringen des Fehlers und der Überprüfung der vorherigen Kopierdaten behoben werden. Die direkte Ursache dieser Probleme ist jedoch die Inkonsistenz der Master-Slave-Datenbankdaten. Zusätzlich zu möglichen Dateninkonsistenzen in der logischen Replikation selbst wird diese Inkonsistenz auch dadurch verursacht, dass die Geschäftsseite oder Entwickler unter Verstoß gegen die Vorschriften direkt Hinzufügungs-, Lösch- und Änderungsvorgänge an der Standby-Datenbank durchführen.
In der Master-Slave-Replikationsarchitektur implementiert die Master-Slave-Bibliothek die VIP-Bindung, um die Bibliothek als Master-Bibliothek festzulegen und Lese- und Schreibvorgänge bereitzustellen, und die Slave-Bibliothek übernimmt die Rolle des Backups, wenn ein Problem auftritt In der Master-Bibliothek wechselt der VIP zur Slave-Bibliothek. Die Slave-Bibliothek ermöglicht das Lesen und Schreiben, andernfalls dient die Slave-Bibliothek nur der Sicherung. Unter normalen Umständen erlauben wir Entwicklern nicht, sich über eine feste IP direkt bei der Slave-Datenbank anzumelden, aber in der Praxis ist es oft schwierig, dies zu vermeiden. Wie kann man also aus technischer Sicht verhindern, dass Entwickler in der Slave-Datenbank arbeiten? Wie kann dies vermieden werden, ohne den normalen Betrieb und das Failover der Hochverfügbarkeitsarchitektur zu beeinträchtigen?
2. Architekturkonfigurationsoptimierung
(1) Direkte Lösung
Der direkte Weg zur Lösung der oben genannten Probleme ist Erwägen Sie die Optimierung der Architekturkonfiguration, dh konfigurieren Sie den Lese-/Schreibstatus der Slave-Bibliothek in den schreibgeschützten Status.
Die offizielle MySQL-Website enthält die folgende Beschreibung zum schreibgeschützten Zugriff:
1.Whenthe read_only system variable is enabled, the server permits no client updatesexcept from users who have the SUPER privilege. 只读情况下,super权限可读写。 2.Updates performed by slave threads, if theserver is a replication slave. In replication setups, it can be useful toenable read_only on slave servers to ensure that slaves accept updates only from themaster server and not from clients. 不影响主从复制线程的读写。
Nach dem Aktivieren des schreibgeschützten Zugriffs, mit Ausnahme von Konten mit Superprivilegien und Replikationsthreads usw., für geschäftliche Entwickler und anderes Personal sind nicht betroffen. Auch wenn Sie sich bei der Standby-Datenbank anmelden, können Sie die Standby-Datenbankdaten nicht bedienen.
MySQL [db1]> show global variables like'read_only%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | read_only | ON | +---------------+-------+ 1 row in set (0.00 sec) MySQL [test]> insert child values('1','12'); ERROR 1290 (HY000): The MySQL server is running withthe --read-only option so it cannot execute thisstatement
(2) Wie führe ich ein perfektes Failover durch, nachdem ich es als schreibgeschützt konfiguriert habe?
Durch das Nur-Lesen aus der Slave-Bibliothek können illegale Vorgänge vermieden werden. Das Problem besteht jedoch darin, dass der VIP bei Problemen mit der Hauptbibliothek zur Slave-Bibliothek wechseln muss Zu diesem Zeitpunkt führt der schreibgeschützte Zugriff aus der Slave-Bibliothek dazu, dass die Datenbank keine externen Dienste hat. Daher ist es beim Umschalten erforderlich, die schreibgeschützte Funktion der Slave-Bibliothek abzubrechen und die schreibgeschützte Funktion der Hauptbibliothek festzulegen .
Am Beispiel der Keepalived + MySQL-Dual-Master-Architektur (Master-Slave) befindet sich der VIP im Normalbetrieb auf Master1, Master1 befindet sich im Lese-/Schreibstatus und Master2 befindet sich im schreibgeschützten Status. Sobald ein Problem mit Master1 auftritt, wechselt der VIP automatisch zu Master2. Vor dem Wechsel müssen zwei Schritte ausgeführt werden: 1. Master1 auf „schreibgeschützt“ setzen. 2. „Schreibgeschützt“ von Master2 aufheben.
3. Automatisierte Implementierungsideen
Für eine Master-Slave-Architektur muss das Failover manuell durchgeführt werden, daher können die beiden oben genannten Schritte auch manuell durchgeführt werden, jedoch mit Keepalived +MySQL Dual Master ( In der Master-Slave-Architektur wurden eine automatische Fehlerüberwachung und eine automatische VIP-Umschaltung implementiert. Die beiden oben genannten Schritte sollten auch in Skripte eingebettet werden, um eine Automatisierung zu erreichen.
Wir müssen hauptsächlich Funktionen zum Aktivieren und Deaktivieren von Readonly in der Datenbank in die automatischen Überwachungs- und Umschaltskripte einbetten. Wir schreiben hauptsächlich die Anweisungen „set global read_only=ON“ und „set globalread_only=OFF“. Beachten Sie gleichzeitig, dass vor dem Festlegen des Status zunächst die Anweisung „Variablen wie ‚read_only‘ anzeigen“ aufgerufen wird. Stellen Sie den schreibgeschützten Parameter auf den erforderlichen Status ein. Beachten Sie, dass die Triggeranpassung dieser Statuseinstellungen erfolgt, bevor ein Fehler erkannt und eine Umschaltung durchgeführt wird.
Die oben genannten Ideen wurden nun automatisch konvertiert und der persönliche Test war erfolgreich, was zeigt, dass die Ideen richtig sind.
Das Obige ist der Inhalt der Überlegungen zur Architekturoptimierung, die durch das Master-Slave-Replikationsproblem verursacht werden. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit der rasanten Entwicklung des Internets integrieren Webanwendungen zunehmend Datenbankoperationen. MySQL ist ein weltweit bekanntes relationales Datenbanksystem, das weit verbreitet ist. In hochgradig gleichzeitigen Webanwendungen ist die MySQL-Master-Slave-Replikation eine wichtige Möglichkeit, die Leistung und Verfügbarkeit der Datenbank zu verbessern. In diesem Artikel wird erläutert, wie Sie mit PHP die Master-Slave-Replikation der MySQL-Datenbank implementieren. 1. Was ist MySQL-Master-Slave-Replikation? Unter MySQL-Master-Slave-Replikation versteht man das Kopieren von Daten von einem MySQL-Datenbankserver auf einen anderen.

Aufbau eines hochverfügbaren MySQL-Clusters: Best-Practice-Leitfaden für Master-Slave-Replikation und Lastausgleich In den letzten Jahren hat sich die Datenbank mit der rasanten Entwicklung des Internets zu einem der zentralen Datenspeicher- und Verarbeitungs-Engines für die meisten Webanwendungen entwickelt. In diesem Szenario sind Hochverfügbarkeit und Lastausgleich zu wichtigen Überlegungen beim Entwurf der Datenbankarchitektur geworden. Als eine der beliebtesten relationalen Open-Source-Datenbanken hat die Cluster-Bereitstellungslösung von MySQL große Aufmerksamkeit auf sich gezogen. In diesem Artikel wird erläutert, wie Sie einen hochverfügbaren Datenbankcluster durch MySQL-Master-Slave-Replikation und Lastausgleich implementieren.

MySQL-Datenbank ist ein sehr beliebtes relationales Datenbankverwaltungssystem, das eine Vielzahl von Datenreplikationstechnologien unterstützt, von denen die Master-Slave-Replikationstechnologie am häufigsten verwendet wird. In diesem Artikel wird die Daten-Master-Slave-Replikationstechnologie in MySQL vorgestellt, einschließlich Prinzipien, Implementierungsmethoden, häufigen Problemen und Gegenmaßnahmen. 1. Prinzip der Master-Slave-Replikationstechnologie Die Master-Slave-Replikationstechnologie in MySQL kann die Daten einer MySQL-Datenbank auf andere Server kopieren, um Datensicherung, Lastausgleich, Lese-/Schreibtrennung und andere Funktionen zu erreichen. Sein Grundprinzip besteht darin, die Hauptdatenbank zu konvertieren

Redis ist ein auf Open-Source-Speicher basierendes Schlüsselwertspeichersystem, das häufig in Szenarien wie Caching, Warteschlangen und Echtzeit-Datenverarbeitung verwendet wird. In großen Anwendungen ist es zur Verbesserung der Verfügbarkeit und Leistung von Redis häufig erforderlich, eine verteilte Architektur einzuführen, in der die Master-Slave-Replikation ein häufig verwendeter Mechanismus ist. In diesem Artikel wird die Master-Slave-Replikationsfunktion von Redis vorgestellt, einschließlich Definition, Prinzip, Konfiguration und Anwendungsszenarien. 1. Die Definition der Redis-Master-Slave-Replikation bezieht sich auf die automatische Synchronisierung der Daten eines Redis-Knotens (d. h. Master-Knotens) mit anderen Knoten (d. h. Slave-Knoten).

Wie konfiguriere ich die Master-Slave-Replikation der MySQL-Datenbank? Die Master-Slave-Replikation der MySQL-Datenbank ist eine gängige Datensicherungs- und Hochverfügbarkeitslösung. Durch die Konfiguration der Master-Slave-Replikation können Sie Daten von einem MySQL-Server (Master-Server) auf einen anderen (Slave-Server) synchronisieren und so die Verfügbarkeit und Leistung der Datenbank verbessern. Im Folgenden wird beschrieben, wie Sie die Master-Slave-Replikation in einer MySQL-Datenbank konfigurieren und entsprechende Codebeispiele bereitstellen. Stellen Sie sicher, dass der MySQL-Server installiert und gestartet ist. Stellen Sie zunächst sicher, dass MySQL auf Ihrem System installiert ist.

Lastausgleich und Notfallwiederherstellung im Cluster-Modus: Eingehende Analyse und Praxis der MySQL-Master-Slave-Replikation Mit der rasanten Entwicklung der Internetbranche wird die Nachfrage nach Datenspeicherung und -verarbeitung immer höher. Als Reaktion auf den hohen gleichzeitigen Zugriff und die enorme Datenspeicherung hat sich der Cluster-Modus zu einer gängigen Lösung entwickelt. Lastausgleich und Notfallwiederherstellung sind wichtige Komponenten des Clustersystems, und die MySQL-Master-Slave-Replikation ist eine weit verbreitete Methode. Dieser Artikel befasst sich mit dem Lastausgleich und der Notfallwiederherstellung im Clustermodus und konzentriert sich dabei auf das Prinzip der MySQL-Master-Slave-Replikation.

Master-Slave-Replikation und Hochverfügbarkeitsarchitektur in MySQL Da Internetanwendungen und Datenmengen weiter wachsen, werden die Hochverfügbarkeit und Skalierbarkeit der Datenbank immer wichtiger. Als weit verbreitete relationale Open-Source-Datenbank bietet MySQL Master-Slave-Replikations- und Hochverfügbarkeitsarchitekturlösungen. Unter Master-Slave-Replikation versteht man den Prozess, bei dem eine MySQL-Datenbankinstanz als Master-Datenbank verwendet und deren Daten in eine oder mehrere Slave-Datenbanken (Slave) kopiert werden. Mit dieser Replikationsmethode können eine redundante Datensicherung und eine Trennung von Lesen und Schreiben erreicht werden.

Memcached ist ein Open-Source-Hochleistungs-Objekt-Caching-System mit verteiltem Speicher, das zur Beschleunigung von Webanwendungen verwendet werden kann und besonders gut beim Caching großer Datenmengen funktioniert. Für dieses System ist die Master-Slave-Replikation eine sehr wichtige Funktion, mit der Datenzuverlässigkeit und hohe Verfügbarkeit gewährleistet werden können. In diesem Artikel wird erläutert, wie Sie mit PHP die Master-Slave-Replikation der Memcached-Datenbank implementieren. Einführung in den Master-Slave-Modus Der Master-Slave-Modus ist eine verteilte Struktur des Memcached-Servers. Er besteht aus mindestens zwei Servern: einem
