Es gibt viele Gründe warum die MySQL-Replikation aus dem Tritt geraten kann. Folgende Schritte helfen mir meistens die Slaves wieder zu aktivieren bzw. einen weiteren Slave in die Replikation einzuhängen.
Auf dem Master wird zunächst ein Dump der Datenbank(en) gezogen, danach dürfen keine Änderungen an der Datenbank mehr erfolgen!:
mysqldump --add-drop-table -u user -p testdb > testdb.sql
Auf dem Master listet folgendes Kommando die aktuelle Binlog-Position auf:
mysql> SHOW MASTER STATUS;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000002 | 329362302 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)
Auf dem Slave wird dann die Replikation mit den jetzt bekannten Informationen neu gestartet:
mysql> SLAVE STOP;
Query OK, 0 rows affected (0.00 sec)
mysql> CHANGE MASTER TO MASTER_HOST='master-hostname', MASTER_USER='user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=329362302;
Query OK, 0 rows affected (0.05 sec)
mysql> SLAVE START;
Query OK, 0 rows affected (0.00 sec)
Danach wird der vorher gezogene Dump wieder eingespielt:
mysql -u user -p < testdb.sql