So verwenden Sie MySQL Binlog zum Wiederherstellen versehentlich gelöschter Datenbanken

So verwenden Sie MySQL Binlog zum Wiederherstellen versehentlich gelöschter Datenbanken

1 Aktuellen Datenbankinhalt einsehen und Datenbank sichern

Datenbankinformationen anzeigen:

Sichern Sie die Datenbank:

[root@localhost ~]# mysqldump -u root -pt > /mnt/t.sql
Passwort eingeben: 
[root@localhost ~]# ll /mnt/t.sql 
-rw-r--r-- 1 root root 1771 25. August 11:56 /mnt/t.sql

2 Aktivieren Sie die bin_log-Funktion

Überprüfen Sie zunächst, ob die Funktion bin_log in der Datenbank aktiviert ist

mysql> Variablen wie "%log_bin%" anzeigen;

Sie müssen die MySQL-Konfigurationsdatei my.cnf in /etc/ ändern und eine Zeile log_bin = mysql_bin hinzufügen

3 Fehlbedienung simulieren (3 Daten einfügen, Datenbank löschen)

mysql> in t1-Werte einfügen (3);
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)

mysql> in t1-Werte einfügen (4);
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)

mysql> in t1-Werte einfügen (5);
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)

mysql> wähle * aus t1;
+------+
|Ich würde|
+------+
| 1 |
| 2 |
| 5 |
| 4 |
| 3 |
+------+
5 Zeilen im Satz (0,00 Sek.)

mysql> Protokolle leeren;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> Masterstatus anzeigen;
+------------------+----------+--------------+------------------+
| Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql_bin.000003 | 106 | | |
+------------------+----------+--------------+------------------+
1 Zeile im Satz (0,00 Sek.)

Löschung von Daten:

mysql> t1 abschneiden;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> wähle * aus t1;
Leerer Satz (0,00 Sek.)

Zu diesem Zeitpunkt wird die Datenbank plötzlich beschädigt oder manuell gelöscht

mysql> Tabelle t1 löschen;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> Tabellen anzeigen;
Leerer Satz (0,00 Sek.)

4 Datenrettung

1 Verwenden Sie die gesicherte Datei /mnt/t.sql zur Wiederherstellung der Daten

mysql> Quelle /mnt/t.sql;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 2 Zeilen betroffen (0,00 Sek.)
Datensätze: 2 Duplikate: 0 Warnungen: 0

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
mysql> Tabellen anzeigen;
+-------------+
| Tabellen_in_t |
+-------------+
| t1 |
+-------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle * aus t1;
+------+
|Ich würde|
+------+
| 1 |
| 2 |
+------+
2 Zeilen im Satz (0,00 Sek.)

2 Es sind noch drei Daten vorhanden, die nicht wiederhergestellt wurden. Was soll ich tun? Kann nur mit Binärprotokoll wiederhergestellt werden

[root@localhost ~]# mysqlbinlog --no-defaults /var/lib/mysql/mysql_bin.000002 | mysql -u root -p123.com t
mysql> verwende t;
Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen
Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten

Datenbank geändert
mysql> wähle * aus t1;
+------+
|Ich würde|
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+
5 Zeilen im Satz (0,00 Sek.)

MySQL>

5 Fazit

Sichern Ihrer Daten

mysqldump -uroot -p123456 test -l -F '/tmp/test.sql'
-l: Lesesperre (kann nur lesen, kann nicht aktualisieren)
-F: Protokolle leeren, wodurch neue Protokolldateien, einschließlich Log-Bin-Protokolle, neu generiert werden können

Binlog-Protokoll anzeigen

mysql>Masterstatus anzeigen;

Daten vor dem Import sichern

mysql -uroot -pt -v -f </mnt/t.sql
-v zeigt detaillierte Informationen zum Import an -f bedeutet, dass Sie einen Fehler in der Mitte überspringen und mit der Ausführung der folgenden Anweisung fortfahren können

Binärprotokolldatei „binlog-file“ wiederherstellen

mysqlbinlog --no-defaults binlog-file | mysql -uroot -pt

Ab einem bestimmten Punkt erholen (367)

mysqlbinlog --no-defaults --stop-position="367" mysql-bin.000001| mysql -uroot -pt

Prüfen Sie zuerst diesen Punkt, verwenden Sie mehr zur Überprüfung

[root@localhost mysql]# /usr/bin/mysqlbinlog --no-defaults mysql-bin.000002 --start-position="794" --stop-position="1055" | mehr

Dann wiederherstellen

[root@localhost mysql]# /usr/bin/mysqlbinlog --no-defaults mysql-bin.000002 --start-position="794" --stop-position="1055" | /usr/bin/mysql -uroot -pt

Binlog zurücksetzen

mysql> Master zurücksetzen;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

mysql> Masterstatus anzeigen;
+------------------+----------+--------------+------------------+
| Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
mysql> flush logs;#Schließen Sie die aktuelle Binärprotokolldatei und erstellen Sie eine neue. Der Name der neuen Binärprotokolldatei ist die Nummer der aktuellen Binärdatei plus 1.

Dies ist das Ende dieses Artikels zur Verwendung von MySQL-Binlog zum Wiederherstellen versehentlich gelöschter Datenbanken. Weitere Informationen zur Wiederherstellung versehentlich gelöschter Datenbanken mit MySQL-Binlog 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:
  • Wiederherstellung der MySQL-Datenbank (mit dem Befehl mysqlbinlog)
  • Binlog-bezogene Befehle und Wiederherstellungstechniken in MySQL
  • MySQL Binlog-Datenwiederherstellung: Detaillierte Erklärung zum versehentlichen Löschen einer Datenbank
  • So verwenden Sie Binlog zur Datenwiederherstellung in MySQL
  • Bringen Sie Ihnen bei, die Protokolldatei (binlog) der MySQL-Datenbank automatisch wiederherzustellen
  • Detaillierte Schritte zum Wiederherstellen der MySQL-Datenbank über Binlog-Dateien unter Linux
  • Erläutern Sie das Binlog-Protokoll von MySQL und wie Sie das Binlog-Protokoll zum Wiederherstellen von Daten verwenden
  • MySQL verwendet mysqldump + binlog, um die Prinzipanalyse der gelöschten Datenbank vollständig wiederherzustellen
  • MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung
  • So stellen Sie Daten mit Binlog in MySQL 5.7 wieder her

<<:  Detaillierte Erläuterung der Implementierungsmethode und Verwendung von abgerundeten Ecken mit CSS3-Randradius

>>:  Detaillierte Erklärung des HTML-Tags <input> und wie man es deaktiviert

Artikel empfehlen

Beispielcode zum Ausblenden von Element-Bildlaufleisten mithilfe von CSS

Wie kann ich die Bildlaufleisten ausblenden und t...

Javascript implementiert die Webversion des Flipperspiels

Das mit JavaScript-Objekten und -Methoden impleme...

JavaScript-Code zur Implementierung eines einfachen Rechners

In diesem Artikelbeispiel wird der spezifische Ja...

Zusammenfassung der Probleme bei der Installation von MySQL 5.7.19 unter Linux

Als ich MySQL zum ersten Mal auf meiner virtuelle...

JavaScript-OffsetParent-Fallstudie

1. Definition von offsetParent: offsetParent ist ...

Optimierte Implementierung von count() für große MySQL-Tabellen

Das Folgende ist mein Urteil basierend auf der Da...

So behandeln Sie einen Überlauf numerischer MySQL-Typen

Lassen Sie mich Ihnen nun eine Frage stellen. Was...

js, css, html bestimmen die verschiedenen Versionen des Browsers

Verwenden Sie reguläre Ausdrücke, um die IE-Browse...

CSS-Spezifikation BEM CSS und OOCSS Beispielcode detaillierte Erklärung

Vorwort Aufgrund der unterschiedlichen Codiergewo...

So ändern Sie die Zeit in der virtuellen CentOS-Maschine

Das obere Bild zeigt die Systemzeit und das unter...

So verwenden Sie den JS-Code-Compiler Monaco

Vorwort Meine Anforderungen sind Syntaxhervorhebu...

So verwenden Sie Axios, um Netzwerkanforderungen in React Native zu stellen

In der Front-End-Entwicklung gibt es viele Möglic...

Einfache Anwendungsbeispiele für benutzerdefinierte MySQL-Funktionen

Dieser Artikel veranschaulicht anhand von Beispie...