Konfiguration der MySQL-Master/Slave-Datenbanksynchronisierung und häufige Fehler

Konfiguration der MySQL-Master/Slave-Datenbanksynchronisierung und häufige Fehler

Da die Anzahl der Besuche zunimmt, werden bei einigen zeitaufwändigen Datenbanklesevorgängen im Allgemeinen Schreib- und Lesevorgänge getrennt, um den Druck auf die Datenbank zu verringern. Die Datenbank-Engine verwendet im Allgemeinen die Master/Slave-Architektur. Durch die Implementierung der Master-Slave-Konfiguration des MySQL-Servers kann eine Trennung von Lesen und Schreiben erreicht werden. Darüber hinaus können nach dem Absturz der Hauptdatenbank Daten aus der Standby-Datenbank wiederhergestellt werden, um eine Unterbrechung des Website-Zugriffs zu vermeiden. Nachfolgend finden Sie eine kurze Beschreibung des Konfigurationsprozesses für den MySQL Master-Slave-Server.

Zuerst müssen Sie den MySQL-Dienst auf zwei Maschinen im selben LAN installieren (natürlich können Sie auch eine Maschine verwenden, um zwei Maschinen zu virtualisieren).

Host A: 192.168.1.100

Slave B: 192.168.1.101

Es kann mehrere Slaves geben.

1. Melden Sie sich zunächst bei Host A an und führen Sie den folgenden Befehl aus, um Slave-Berechtigungen zu erteilen. Wenn mehrere Cluster-Rechner vorhanden sind, führen Sie ihn mehrmals aus:

mysql>GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.1.101' IDENTIFIZIERT DURCH '123456';

2. Öffnen Sie my.cnf von Host A und geben Sie die folgenden Konfigurationsparameter ein:

server-id = 1 #Host-ID, Integer log_bin = /var/log/mysql/mysql-bin.log #Stellen Sie sicher, dass diese Datei beschreibbar ist read-only = 0 #Host, sowohl Lesen als auch Schreiben sind möglich binlog-do-db = test #Daten müssen gesichert werden, mehrere Zeilen schreiben binlog-ignore-db = mysql #Datenbanken, die nicht gesichert werden müssen, mehrere Zeilen schreiben

3. Öffnen Sie my.cnf von Slave B und geben Sie die folgenden Konfigurationsparameter ein:

Server-ID = 2
log_bin = /var/log/mysql/mysql-bin.log
Master-Host =192.168.1.100
Master-Benutzer = Sicherung
Master-Passwort =123456
Master-Port =3306
master-connect-retry=60 #Wenn der Slave-Server feststellt, dass der Master-Server getrennt ist, die Zeitdifferenz (in Sekunden) zur Wiederherstellung der Verbindung
replicate-do-db =test #Repliziert nur eine bestimmte Datenbank replicate-ignore-db=mysql #Repliziert keine bestimmte Datenbank

4. Datenbank synchronisieren

Starten Sie nach der obigen Konfiguration Host A und Slave B jeweils neu, um eine automatische Synchronisierung zu erreichen.

5. Überprüfung

Auf Host A, mysql>show master status\G;

Diesen Inhalt können Sie in etwa sehen

Datei:mysql-bin.000001
Position: 1374
Binlog_Do_DB: Test
Binlog_Ignore_DB: mysql

Führen Sie im Slave B Folgendes aus: mysql>show slave status\G;

Der angezeigte Inhalt ist wie unten dargestellt:

Sie können sehen, dass das Element „Slave_IO_State“ „Warten auf Senden eines Ereignisses durch den Master“ lautet und beide Elemente im roten Kreis „Ja“ lauten. Daher kann grundsätzlich festgestellt werden, dass die Konfiguration erfolgreich war.

Darüber hinaus können Sie auf Host A einige INSERT , UPDATE - und DELETE -Operationen ausführen, um zu sehen, ob die Daten auf Host B geändert wurden.

Häufige Fehler

1. Der Master fällt aus. Nach der Reparatur und dem Neustart kann der Slave nicht mit dem Master synchronisiert werden.

Fehler: Got fatal error 1236 from master when reading data from binary log

Grund: Nach dem Neustart des Masters wird das MySQL-Binlog neu generiert und die entsprechende Datensatzposition ändert sich

Lösung:

-Master:

mysql > Protokolle leeren;
mysql > Masterstatus anzeigen;

Notieren Sie die Datei- und Positionswerte

-Sklave:

mysql > Slave stoppen;
mysql > ÄNDERN SIE MASTER IN MASTER_LOG_FILE='mysql-bin.000049',MASTER_LOG_POS=1359;
mysql> Slave starten;
mysql > Slave-Status anzeigen\G;

2. Der Slave fällt aus, die Einstellungen sind korrekt, aber er kann nicht initialisiert werden

Fehler: ERROR 1201 (HY000): Could not initialize master

Lösung:

-Master:

mysql > Protokolle leeren;
mysql > Masterstatus anzeigen;

Notieren Sie die Datei- und Positionswerte

-Sklave:

mysql > Slave zurücksetzen;
mysql > ändere Master in master_host='192.168.10.100',master_user='test',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=106;
mysql> Slave starten;
mysql > Slave-Status anzeigen\G;

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Optimierungsmethode für das MySQL-Synchronisierungsproblem mit großer Slave-Verzögerung
  • Grundlegendes Tutorial zum Lösen von Slave-Latenzproblemen in MySQL
  • Analyse von Verzögerungen bei der Slave-Überwachung in MySQL
  • MySQL Master-Slave-Daten sind inkonsistent, Eingabeaufforderung: Slave_SQL_Running: Keine Lösung
  • Ein praktischer Bericht über die Wiederherstellung einer MySQL Slave-Bibliothek
  • Detaillierte Erklärung des Parameters slave_exec_mode in MySQL
  • Installations- und Konfigurationsdetails zur Master-Slave-Synchronisierung der MySQL5.6-Datenbank (Master/Slave)
  • Lösung für MySQL Slave, der Oom-Killer auslöst
  • MySQL-Slave verzögert die Fremdschlüsselprüfung und die automatische Inkrementsperre für eine Spalte

<<:  Sicherheitsüberlegungen zur Windows-Serververwaltung

>>:  Vollständiger Code von Vue + iView zur Realisierung der Excel-Upload-Funktion

Artikel empfehlen

SSH-Portweiterleitung zur Erzielung einer Intranet-Penetration

Die Maschinen in unserem LAN können auf das exter...

MySQL5.7 Master-Slave-Konfigurationsbeispielanalyse

Implementierungsmethode für die MySQL5.7-Master-S...

JavaScript implementiert Feuerwerkseffekte mit Soundeffekten

Ich habe eine halbe Stunde gebraucht, um den Code...

Welche Nachteile hat die Bereitstellung der Datenbank in einem Docker-Container?

Vorwort Docker erfreut sich seit zwei Jahren groß...

Grafisches Tutorial zur Installation von MySQL 5.5.27

1. Installation von MySQL 1. Öffnen Sie die herun...

Eine kurze Diskussion über die Verwendung der Web Storage API

Inhaltsverzeichnis 1. Lokale Speichertechnologie ...

Schritte der Docker-Lernmethode zum Erstellen des ActiveMQ-Nachrichtendienstes

Vorwort ActiveMQ ist der beliebteste und leistung...

So stellen Sie Oracle mit Docker auf dem Mac bereit

So stellen Sie Oracle mit Docker auf dem Mac bere...

Tiefgreifendes Verständnis der sieben Kommunikationsmethoden von Vue-Komponenten

Inhaltsverzeichnis 1. Requisiten/$emit Einführung...

Zusammenfassung des in JS implementierten Minesweeping-Projekts

Dieser Artikel enthält die Zusammenfassung des JS...

Detaillierte Erklärung von JavaScript Promise und Async/Await

Inhaltsverzeichnis Überblick Vier Beispiele Beisp...

Teilen Sie 8 sehr nützliche CSS-Entwicklungstools

CSS3-Mustergalerie Diese CSS3-Musterbibliothek ze...