Beim Einrichten einer MySQL-Master-Slave-Konfiguration kommt es häufig vor, dass Master und Slave synchronisiert sind oder es zu Fehlern oder Verzögerungen kommt. Nachfolgend können wir Fehler anhand dieser Aspekte beheben.
Etwas größere Websites konfigurieren grundsätzlich die MySQL-Master-Slave-Replikation. Einerseits wird MySQL-Master-Slave verwendet, um das Lesen und Schreiben der Datenbank zu trennen Andererseits ist die eigenständige Sicherung von MySQL selbst nicht sehr stark. Sie verwendet im Allgemeinen eine Master-Slave-Architektur und führt die Datensicherung auf dem Slave durch.
Im MySQL-Master-Slave-Replikationsprozess gibt es mehr oder weniger Master-Slave-Synchronisationssituationen. In diesem Artikel wird die Situation der Master-Slave-Synchronisation kurz zusammengefasst Ebene. Die Master-Slave-Datenbank ist inkonsistent.
1. Netzwerkverzögerung
Da es sich bei der MySQL-Master-Slave-Replikation um eine asynchrone Replikation auf Binlog-Basis handelt, ist die Übertragung von Binlog-Dateien über das Netzwerk die absolute Garantie Bei der Master-Slave-Synchronisierung ist die Wahrscheinlichkeit, dass dies geschieht, in den meisten Fällen sehr hoch, insbesondere wenn die Datensynchronisierung über Computerräume hinweg erfolgt. Trennen Sie daher das Lesen und Schreiben und achten Sie auf den frühen Entwurf der Geschäftsschicht.
2. Die Lasten der Master- und Slave-Maschinen sind inkonsistent
Weil die MySQL-Master-Slave-Replikation 1 IO-Thread in der Master-Datenbank startet und 1 SQL startet Über Threads und 1 IO-Thread weist eine der Maschinen eine hohe Auslastung auf und ist zu beschäftigt, was zu unzureichenden Ressourcen für einen der Threads führt und eine Master-Slave-Inkonsistenz auftritt.
3. Max_allowed_packet-Einstellungen sind inkonsistent
Der in der Master-Datenbank festgelegte max_allowed_packet ist größer als der in der Slave-Datenbank Master-Datenbank, Slave-Datenbank. Die Einstellungen in der Datenbank sind zu klein und können nicht ausgeführt werden, was zu einer Master-Slave-Inkonsistenz führt.
4. Master-Slave-Inkonsistenz, verursacht durch Inkonsistenz zwischen dem Schlüsselwert ausgehend von der Taste für die automatische Erhöhung und der Einstellung für die automatische Erhöhung der Schritte.
5. Wenn MySQL ungewöhnlich ausgefallen ist und sync_binlog=1 oder innodb_flush_log_at_trx_commit=1 nicht gesetzt ist, ist es sehr wahrscheinlich, dass die Binlog- oder Relaylog-Datei beschädigt wird, was zu einer Master-Slave-Inkonsistenz führt.
6. Master-Slave-Synchronisation durch Fehler in MySQL selbst.
7. Versionen sind inkonsistent, insbesondere wenn die höhere Version der Master und die niedrigere Version der Slave ist. Die von der Master-Datenbank unterstützte Funktion wird von der Slave-Datenbank nicht unterstützt.
Die oben genannten sind einige häufige Master-Slave-Synchronisationssituationen. Möglicherweise gibt es noch andere nicht synchrone Situationen. Bitte erzählen Sie uns von der Master-Slave-Inkonsistenzsituation, auf die Sie gestoßen sind.
Stellen Sie basierend auf der obigen Situation zunächst sicher, dass die Einstellungen für max_allowed_packet, Startpunkt für automatische Inkrementierung und Wachstumspunkt konsistent sind, und opfern Sie dann einen Teil der Leistung, um sync_binlog auf dem Hauptserver zu aktivieren. Für Bibliotheken, die innodb verwenden: Es wird empfohlen, den folgenden Inhalt zu konfigurieren
innodb_flush_logs_at_trx_commit = 1
2. innodb-support_xa = 1 # Mysql 5.0 oder höher
3 >
2. read_only
Das Obige ist die Lösung für das Problem in der von MySQL erstellten Master-Slave-Umgebung an alle.
Verwandte Artikel:
Beispiel für Mycat-Lese-/Schreibtrennung basierend auf MySQL-Master-Slave-Replikation Detaillierte Einführung in die Verwendung von Docker zum schnellen Aufbau einer MySQL-Master-Slave-Replikationsumgebung
Das obige ist der detaillierte Inhalt vonUnter den folgenden Aspekten werden wir uns mit dem Problem der Inkonsistenz der MySQL-Master-Slave-Replikation befassen.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!