So implementieren Sie eine bidirektionale MySQL-Sicherung

So implementieren Sie eine bidirektionale MySQL-Sicherung

Die bidirektionale MySQL-Sicherung wird auch als Master-Master-Sicherung bezeichnet, d. h. beide MySQL-Dienste sind Master und jeder Dienst ist ein Slave des anderen Dienstes.

Vorbereiten

Server

MySQL-Server Version IP-Adresse
masterA 5.6.41 192.168.1.201
masterB 5.6.41 192.168.1.202

Hinweis: Die gesicherte MySQL-Serverversion sollte konsistent gehalten werden, da verschiedene Versionen möglicherweise inkompatible Binärprotokollformate haben.

Spezifische Operationen

Beachten

Achten Sie während des Betriebs auf die Konsistenz der Daten auf beiden Seiten! ! !

MasterA-Konfiguration

meine.cnf

[mysqld]
# Eindeutige Serverkennung Server-ID = 1
# Name der binären Protokolldatei log-bin=mysql-bin

# Datenbanken, die gesichert werden müssen, mehrere Datenbanken werden durch getrennt, binlog-do-db=piumnl
# Datenbanken, die repliziert werden müssen, mehrere Datenbanken werden durch replicate-do-db=piumnl getrennt
# Name der Relay-Protokolldatei relay_log=mysqld-relay-bin
# Starten Sie den Synchronisierungsdienst manuell, um eine durch plötzliche Ausfallzeiten verursachte Asynchronisierung des Datenprotokolls zu vermeiden. skip-slave-start=ON
# Für gegenseitigen Master-Slave müssen Sie diese Zeile log-slave-updates=ON hinzufügen
# Deaktivieren Sie symbolische Links, um Sicherheitsrisiken vorzubeugen. Sie müssen symbolic-links=0 nicht hinzufügen.

# Optional# resolve - [Warnung] Slave SQL: Bei einem Absturz garantiert diese Konfiguration nicht, dass die Relay-Log-Informationen konsistent sind, Fehlercode: 0
Master-Info-Repository = Tabelle
relay-log-info-repository=Tabelle
Relay-Log-Wiederherstellung = 1

#Optional# Durch das Deaktivieren der DNS-Auflösung wird der bei der Autorisierung verwendete Domänenname ungültig. skip-host-cache
Namensauflösung überspringen

sql_mode=KEIN_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

MasterB-Konfiguration

meine.cnf

# Nicht mehr jedes Konfigurationselement erklären [mysqld]
Server-ID = 2
log-bin=mysql-bin

binlog-do-db=piumnl
replizieren-do-db=piumnl
relay_log=mysql-relay-bin
skip-slave-start=EIN
log-slave-updates=EIN
symbolische Links = 0

# resolve - [Warnung] Slave SQL: Bei einem Absturz garantiert diese Konfiguration nicht, dass die Relay-Log-Informationen konsistent sind, Fehlercode: 0
Master-Info-Repository = Tabelle
relay-log-info-repository=Tabelle
Relay-Log-Wiederherstellung = 1

Host-Cache überspringen
Namensauflösung überspringen

sql_mode=KEIN_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Erstellen eines Backup-Benutzers

Sowohl MasterA als auch MasterB müssen einen Backup-Benutzer erstellen:

create user 'rep'@'%' identified by 'rep'; # Ein Konto erstellen grant replication slave on *.* to 'rep'@'%'; # Dem Konto Master-Slave-Backup-Berechtigungen für alle Tabellen in allen Datenbanken erteilen

Bemerkung:

  1. MySQL unter Linux deaktiviert die Berechtigung „grant_priv“ für den Benutzer „root@%“, sodass die Autorisierung fehlschlägt, wenn Sie sich remote anmelden.
  2. Das Backup-Benutzerkonto und das Passwort können hier inkonsistent sein. Um den Vorgang zu vereinfachen, werden hier das gleiche Konto und Passwort verwendet.

Starten Sie den Server neu

Starten Sie den Server neu

Sicherung aktivieren

masterA

Überprüfen Sie den Status von MasterB

Masterstatus anzeigen\G;
# Hier müssen Sie auf die Datei- und Positionswerte achten

Sicherung aktivieren

Sklave stoppen;

# master_log_file ist der Dateiwert des ersten Schrittvorgangs. # master_log_pos ist der Positionswert des ersten Schrittvorgangs. Ändere Master in master_host=<master_hostname>, master_user=<rep_username>, master_port=<master_port>, master_password=<rep_password>, master_log_file='mysql-log.000003', master_log_pos=154;
Slave starten;

Ergebnisse anzeigen

Slave-Status anzeigen\G;
# Überprüfen Sie die beiden wichtigsten Punkte. Beide müssen Ja sein. Wenn einer Nein ist, überprüfen Sie die Fehlerprotokolldatei, um festzustellen, wo das Problem liegt. # Slave_IO_Running: Ja
# Slave_SQL_Running: Ja

masterB

Wiederholen Sie den Vorgang von MasterA in umgekehrter Reihenfolge.

prüfen

Fügen Sie Daten jeweils in MasterA und MasterB ein und prüfen Sie, ob der andere Server die erwarteten Daten rechtzeitig hat.

Frage

MySQL-Slave konnte das Relay-Protokoll nicht öffnen

Dies sollte ein Problem mit dem Relay-Protokoll sein. Sie können die folgenden Vorgänge versuchen

Sklave stoppen;
Protokolle spülen;
Slave starten;

Beim Lesen der Daten aus dem Binärprotokoll ist vom Master ein schwerwiegender Fehler 1236 aufgetreten.

Beim Abrufen der Protokolle aus der Hauptdatenbank wurde festgestellt, dass die erste Datei in der Datei mysql_bin.index der Hauptdatenbank nicht vorhanden war.

# Führen Sie zum Zurücksetzen die folgenden Vorgänge aus. # Wenn das Binärprotokoll oder das Relay-Protokoll andere Funktionen hat, führen Sie die folgenden Vorgänge nicht aus, um den Master zurückzusetzen.
Slave zurücksetzen;
Protokolle spülen;

<Datenbank>.<Tabelle>

Die Verwendung von <Datenbank>.<Tabelle> für Einfüge-, Aktualisierungs- und Löschvorgänge wird nicht gesichert (das ist eine große Falle)! ! !

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So implementieren Sie eine bidirektionale synchrone MySQL-Sicherung unter Windows

<<:  Implementierung eines einfachen Gobang-Spiels mit nativem JavaScript

>>:  Detaillierte Installation und Verwendung von Docker-Compose

Artikel empfehlen

Eine kurze Diskussion über die Anpassung mobiler Endgeräte

Vorwort Beim Schreiben von Front-End-Code kommt m...

Implementierung neuer Probleme mit CSS3-Selektoren

Inhaltsverzeichnis Grundlegende Selektorerweiteru...

Beispiel für die Installation von nginx in einem angegebenen Verzeichnis

Aufgrund von Unternehmensanforderungen müssen zwe...

Mybatis-Statistiken zur Ausführungszeit jeder SQL-Anweisung

Hintergrund In letzter Zeit werde ich in Intervie...

Grafisches Tutorial zur Installation der dekomprimierten Version von mysql5.7.14

MySQL ist in Community Edition (Community Server)...

N Möglichkeiten, mit CSS ein zweispaltiges Layout zu erreichen

1. Was ist ein zweispaltiges Layout? Es gibt zwei...

HTML/CSS (der erste Leitfaden, den Anfänger unbedingt lesen sollten)

1. Die Bedeutung von Webstandards verstehen - War...

MySQL 5.7 MySQL-Befehlszeilenclient - Befehlsdetails

MySQL 5.7 MySQL-Befehlszeilenclient mit Befehlen ...

Tutorial zur Verarbeitung statischer Ressourcen in Tomcat

Vorwort Alle Anfragen in Tomcat werden von Servle...

Einführung in die Verwendung gängiger XHTML-Tags

Es gibt viele Tags in XHTML, aber nur wenige werd...

HTML-Tabellen-Markup-Tutorial (14): Tabellenkopf

<br />In der HTML-Sprache können Sie der Tab...

Zusammenfassung zum Erlernen von HTML-Tags und Grundelementen

1. Elemente und Tags in HTML <br />Ein Elem...

Analyse der Verschachtelungsregeln von XHTML-Tags

In der XHTML-Sprache wissen wir alle, dass das ul...