Heim >Datenbank >MySQL-Tutorial >Logische Sicherung und Point-in-Time-Wiederherstellung in MySQL basierend auf mysqldump und dem Binärprotokoll log-bin
Quelle dieses Artikels:
Dieser Artikel simuliert nur die Verwendung von mysqldump- und log-bin-Binärprotokollen für einfache Tests. und werden nur als persönliche Studiennotizen verwendet, die möglicherweise noch weit von der praktischen Anwendung entfernt sind und nur als Referenz dienen.
Binärprotokoll von MySQL aktivieren
Für die simulierte Wiederherstellung sind die Dateien und das Protokollbin von mysqldump erforderlich, Sie müssen also die Protokollierung starten. Bin-Binärprotokoll.
Wenn mysql5.7.18 das Binärprotokoll aktiviert, müssen Sie zusätzlich zum Festlegen des Speicherorts von log-bin auch eine Server-ID festlegen. Frühere Versionen von MySQL sollten diese Einstellung nicht erfordern.
Lassen Sie uns über Open-Source-Software beschweren. Grundsätzlich gibt es einige Unterschiede zur vorherigen Version. Es ist oft schwierig, in verschiedenen Versionen nach Informationen zu suchen.
Nach dem Neustart log_bin-bezogene Variablen abfragen
mysqldump-Sicherung ( The Grundlegende Verwendung von Exportdaten
Der Befehl mysqldump verfügt über eine Reihe häufig verwendeter Befehle und verwendet die Sicherung von mysqldump (genau genommen Daten exportieren) und das Binärprotokoll log-bin Führen Sie Datenbankwiederherstellungsvorgänge durch.
-- Sichern Sie die gesamte testdb-Datenbank. -l bedeutet, allen Tabellen eine Lesesperre hinzuzufügen. -F (F muss in Großbuchstaben geschrieben sein, Kleinbuchstaben melden keinen Fehler, einzelne Seite ist ungültig) bedeutet rollt, um eine neue Protokolldatei zu generieren
mysqldump -u root -p -l -F -h localhost testdb > usr/local/mysqlbak/test20170607_data.sql
Die gesicherte Datei ist Tabelle erstellen und in Tabellenskript einfügen
-- Sichern Sie die beiden Tabellen test_table1 test_table2 in der testdb-Datenbank, indem Sie --no-create-info hinzufügen Diese gesicherte Datei Das Skript ohne Tabelle erstellen ist nur die Informationen zum Einfügen in die Tabelle
mysqldump -uroot -p -h localhost testdb test_table1 test_table2 --no-create-info> /test20170606_1. sql
-- Sichern Sie einen Teil der Daten in der test2-Tabelle in der testdb-Datenbank, d. h. sichern Sie die Daten in der test_table1-Tabelle, die mit id<1000 übereinstimmen
mysqldump -uroot - p -h localhost testdb test_table1 - -where "id<1000" > usr/local/mysqlbak/test20170606_2.sql
Weitere mysqldump-Parameter finden Sie unter :
Außerdem verwendet die MySQL-Log-bin-Ersetzungsstrategie:
den Index zum Schleifen von Dateien und führt unter den folgenden Bedingungen eine Schleife zum nächsten Index
1 durch. Serverneustart
2. Server aktualisiert
3. Das Protokoll hat die maximale Protokolllänge max_binlog_size
4 erreicht. Das Protokoll wird geleert. mysql> , in der folgenden Tabelle Sichern, wenn Daten vorhanden sind
Führen Sie mysqldump -u root -p -l -F -h localhost testdb --master-data= aus 2
> usr/local/mysqlbak/test20170607_data.sql Hier wird eine Option --master-data=2 hinzugefügt, um die aktuellen Daten im Backup zu notieren file. log_bin-Datei,Was den Grund für das Hinzufügen dieses Befehls angeht, berichten viele Blogs, dass nach der Verwendung von mysqldump zum Sichern einer Datei die Daten geändert und dann simuliert wird, dass die Datenbank versehentlich gelöscht oder heruntergefahren und wiederhergestellt wird, und dann mysqldump verwendet wird Um es zu erhalten, verwenden Sie log-bin, um es wiederherzustellen. Obwohl es sich bei allen um Testsimulationen handelt, gibt es ein offensichtliches Problem. Woher wissen Sie, ob und wie oft das Protokoll gescrollt wurde? gescrollt? Wenn das Protokoll nicht scrollt, stellen Sie die Log-Bin-Datei entsprechend dem Zeitpunkt oder der Position wieder her. Wenn es scrollt, woher wissen Sie, wie viele Protokolldateien gescrollt wurden? Sie müssen es bei mysqldump aufzeichnen ausgeführt wird und das Protokoll aktualisiert. Wenn Sie die neu generierte Protokollbindatei zum Wiederherstellen des Protokolls verwenden, können Sie bestimmen, welche Protokolle für die Wiederherstellung verwendet werden sollen.
Mit der Option --master-data=2 kennen wir den Speicherort der Protokolldatei während der mysqldump-Sicherung
Fügen Sie dann weiterhin 10 Datenelemente in die Tabelle ein
Simulieren Sie dann die Situation eines versehentlichen Löschens von Daten zu einem bestimmten Zeitpunkt, kürzen Sie die Testtabelle ab, die Testtabelle ist zu diesem Zeitpunkt leer
Verwenden Sie zunächst die Datei von mysqldump, um die Datenbank wiederherzustellen. Die Dateisicherung von mysqldump enthält 100 Datenzeilen.
Da die Daten in der Sicherungsdatei zum Zeitpunkt der Sicherung 100 Zeilen umfassen , es sind 100 Zeilen. Es gibt kein Problem.
Verwenden Sie dann log-bin, um nach Zeitpunkten wiederherzustellen. Wie oben erwähnt, zeichnet die Datei von mysqldump den Dateinamen von log-bin auf, nachdem das Protokoll aktualisiert wurde,
Dann können Sie feststellen, ob das Protokoll gescrollt wurde. Wenn es nicht gescrollt wurde, stellen Sie es entsprechend dem Zeitpunkt gemäß dem letzten Protokoll-Bin in der Abbildung unten wieder her.
Führen Sie eine mysqldump-Sicherung und Wiederherstellung durch
mysql -u root -p testdb < usr/local/mysqlbak/test20170607_data.sql
Fahren Sie dann basierend auf fort Zeitpunkt der Wiederherstellung von bin-log
mysqlbinlog --stop-datetime="2017-6-7 21:45:00" /var/lib/mysql/mysql-bin.000022 |. mysql -u root -p testdb
Dann kommen die Daten zurück.
Natürlich handelt es sich dabei nur um eine Simulationsoperation, es gibt aber noch viele Details, die noch nicht bekannt sind Wenn ein Protokollwechsel auftritt, muss bei der Wiederherstellung basierend auf dem Zeitpunkt auch ermittelt werden, welche Protokolldatei auf dem Zeitpunkt basiert.
Zusammenfassung:
In diesem Artikel wird nur ein einfaches Beispiel zur Modellierung des Datenbankwiederherstellungsvorgangs verwendet.
Der mysqldump-Sicherungsmodus ist relativ einfach und grob. Das einfache Exportieren der Daten als Einfügeskript führt zu Leistungsproblemen, wenn größere Daten wiederhergestellt werden. Mysqldump ist möglicherweise nicht geeignet und für die Sicherung und Wiederherstellung ist ein effizienteres xtrabackup erforderlich.
Das obige ist der detaillierte Inhalt vonLogische Sicherung und Point-in-Time-Wiederherstellung in MySQL basierend auf mysqldump und dem Binärprotokoll log-bin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!