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.
quelle
In letzter Zeit habe ich versucht, Datenbank-Dumps in Git zu speichern. Dies kann unpraktisch werden, wenn Ihre Datenbank-Dumps wirklich groß sind, aber es funktioniert für kleinere Datenbanken (Wordpress-Sites und dergleichen).
Mein Backup-Skript lautet ungefähr:
quelle
Sie könnten so etwas tun (mit
a.sql
als wöchentliches Backup).Ihre Diff-Dateien werden zum Ende der Woche größer.
Mein Vorschlag ist allerdings nur gzip (
gzip -9
für maximale Komprimierung verwenden). Wir machen das im Moment und das ergibt eine 59MB GZ-Datei, während das Original 639MB hat.quelle
(Das habe ich in der Produktion noch nicht gemacht.)
Führen Sie einmal pro Tag oder Woche eine vollständige Sicherung durch. Backup-Relay-Protokolle einmal pro Stunde oder Tag.
quelle