MySQL-slave-I/O-thread nicht ausgeführt wird
Habe ich einrichten der Replikation für MySQL-server. Ich kann eine Verbindung vom slave-Maschine auf dem master-server mit der Replikation Benutzer/Passwort. Ich habe den slave-SQL-thread ausgeführt wird, aber der slave I/O thread nicht läuft und die slave-I/O-status kommt als leer, wenn Sie überprüft mit 'show slave status'. Was könnte das problem sein?
Wie löse ich dieses? Neustart der slave nicht helfen.
Diese wurde mir schlecht: Anstatt eine "replication slave" Privileg *.*
war ich nur geben Sie für my_db.*
.
InformationsquelleAutor Champ | 2009-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Replikations-slave ist nur eine Globale Berechtigungen (z.B. pro-user only), das bedeutet, dass ein Befehl wie
hat keine Wirkung, da Sie nicht gewähren, es pro-Datenbank/Spalte/Tabelle.
Den Befehl, den Sie ausführen müssen, ist:
Dann
START SLAVE
. Sie finden es vielleicht auch sinnvoll, einen Blick in die mysql-Fehler-log.Ich würde vorschlagen, ein gutes Lesen der bei der Einrichtung der Replikation Dokumentation, wie es erklärt alles in detail.
InformationsquelleAutor brian-brazil
Stand ich vor gleichen Problem und behoben, die mithilfe der folgenden Schritte. Komplett thread-link ist http://www.percona.com/forums/questions-discussions/percona-xtrabackup/11842-backup-stopped-working-slave-sql-running-no
Schritte sind die gleichen wie bereits von @Luxknight007 außer seinem Schritt 2. Aber dieser thread enthält mehr Details, die sehr hilfreich ist. Folgende Lösung, die ich verwendet und es funktionierte.
"Das erste Problem ist, dass Sie verändert die Replikation position, anstatt die Festsetzung der Fehler und verwendet ein Falsches binlog-Datei-Namen-format (die du wahrscheinlich gerade benutzt, die man aus diesem post verlinkt würde ich sagen). Zurück, wo Sie begonnen haben, müssen Sie die binlog-Datei und position der slave-sql_thread hielt an. Basierend auf Ihren slave-status ausgegeben, es sieht aus wie der slave liest aus eine neue binlog-Datei (Sie können sehen, dass die Read_Master_Log_Pos Wert ist kleiner als der Exec_Master_Log_Pos Wert, was bedeutet, es hat zu Lesen, eine neuere binlog-Datei, als wenn die slave-sql_thread gestoppt), so dass Sie brauchen, um zu finden, die binlog-Datei, die die slave-sql_thread eigentlich nicht auf. So suchen Sie im Fehlerprotokoll für so etwas wie die folgenden:
Code:
Dies ist eine Probe, die ich neu erstellt, so dass bei Ihnen ein bisschen anders. Hinweis: der FEHLER ist ähnlich zu dem, was Sie in Ihrem slave-status. So finden Sie Ihre spezifische Fehlermeldung in der error-log-Datei, und suchen Sie dann das Ende Teil, wo Sie ist, gibt Sie den Namen der Datei und position ("Wir hielten an log 'mysql-bin.000001 position "3427" in meinem Beispiel). Die position sollte 315098143 basierend auf Ihre show slave status, wie das ist, wenn es die slave-sql_thread Ausführung beendet Veranstaltungen (Exec_Master_Log_Pos ), aber die io_thread Las weiter in neue (Read_Master_Log_Pos).
Sobald Sie die richtige binlog-Datei, name und position, re-run your change master-Anweisung auf Ihrem slave mit den Informationen, die Sie sich im error-log. Beachten Sie, dass Ihre Datei-name sollte etwas wie "newcrmdb1-bin.XXXXXX", nicht mysql-bin.XXXXXX (Sie können sehen, diese Namenskonvention Ihre show slave status oben).
Code:
Sobald Sie spitz zurück zu der ursprünglichen Replikation Stelle, wo der slave sql_thread fehlgeschlagen, Sie müssen dann den Fehler beheben, dass es Klagen über zu starten.
Die anfängliche Replikation Fehler erscheint, werden Sie informiert, dass die Tabelle
asteriskcdr
.bpleadcf
nicht auf dem slave, also dem insert-Anweisung fehlschlägt, wenn er versucht, wählen Sie die Daten aus dieser Tabelle. Also, das problem dort ist, dass Sie Ihren Sklaven zu sein scheint, die bereits out-of-sync mit dem master. Wenn die Tabelle in Frage, die auf den master-statische oder größtenteils statisch, Sie lösen könnten diese durch den Export der Daten aus nur, die Tabelle auf dem master mit mysqldump und laden Sie es in den slave. Wenn das nicht möglich ist, oder Sie nicht zu kümmern, dass die Daten, man könnte immer nur das überspringen der Replikation-Anweisung mit sql_slave_skip_counter, aber dann slave wäre eine weitere out-of-sync mit dem master.Und wenn alle Stricke reißen, Sie können immer neu erstellen die slave vom master als letzten Ausweg auch. =)"
InformationsquelleAutor M Arif
Ich hatte das gleiche problem und ich versuche diese Schritte
Zuerst fügen Sie diesen code irgendwo unter [mysqld] in der my.cnf-oder my.ini
slave-skip-errors=1046
dies alles überspringen doppelten Eintrag seit wir führen die gesamte Binär-log-Datei, wo die Replikation stoppen, Sie können einen Kommentar dieser code nach der erfolgreichen Replikation.
1.STOP SLAVE;
2.RESET SLAVE;
3.CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000049';
4.ÄNDERN MASTER, MASTER_LOG_POS=98;
5.START SLAVE;
überprüfen, ob Sie erfolgreich sind
InformationsquelleAutor Luxknight007