Heim > Datenbank > MySQL-Tutorial > Hauptteil

Logische Sicherung und Point-in-Time-Wiederherstellung in MySQL basierend auf mysqldump und dem Binärprotokoll log-bin

巴扎黑
Freigeben: 2017-06-26 09:12:38
Original
1473 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!