Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 5 von 5
  1. #1
    Stammgast
    Registriert seit
    03.08.2007
    Beiträge
    216

    Standard plötzlich unterschiedliche Checksums?

    Hallo,

    ich verstehe es gerade nicht ... ich habe eine Replikation, die lange funktioniert hat. Die wurde permanent mittels Checksums auf Differenzen geprüft. Dann ging der Server, der den Slave hostete, kaputt.
    Der Server wurde repariert, die VMs auf andere Platten umgezogen, ich habe dann per mysqldump (mit Parameter --all-databases und --master-data) auf dem Master einen Dump gezogen, den wieder auf dem Slave eingespielt, durch den genannten Parameter hat der Slave auch die korrekte Binlog-Position des Masters gehabt, die Verbindung (IP, Credentials) bestand ja nach wie vor, und die Replikation lief wieder an.

    Und nun, knapp 24h später, haben alle, wirklich alle Tabellen unterschiedliche Checksums. Dasselbe OS (Windows Server), dieselbe MariaDB-Version (10.1.14), keine SecondsBehindMaster. Und ich finde keine Differenzen. Weil ... da keine sind. Selbst Tabellen, die seit dem Nehmen und Einspielen des Dumps definitiv nicht geändert wurden, haben nun unterschiedliche Checksums. Als würden da plötzlich unterschiedliche Algorithmen benutzt. Irgendwas übersehe ich doch...

    Kann mir jemand helfen, mich aufklären? Habe gelesen, dass es an unterschiedlichen Table Row Formats liegen kann, nur wo sehe ich, welches Format jeweils benutzt wird? In einem SHOW CREATE TABLE sehe ich da nichts, in den Server-Variablen bin ich auch nicht fündig geworden. Abgesehen davon, dass an der Konfiguration der Instanzen ja seit dem Servercrash nichts geändert wurde und es davor ja auch funktionierte. Was kann das sein?

    Danke schonmal vorab.

    Dave

    PS: CHECKSUM TABLE [] EXTENDED bringt auch unterschiedliche Summen.

  2. #2
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.264

    Standard

    Ich hab keine Ahnung von mysql Admin Dingen, besonders nicht Replikation usw. Deswegen kann ich nicht beurteilen, ob das beschrieben Vorgehen (Dump/Load) das erlaubt. Aber vom Sachverhalt würde mir vorschweben, dass sich etwas am encoding geändert hat. Scheinbar korrekte Darstellung aber halt anders codiert.
    Mehr fällt mir dazu nicht ein.
    Gruß, defo

  3. #3
    Stammgast
    Registriert seit
    03.08.2007
    Beiträge
    216

    Standard

    Danke, defo, für den Hinweis, aber das scheint es auch nicht zu sein.
    Ich muss zudem meinen ersten Thread ein wenig relativieren. Es sind nicht alle Tabellen betroffen, sondern nur ein sehr großer Teil (ca. 60%, so viele, dass ich annahm, es seien alle). Bisher habe ich aber noch kein Muster finden können.

    Ich habe jetzt eine Tabelle (Tab A) gefunden, die in lediglich 14 Spalten eine einzige Zeile speichert. Die Werte sind auf beiden Servern absolut identisch, die Checksums sind es nicht. Wenn ich jetzt auf dem Master diese Tabelle kopiere samt Daten (Tab B), hat diese neue Tabelle die Checksum von Tab A auf dem Slave. Es scheint also so zu sein, als würde das Problem auf dem Master bestehen, wofür ich ja nun gleich gar keine Erklärung habe, denn kaputt gegangen ist der Slave.

    Ich habe keine Ahnung, was hier vor sich geht ;-). Aber es scheint so zu sein, dass die Checksums auf dem Slave die korrekten sind und die auf dem Master die ... irgendwie falschen, kaputten. Wenn ich die einen Dump von der Tab A auf dem Master ziehe und auch gleich wieder einspiele, hat Tab A die Checksum wie auf dem Slave, dann stimmt sie also. Wenn ich aber interne MySQL-Mechanismen zur Reparatur bzw. zum Recreate benutze (ALTER TABLE [TabName] ENGINE = INNODB;, siehe hier), dann bleibt die Checksum die "falsche".

    Ich versteh's nicht...

    Nachtrag: Soweit ich weiß, werden die Checksums nur über die Daten ermittelt; eine leere Tabelle hat demnach auch 0 als Checksum. Lösche ich alle Daten einer Tabelle und INSERTe sie wieder, bleibt die Checksum "falsch". Lösche ich dagegen auch die Tabelle selbst und erstelle sie neu, stimmt danach alles. Ich versteh's nicht ...
    Geändert von Dave_Bowman (13.07.2017 um 09:51 Uhr)

  4. #4

  5. #5
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.264

    Standard

    Zitat Zitat von Dave_Bowman Beitrag anzeigen
    Lösche ich dagegen auch die Tabelle selbst und erstelle sie neu, stimmt danach alles. Ich versteh's nicht ...
    Nur dazu ein genereller Hinweis:
    Ein Table Create Script, das händisch erstellt wurde wird final idR mit einer Menge Default Einstellungen "appliziert", die zumindest teilweise auch von mglw. "schwankenden" Server Defaults vorgegeben werden. Um 2 wirklich identische Tabellen auf 2 Systemen aufzusetzen, würde man ggF. das vollständige DDL aus dem ersten System verwenden, statt des "identischen", manuell erstellten. (Man würde natürlich auch bei der Serverkonfiguration mit identischen Einstellung arbeiten, sowieso)

    Aber grundsätzlich ist sicher der Link von Christian hilfreich.
    Gruß, defo

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •