MySQL Replication Fehler(1062)
Ich bin neu in MySQL und nach langer Suche bin ich in der Lage zu konfigurieren, master-slave-ZEILEN-basierte Replikation. Ich dachte, es wäre sicher und würde ich nicht haben, überprüfen Sie es wieder und wieder.
Aber heute, wenn ich nicht SHOW SLAVE STATUS;
auf slave-dann fand ich folgenden
konnte nicht ausgeführt Write_rows Veranstaltung auf
Tabelle mydatabasename.atable; Doppelte
Eintrag '174465' für Schlüssel 'PRIMARY',
Error_code: 1062; handler Fehler
HA_ERR_FOUND_DUPP_KEY; die Veranstaltung
master-log mysql-bin.000004,
end_log_pos 60121977
Kann mir jemand sagen wie dieses kann sogar kommen, wenn der master hat keine solchen Fehler und das schema auf beide server die gleiche dann, wie das geschehen konnte. Und wie es zu lösen ist, um diese wieder arbeiten und wie Sie verhindern, dass so etwas in Zukunft.
Bitte auch lassen Sie mich wissen, was Sie sonst zu unerwarteten sollte ich erwarten, dass andere als diese.
Es gibt viele Gründe, warum dies passieren könnte, jedoch wäre es sinnvoll gewesen wenn Sie möchten, überprüft die Daten speichern, für pk=174465 auf die master-und slave nach dem Fehler um zu sehen, ob die Daten bereits der gleiche.
Danke, ich check, dass man es ist schon da, aber der Grund zu Fragen, für die die Frage stellen, wie es hätte geschehen können, gab es ein Stromausfall, bevor Sie diese, Aber nicht mysql gewährleistet die Konsistenz durch die Verwendung von Datenbank-Transaktionen zu aktualisieren, Sklave???
Ich habe exakt das gleiche Problem, das passiert täglich durch einen cron-job ausführen auf dem master. Hast du eine Lösung finden?
Es war vor langer Zeit, habe ich nicht die Verwendung von mySQL, also ich erinnere mich nicht genau, wie ich gelöst, aber ich glaube nicht, dass ich finden konnte eine befriedigende Lösung oder Antwort.
InformationsquelleAutor Mubashar Ahmad | 2011-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es würde nie passieren auf master, warum?
Die Serie von SQL repliziert werden, von master -,
wenn der Datensatz bereits vorhanden ist, die in master, mysql ablehnen auf master
aber auf slave, wenn nicht und die Replikation position nicht erweitert, um die nächste SQL (nur es angehalten)
Grund?
Den insert-Abfrage der Datensatz schreiben direkt in den slave, ohne die Verwendung der Replikation von master -
Wie zu beheben?
Überspringen Sie die Fehler auf dem slave, wie
details - http://dev.mysql.com/doc/refman/5.0/en/set-global-sql-slave-skip-counter.html
Oder löschen Sie den doppelten Datensatz in den slave, fortsetzen der slave wieder (lassen Sie die Replikation tun die insertion)
Schlechteren Szenario, mussten Sie erneut das setup erneut, um sicherzustellen, die Integrität der Daten auf dem slave.
, Wie verhindern?
Check Anwendungs-Ebene, stellen Sie sicher, dass kein schreiben direkt in den slave
Dieses einschließlich, wie Sie die mysql-Verbindung in der Eingabeaufforderung
Split mysql-user, die können schreiben und Lesen,
So sollte Ihre Anwendung verwenden, Lesen Benutzer (master und slave), wenn nicht erforderlich schreiben.
Write-Benutzer (nur master) für die Aktion benötigen in Datenbank schreiben.
Ich mein problem lösen, indem Sie diese Antwort mit Konjunktionen, die durch dieses dmsimard.com/2013/12/02/fixing-mysql-fatal-error-1236 .
InformationsquelleAutor ajreal
überspringen counter ist keine praktikable Lösung ist immer, Sie sind das überspringen der Aufzeichnungen, aber es könnte Auswirkungen auf den weiteren Aufzeichnungen.
Hier ist die komplette details, warum der sql-slave-skip-Zähler ist schlecht.
http://www.mysqlperformanceblog.com/2013/07/23/another-reason-why-sql_slave_skip_counter-is-bad-in-mysql/
InformationsquelleAutor Suyash Jain