MySQL Binlog ist ein sehr wichtiges Protokoll in MySQL-Protokollen, das alle DML-Operationen der Datenbank aufzeichnet. Durch Binlog-Protokolle können wir eine Trennung von Lese- und Schreibvorgängen in der Datenbank, inkrementelle Datensicherungen und eine Datenwiederherstellung durchführen, wenn der Server ausfällt. Regelmäßige Sicherungen können Daten bei einem Serverabsturz sicherlich schnell wiederherstellen, aber herkömmliche vollständige Sicherungen können nicht in Echtzeit durchgeführt werden, sodass bei einem Absturz einige Daten beschädigt werden. Wenn Binlog zu diesem Zeitpunkt aktiviert ist, können die während des Zeitraums, in dem keine Sicherung durchgeführt wurde, verlorenen Daten über Binlog wiederhergestellt werden. Freunde, die mit Redis vertraut sind, haben möglicherweise gedacht, dass Redis zwei Persistenzmodi hat, nämlich AOF und RDB. RDB ähnelt der vollständigen Replikation von MySQL und AOF ähnelt dem Binlog von MySQL. Ich möchte noch etwas zur Datenwiederherstellung sagen. Da Binlog so gut ist, bedeutet das, dass wir keine regelmäßigen Backups durchführen müssen, wenn Binlog aktiviert ist? Tun Sie das nicht. Warum? Weil die Menge der Binlog-Daten sehr groß ist und die Leistung bei der Verwendung von Binlog zur Datenwiederherstellung sehr gering ist. Da es sich bei Binlog um eine Aufzeichnung von Vorgängen handelt, habe ich beispielsweise zu einem bestimmten Zeitpunkt zuerst Daten eingefügt und dann die Daten gelöscht. Die Daten selbst sind weg, aber es gibt zwei Vorgänge. Wenn es sich um eine vollständige Sicherung handelt, gibt es definitiv keine solchen Daten. Wenn Binlog verwendet wird, muss ein Einfüge- und ein Löschvorgang ausgeführt werden, sodass die Leistung und die Dateigröße relativ groß sind. Lassen Sie uns nach vielem Gerede nun über die Datenwiederherstellung sprechen: Bevor wir offiziell beginnen, sprechen wir darüber, wie Sie die MySQL-Datenbank vollständig sichern und wiederherstellen. Sichern Sie die Datenbank:Erstellen wir zunächst eine Datenbank, mytest Datenbank mytest erstellen; Als nächstes erstellen wir eine Tabelle benutze mytest; Tabelle erstellen t1(id int,name varchar(20)); Dann fügen wir zwei Daten ein in t1-Werte einfügen (1, 'xiaoming'); in t1-Werte einfügen (2, 'xiaohong'); Als nächstes sichern wir die mytest-Datenbank nach /root/bakup/ mysqldump -uroot -p -B -F -R -x --master-data=2 mytest | gzip > /root/backup/bak_$(date +%F).sql.gz Parameterbeschreibung: -B: Datenbank angeben -F: Protokoll aktualisieren -R: Sicherungsspeichervorgang usw. -x: Tabelle sperren --master-data: Fügen Sie der Sicherungsanweisung die Anweisung CHANGE MASTER sowie die Binärprotokolldatei und Standortinformationen hinzu Anzeigen von SicherungsdateienAuf diese Weise haben wir eine vollständige Sicherung der Daten erstellt. Löschen Sie anschließend die Datenbank und stellen Sie sie anschließend durch Sichern der Daten wieder her. gzip -d bakup_xxx.gz mysql -uroot -p < bakup_xxx.sql Nun haben wir die Daten in die Bibliothek importiert. Wir fahren mit der obigen Operation fort, fügen zwei neue Daten hinzu, xiaoli und xiaozhao, und löschen den Datensatz von xiaozhao. Lassen Sie uns vor dem Löschen das Binlog-Protokoll aktualisieren und ein neues Protokoll generieren, damit alles, was wir später tun, in der neuen Protokolldatei aufgezeichnet wird. (Aus der detaillierten Beschreibung des Binlog-Protokolls oben wissen wir, dass bei jeder Aktualisierung und jedem Neustart des Dienstes eine Binlog-Protokolldatei generiert wird.) Protokolle spülen; Masterstatus anzeigen; Wir stellen fest, dass die Binlog-Datei 0009 und die Position 154 ist. Diese beiden Informationen sind sehr wichtig. Lassen Sie uns nun die Einfüge- und Löschvorgänge durchführen Zu diesem Zeitpunkt sollten wir den Status des Binlog-Protokolls überprüfen, damit wir es später in diesen Zustand zurückversetzen können. Da wir diesen Zustand in der realen Umgebung jedoch nicht kennen, werden wir ihn hier nicht überprüfen. Der Wert dieses Zustands kann später durch Überprüfen der Binlog-Protokolldatei analysiert werden. Beginnen wir nun mit dem Fehler: Lass uns Xiaozhao löschen Auf diese Weise werden die Daten gelöscht. Lassen Sie uns den Status des Binärprotokolls noch einmal überprüfen. Masterstatus anzeigen; Zu diesem Zeitpunkt stellen wir fest, dass unser Löschvorgang ein Fehler war und wir ihn wiederherstellen müssen. Wie können wir ihn also wiederherstellen? Zu diesem Zeitpunkt können wir über die Binlog-Position wiederherstellen. Lassen Sie uns das Binlog-Protokoll von 0009 überprüfen. Wir können sehen, dass der Endpunkt von delete_rows 928 und der Startpunkt 755 ist. Wir können die Daten bis zur letzten Sicherung löschen und sie dann durch Ausführen von binlog wiederherstellen, natürlich vor 755. Die Syntax lautet wie folgt Beispielsweise möchten wir alle Vorgänge wiederherstellen (mit Ausnahme unserer Löschung, von der wir wissen, dass sie bei Punkt 755 erfolgte): mysqlbinlog mysql-bin.000009 --start-position 154 --stop-position 755 | mysql -uroot -p mytest Schauen wir uns die Tabelle noch einmal an Wir haben festgestellt, dass Xiaozhao wieder da ist. Natürlich gibt es hier ein zusätzliches Xiali, weil ich die Daten vor dem Backup nicht gelöscht habe. Natürlich können wir während des Wiederherstellungsvorgangs wählen, nur den Inhalt von Xiaozhao wiederherzustellen. Im Folgenden sind einige häufig verwendete Parameter bei der Wiederherstellung von Binlog-Protokollen aufgeführt: --start-datetime: Liest aus dem Binärprotokoll eine Zeit, die gleich oder später als der Zeitstempel des lokalen Computers ist. --stop-datetime: Liest aus dem Binärlog einen Zeitwert, der kleiner als der Zeitstempel oder gleich der Zeit des lokalen Computers ist. Der Wert ist derselbe wie oben. --start-position: Liest die angegebene Position des Positionsereignisses aus dem Binärprotokoll als Start. --stop-position: Liest als Ereignisende die angegebene Ereignisposition aus dem Binärlog Dies ist das Ende dieses Artikels über die Verwendung von Binlog-Protokollen zur Datenwiederherstellung in MySQL. Weitere Informationen zur MySQL-Binlog-Datenwiederherstellung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Grundlegende Fähigkeiten zum Entwerfen von Web-Frontend-Schnittstellen
>>: CSS-Menüschaltflächenanimation
Die Centos8-Distribution wird über die BaseOS- un...
1. Entpacken Sie die Datei an den gewünschten Ort...
Inhaltsverzeichnis Vorwort wissen Übung macht den...
Im vorherigen Artikel wurde der Installationsproz...
Gestalten Sie die oben gezeigte Webseite: <!DOC...
1. Hintergrund Wenn der Docker-Dienst gestartet w...
In diesem Artikel wird der spezifische Code von J...
Kurzes Tutorial Dies ist ein CSS3-Farbfortschritt...
1. Inline-Stile Um Inline-Stile zum virtuellen DO...
1. Verwenden Sie das Image mysql/mysql-server:lat...
Serverinformationen Verwaltungsserver: m01 172.16...
Aufgrund der zunehmenden Anzahl von Schaltflächen...
1. Iframe-Definition und -Verwendung Das Iframe-E...
In diesem Artikelbeispiel wird der spezifische Co...
I. Einleitung 1: SSL-Zertifikat Mein Domänenname ...