Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann die Mysql-DB erneut synchronisiert werden, wenn Master und Slave bei einer Mysql-Replikation unterschiedliche Datenbanken haben?

Dies ist die vollständige Schritt-für-Schritt-Anleitung, um eine Master-Slave-Replikation von Grund auf neu zu synchronisieren:

Beim Master:

RESET MASTER;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

Und kopieren Sie die Werte des Ergebnisses des letzten Befehls irgendwo.

Ohne die Verbindung zum Client zu schließen (weil dies die Lesesperre aufheben würde), geben Sie den Befehl ein, um einen Speicherauszug des Masters zu erhalten:

mysqldump -u root -p --all-databases > /a/path/mysqldump.sql

Jetzt können Sie die Sperre aufheben, auch wenn der Dump noch nicht beendet ist. Führen Sie dazu den folgenden Befehl im MySQL-Client aus:

UNLOCK TABLES;

Kopieren Sie nun die Dump-Datei mit scp oder Ihrem bevorzugten Tool auf den Slave.

Beim Sklaven:

Öffnen Sie eine Verbindung zu mysql und geben Sie ein:

STOP SLAVE;

Laden Sie den Datendump des Masters mit diesem Konsolenbefehl:

mysql -uroot -p < mysqldump.sql

Slave- und Master-Protokolle synchronisieren:

RESET SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;

Wobei die Werte der obigen Felder diejenigen sind, die Sie zuvor kopiert haben.

Geben Sie abschließend Folgendes ein:

START SLAVE;

Um zu überprüfen, ob alles wieder funktioniert, nachdem Sie Folgendes eingegeben haben:

SHOW SLAVE STATUS;

Sie sollten sehen:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Das ist es!