Testen eines neuen MySQL-Sicherungstyps

    MySQL-Backups gibt es in zwei Hauptvarianten:

    Logische Sicherung

    Ein Text-Dump wird aus SQL-Abfragen erstellt, wie in mysqldump oder Sypex Dumper .

    Physische Sicherung

    Es werden exakte Kopien von Tabellendateien erstellt, ein typischer Vertreter von mysqlhotcopy .

    Während der Arbeit an der neuen Version von Sypex Dumper und Sypex Backuper habe ich eine weitere interessante Version des MySQL-Hot-Backups entwickelt. Welches ist eine Kreuzung zwischen diesen beiden Optionen.

    Betrachten Sie jedoch zunächst die wichtigsten Vor- und Nachteile. Wer statt Theorie sofort in die Praxis gehen möchte - am Ende des Beitrags finden Sie einen Link zu einem Testskript.

    Logische Sicherung


    Vorteile der logischen Sicherung:

    • Der resultierende Speicherauszug kann auf jedem System wiederhergestellt werden.
    • Sicherung eines entfernten MySQL-Servers;
    • Sicherung von Tabellen-Engines (einschließlich MEMORY);
    • Ein Backup wird auf einem laufenden Server erstellt, ohne den Betrieb zu beenden.

    Von den Hauptnachteilen:

    • Die logische Sicherung ist viel langsamer als die physische, da Sie alle Daten in lesbare SQL-Abfragen konvertieren müssen.
    • Größere Dateigröße aufgrund des Textsicherungsformats.

    Physische Sicherung


    Vorteile der physischen Sicherung:

    • maximale Sicherungsgeschwindigkeit, da Dateien einfach kopiert werden;
    • kleine Dateigröße (da das Binärformat verwendet wird);
    • Sie können Serverprotokolldateien sichern.

    Von den Hauptnachteilen:

    • Sicherung nur des lokalen Servers;
    • Es kann Probleme beim Übertragen des Backups auf einen anderen Computer / ein anderes System geben.
    • Sie können keine MEMORY-Tabellen sichern (da keine physischen Dateien vorhanden sind).
    • Es ist nicht immer möglich, einzelne Tabellen wiederherzustellen (z. B. können InnoDB-Tabellen in einer einzigen Datei gespeichert werden).

    Sypex MySQL RAW-Sicherung


    Bei der Analyse der logischen Sicherungsmethoden wurde festgestellt, dass der Hauptgeschwindigkeitsverlust auftritt, wenn Datenpakete vom Server empfangen, analysiert und in ein Textformat konvertiert werden. Darüber hinaus wird diese Analyse normalerweise von libmysql durchgeführt, entweder bei neuen PHP-Versionen von mysqlnd, und führt zu einem zusätzlichen Overhead.

    Aus diesem Grund habe ich mich entschlossen, unnötige Konvertierungen zu vermeiden, und ein Testskript geschrieben, das eine direkte Verbindung zu MySQL (über TCP oder einen UNIX-Socket) herstellt, ohne Standard-MySQL-Treiber mithilfe des MySQL-Client / Server-Protokolls zu verwenden . Das Skript speichert die Daten in einer Datei in Form von Binärpaketen, die vom MySQL-Server ( ProtocolBinary :: Resultset) empfangen werden) Somit wird keine Zeit für das Parsen von Paketen, Feldern und Abschirmdaten verschwendet. Die Analyse von Paketen und die Bildung von SQL-Abfragen erfolgt bereits beim Wiederherstellen der Sicherung.

    Infolgedessen erhöhte sich die Sicherungsgeschwindigkeit je nach Struktur der Tabelle um ein Vielfaches. Dumps sind auch sehr kompakt. Sie können die Geschwindigkeit eines RAW-Backups mit einem Backup mit mysqldump und SELECT ... INTO OUTFILE vergleichen.

    Mehrere Laufzeitergebnisse für Standard-IPB- und phpBB-Forentabellen.


    Der Hauptnachteil des Verfahrens ist natürlich die Unmöglichkeit der Wiederherstellung unter Verwendung von Standardverfahren, d.h. benötigen ein spezielles Skript zum Wiederherstellen. In unserem Fall ist dies jedoch nicht so wichtig, da diese Methode in jedem Fall mit einer speziellen Containerdatei funktioniert, die Deduplizierung, inkrementelle Sicherung, Verschlüsselung und andere Chips unterstützt.

    Laden Sie das Skript zum Testen hier herunter .
    Das Skript ist ein Technologiedemonstrator und kein Endprodukt.

    Melden Sie sich über die Ergebnisse in den Kommentaren ab. Denken Sie daran, dass SELECT ... INTO OUTFILE nur auf localhost funktioniert. Außerdem muss der MySQL-Benutzer über FILE-Berechtigungen und das Sicherungsverzeichnis über 777-Berechtigungen verfügen

    . UPD. Auf Wunsch der Arbeiter noch ein paar Tests mit größeren Tischen:

    Sicherung einer der Wikipedia-Tabellen (Kategorie-
    Bild

    Links ) ca. 1,3 GB Backup GeoNames-Tabellen ca. 1 GB
    Bild

    Jetzt auch beliebt: