Beheben von Datenbankkonflikten bei der MySQL-Replikation
Bei einem MySQL-Replikationssetup kann es zu einer Diskrepanz zwischen dem Datenbankinhalt des Master- und Slave-Servers kommen wenn der Slave für längere Zeit getrennt und dann wieder angeschlossen wird. Um die Datenbanken in solchen Situationen neu zu synchronisieren, können die folgenden Schritte unternommen werden:
Am Master-Server:
- Setzen Sie den Master zurück, indem Sie RESET MASTER ausführen ;.
- Sperren Sie die Tabellen für Lesevorgänge mit FLUSH TABLES WITH READ LOCK;.
- Erhalten Sie den aktuellen Replikationsstatus des Masters mit SHOW MASTER STATUS;. Kopieren Sie die für Master_Log_File und Master_Log_Pos zurückgegebenen Werte.
- Exportieren Sie die gesamte Datenbank vom Master in eine Dump-Datei mit mysqldump -u root -p --all-databases > /path/mysqldump.sql.
Auf dem Slave-Server:
- Stoppen Sie den Replikationsprozess des Slaves mit STOP SLAVE;.
- Importieren Sie den Datenbank-Dump des Masters in den Slave mit mysql -uroot -p < mysqldump.sql.
- Setzen Sie die Replikationskonfiguration des Slaves zurück, indem Sie RESET SLAVE; ausführen.
- Aktualisieren Sie die Replikationskonfiguration des Slaves so, dass sie mit der aktuellen Position des Masters übereinstimmt, indem Sie CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001 verwenden ', MASTER_LOG_POS=98;. Ersetzen Sie „mysql-bin.000001“ und „98“ durch die Werte, die Sie mit dem Befehl SHOW MASTER STATUS erhalten haben, der auf dem Master-Server ausgeführt wurde.
- Starten Sie den Replikationsprozess des Slaves erneut mit START SLAVE;.
Überprüfung:
Um die erfolgreiche Synchronisierung zu bestätigen, führen Sie SHOW SLAVE STATUS aus; auf dem Slave-Server. Die Ausgabe sollte sowohl Slave_IO_Running als auch Slave_SQL_Running als Ja anzeigen.
Das obige ist der detaillierte Inhalt vonWie synchronisiert man die MySQL-Replikation nach einer Slave-Trennung neu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!