Bei der Arbeit machen wir einen nächtlichen Dump unserer MySQL-Datenbanken. Von Tag zu Tag würde ich feststellen, dass fast 90-95% der Daten doppelt vorhanden sind und mit der Zeit zunehmen. (Zum Teufel zu diesem Zeitpunkt sind einige wahrscheinlich 99%)
Bei diesen Speicherauszügen handelt es sich bei einer Zeile um eine einzelne mysql INSERT-Anweisung. Die einzigen Unterschiede sind also ganze Zeilen und die Reihenfolge, in der sie in der Datei enthalten sind. Wenn ich sie sortieren würde, wäre der tatsächliche Unterschied von Datei zu Datei sehr gering.
Ich habe gesucht, und ich habe keine Möglichkeit gefunden, die Ausgabe auf Dump zu sortieren. Ich könnte es aber durch den sort
Befehl leiten. Dann würde es lange, lange Blöcke mit identischen Zeilen geben.
Also versuche ich einen Weg zu finden, um nur die Unterschiede zu speichern. Ich könnte mit einem Master Dump beginnen und mich jede Nacht dagegen wehren. Aber die Unterschiede würden jede Nacht größer sein. Oder ich könnte rollende Diffs erstellen, die einzeln sehr klein wären, deren Berechnung jedoch immer länger dauern würde, wenn ich jeden Abend ein Master-Diff der gesamten Serie zusammenstellen müsste.
Ist das machbar? Mit welchen Werkzeugen?
Bearbeiten Ich frage nicht, wie man MySQL-Backups macht. Vergiss für den Moment MySQL. Es ist ein roter Hering. Was ich wissen möchte, ist, wie man eine Reihe von rollenden Unterschieden aus einer Reihe von Dateien macht. Jede Nacht erhalten wir eine Datei (die zufällig eine mysqldump-Datei ist ), die der vorherigen Datei zu 99% ähnlich ist. Ja, wir zippen sie alle. Aber es ist überflüssig, diese Redundanz überhaupt zu haben. Alles, was ich wirklich brauche, sind die Unterschiede von der Nacht zuvor ... die sich nur um 1% von der Nacht zuvor unterscheiden ... und so weiter. Also, was ich will, ist, wie man eine Reihe von Unterschieden macht, so dass ich nur diese 1% pro Nacht speichern muss.