Ich habe zwischen zwei MySQL hosts eine Replikation aus Datensicherheitsgruenden installiert. Auf dem Replikationshost wird im Regelfall nichts abgefragt, lediglich das Backup laeuft darueber.
Master liegt auf einem Root Server (SLES9, mysql-4.0.18-32.28 ), der Slave ist ein CentOS 5 (mysql-server-5.0.22-2.1.0.1), der an den Master mit einer einfachen 1000/256 A-DSL angeschlossen ist. D.h. die Replikation erfolgt ueber 1000er DSL. Das geht, da auf der Kiste sehr wenig los ist.
Vom Slave wird dann per Skript und mysqldump das backup gezogen.
Jetzt passiert es aber immer wieder, dass genau eine Tabelle korrupt geht und ich durch mysqldump die folgende Fehlermeldung erhalte:
Code: Select all
mysqldump: mysqldump: Couldn't execute 'show create table `wikisearchindex`': Table './wikidb/wikisearchindex' is marked as crashed and should be repaired (145)
Der Aufrud selber sieht so aus:
Code: Select all
mysqldump --opt -h $HOST --skip-lock-tables -C -u root -pXXXX --all-databases > mysql.dump
Sichere ich den Master direkt, bekomme ich keine Fehlermeldung, aber es dauert halt laenger.
Ein SHOW SLAVE STATUSg auf dem Slave ist aufgrund der langen Fehlermeldung nicht sinnvoll zu gebrauchen.
Jetzt meine Frage, warum dieser Fehler auf dem Slave kommt? Auf dem Master ist die Tabelle ja i.O. Und wie ich z.B. feststellen kann, ob die Replikation 100%ig laeuft? Und vor allem natuerlich, wie kann ich eine angeblich korrupte Datenbank auf dem Slave verhindern?