Re: Slave resync... was ist denn da falsch? Re: Slave resync... was ist denn da falsch? Source: http://newsgroups.derkeiler.com/Archive/De/de.comp.datenbanken.mysql/2009−06/msg00101.html • From: Axel Schwenke <axel.schwenke@xxxxxx> • Date: Sun, 14 Jun 2009 17:28:17 +0200 Gerhard Haslberger <ghaslbe@xxxxxx> wrote: Frage A: Warum funktioniert folgendes NICHT? Hab vom Master vor ein paar Tagen einen Dump gezogen, eingespielt beides gestartet, alles tut. Nach dem Problemfall hab ich den alten Dump wieder in den Slave eingespielt. Nun dachte ich das die Differenzen über das Binlog wieder reingesyncht werden. Aber das scheint nicht der Fall zu sein. Laut Prozesse usw tut der Slave das, aber dann hat er plötzlich beim resync Duplicate entry '44555' for key 1' on query usw Probleme. Warum? Da fehlen Details. "Dump vom Master ziehen und auf Slave einspielen" setzt nicht zwangsläufig die Replikations−Koordinaten auf den Zeitpunkt des Dumps. Und möglicherweise ist der Dump noch nicht mal in sich konsistent. Aber schau dir mal die mysqldump−Option −−master−data an. Frage B: Was passiert denn beim Sync eigentlich wenn obiger Fehler auf der Master−DB aufgetreten ist? Steht das dann im Binlog? Wenn ein DML−Statement auf dem Master keine Datensätze verändert, dann wird es nicht geloggt. Das ist so lange klar und eindeutig, wie du nur einzelne Datensätze in einem Statement änderst. Ein INSERT INTO foo VALUES (...), (...), (...) kann hingegen Re: Slave resync... was ist denn da falsch? 1 Re: Slave resync... was ist denn da falsch? problematisch sein, wenn es z.B. beim dritten Datensatz ein "duplicate key" gibt. Wenn die Tabelle InnoDB war, hast du Glück und das Statement wird zurückgerollt und nicht geloggt. Bei MyISAM wird es geloggt (es hat ja zwei neue Datensätze auf dem Master eingefügt) und es wird der Fehler und die Anzahl "affected rows" mitgeloggt und auf dem Slave verglichen. Ebenfalls häßlich wird es mit Transaktionen, die InnoDB und MyISAM−Tabellen verändern, dann aber mit ROLLBACK abgebrochen werden (das sollte man lassen). Wenn ja, kann man das Abbruchverhalten beim Resync ändern? Der Slave kann bestimmte (oder alle) Fehler ignorieren. Das will man aber seltenst. Siehe −−slave−skip−errors hier: http://dev.mysql.com/doc/refman/5.0/en/replication−options−slave.html XL . Re: Slave resync... was ist denn da falsch? 2
© Copyright 2024 ExpyDoc