MySQL Binlog-Datenwiederherstellung: Detaillierte Erklärung zum versehentlichen Löschen einer Datenbank

MySQL Binlog-Datenwiederherstellung: Detaillierte Erklärung zum versehentlichen Löschen einer Datenbank

Wiederherstellung der MySQL Bin-Protokolldaten: versehentliches Löschen der Datenbank

Vorwort: Da ich auf der Testmaschine versehentlich ein komplettes MySQL-Datenbankschema gelöscht habe, habe ich kein Backup erstellt, da es sich um eine Testmaschine handelte. Jetzt verwende ich die Bin-Log-Methode von MySQL, um die Datenbank vor dem Löschen wiederherzustellen.

Voraussetzung für die Wiederherstellung von Bin-Log-Daten ist natürlich, dass die Bin-Log-Funktion aktiviert wurde. Wenn Sie die Daten nicht gesichert und das Bin-Log nicht aktiviert haben, müssen Sie möglicherweise andere Methoden wie Snapshots in Betracht ziehen, um die Wiederherstellung aus Systemperspektive durchzuführen.

Das Binärprotokoll wird häufig für die inkrementelle Datensicherung und -wiederherstellung sowie für die Master-Slave-Replikation von Datenbanken verwendet. Falls es nicht aktiviert ist, können Sie es wie folgt aktivieren:

1. Öffnen Sie die Binlog-Funktion von MySQL

MySQL unterstützt inkrementelle Sicherungen, aber die MySQL-Bin-Log-Funktion muss aktiviert sein.

Ändern Sie die MySQL-Konfigurationsdatei. Linux ist /etc/my.cnf, Windows ist MySQL-Installationsverzeichnis/my.ini
Fügen Sie unter [mysqld] eine Codezeile für log-bin wie folgt hinzu:

# Replikationsmasterserver (Standard)
# Binäre Protokollierung ist für die Replikation erforderlich
log-bin=mysql-bin

# Binäres Protokollierungsformat – gemischt empfohlen
binlog_format=gemischt.

2. Überprüfen Sie den Status des Binärprotokolls folgendermaßen: Ist es aktiviert?

mysql> Variablen wie „log_%“ anzeigen;

3. Alle Binärprotokolldateien anzeigen:

mysql> Bibliotheksprotokolle anzeigen;

mysql> Binärprotokolle anzeigen;
+------------------+------------+
| Protokollname | Dateigröße |
+------------------+------------+
|mysql-bin.000001 | 201 |
|mysql-bin.000002 | 351 |
| mysql-bin.000003 | 276 |
|mysql-bin.000004 | 201 |
|mysql-bin.000005 | 16509 |

4. MySQL zeigt das Betriebsprotokoll der Binärprotokolldatei an

#mysqlbinlog --start-position=0 /mydata/data/mysql-bin.000089

[root@test mysql]# mysqlbinlog --start-position=0 --stop-position=500 mysql-bin.000091
Warnung: Option „Startposition“: vorzeichenloser Wert 0 auf 4 angepasst
/*!50530 SETZEN @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SETZEN @@session.max_insert_delayed_threads=0*/;
/*!50003 SETZEN @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
TRENNUNGSZEICHEN /*!*/;
# bei 4
#151022 18:00:43 Server-ID 1 end_log_pos 107 Start: Binlog v 4, Server v 5.5.38-Log erstellt 151022 18:00:43 beim Start
# Warnung: Dieses Binärprotokoll wird entweder verwendet oder wurde nicht ordnungsgemäß geschlossen.
ROLLBACK/*!*/;
BINLOG '
y7MoVg8BAAAAZwAAAGsAAAABAAQANS41LjM4LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAADLsyhWEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
# bei 107
#151022 23:27:50 Server-ID 1 End-Log-Pos 198 Abfrage Thread-ID = 2 Exec-Zeit = 0 Fehlercode = 0
ZEITSTEMPEL FESTLEGEN=1445527670/*!*/;
SETZEN @@session.pseudo_thread_id=2/*!*/;
SETZEN Sie @@session.foreign_key_checks=0, @@session.sql_auto_is_null=0, @@session.unique_checks=0, @@session.autocommit=1/*!*/;
SETZEN Sie @@session.sql_mode=1608515584/*!*/;
SETZEN Sie @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SETZEN @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SETZEN @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
SCHEMA LÖSCHEN, WENN `pandora` VORHANDEN ist<pre name="code" class="sql">/*!*/;
# bei 198
#151022 23:27:50 Server-ID 1 End-Log-Pos 346 Abfrage Thread-ID = 2 Exec-Zeit = 0 Fehlercode = 0

5. Daten über das Bin-Protokoll wiederherstellen. Da ich das gesamte Schema gelöscht und nicht gesichert habe und das Bin-Protokoll zufällig aktiviert war, habe ich alle historischen Bin-Protokolle erneut ausgeführt und sie auf die Version vor dem versehentlichen Löschen zurückgesetzt (ich habe hier insgesamt 91 Dateien, die in Stapeln verarbeitet werden): (9999999999999: Dies erspart Ihnen die Mühe, die Start- und Endpositionen jeder Bin-Protokolldatei zu finden, und legt eine unendliche Zahl fest, um den Vorgang zu vereinfachen.)

#mysqlbinlog /var/lib/mysql/mysql-bin.000001 --start-position=0 --stop-position=9999999999999 | mysql -uroot -p123456
#mysqlbinlog /var/lib/mysql/mysql-bin.000002 --start-position=0 --stop-position=9999999999999 | mysql -uroot -p123456
#mysqlbinlog /var/lib/mysql/mysql-bin.000003 --start-position=0 --stop-position=9999999999999 | mysql -uroot -p123456
... ...

Die Schlussfolgerung lautet also:

  1. 1. Denken Sie daran, regelmäßig Backups zu erstellen.
  2. 2. Wenn ein Backup vorhanden ist, ist die Wiederherstellung schneller. Sie können inkrementelle Backups vom Backup-Zeitpunkt aus erstellen. Sie müssen nicht alle 91 Dateien von Anfang an in Stapeln ausführen, wie ich es getan habe. Natürlich kann ich auch eine Stapelverarbeitung mit einem Editor durchführen, was ziemlich schnell ist.
  3. 3. Öffnen Sie außerdem unbedingt das Bin-Log-Protokoll. Wenn Sie kein Backup erstellen, können Sie es auch über das Bin-Log-Protokoll wiederherstellen.
  4. 4. Seien Sie bei der Bedienung vorsichtig.

andere:

1. Es gibt auch ein sql_log

mysql> Variablen wie „sql_log_%“ anzeigen;

Mysql schaltet das SQL-Binärprotokoll ein und aus:
mysql> set sql_log_bin=0; //Schließen
setze Sitzung sql_log_bin=0;

2. Suchen Sie den Speicherort der Datei:

finde / -name my.cnf

3. Linux Zeigen Sie den vollständigen Pfad des aktuellen Verzeichnisses an

pwd-Befehl:
/var/lib/mysql

4. Überprüfen Sie den aktuellen Status des Binärprotokolls:

mysql>Masterstatus anzeigen;

5. Legen Sie in my.cnf/my.ini die Anzahl der Tage für das Rollback der Binärprotokolle fest:

Ablaufdatum der Protokolle: 7

6. Sehen Sie sich das Master-Bin-Protokoll an

mysql> Master-Protokolle anzeigen;
+-----------------+------------+
| Protokollname | Dateigröße |
+-----------------+------------+
| log-bin.000001 | 98 |
 +-----------------+------------+
1 Zeile im Satz (0,00 Sek.)
--------------------- 

Oben finden Sie die ausführliche Erklärung und Integration der MySQL Binlog-Datenwiederherstellung, die vom Herausgeber vorgestellt wurde. Ich hoffe, dass sie für alle hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Binlog-bezogene Befehle und Wiederherstellungstechniken in MySQL
  • So verwenden Sie Binlog zur Datenwiederherstellung in MySQL
  • Bringen Sie Ihnen bei, die Protokolldatei (binlog) der MySQL-Datenbank automatisch wiederherzustellen
  • MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung
  • So stellen Sie Daten über Binlog in MySQL wieder her

<<:  js+canvas realisiert Code-Regeneffekt

>>:  Installationsschritte von Docker-CE auf dem Raspberry Pi 4b Ubuntu19-Server

Artikel empfehlen

Detaillierte Erklärung der TMPF-Mounts im Docker-Datenspeicher

Bevor Sie diesen Artikel lesen, hoffe ich, dass S...

Detaillierte Erläuterung der allgemeinen Schritte zur SQL-Anweisungsoptimierung

Vorwort In diesem Artikel erfahren Sie hauptsächl...

Zusammenfassung des Wissens zu langsamen MySQL-Protokollen

Inhaltsverzeichnis 1. Einführung in Slow Log 2. L...

Probleme mit Index und FROM_UNIXTIME in MySQL

Null, Hintergrund Ich habe diesen Donnerstag viel...

Detaillierte Erklärung der API in Vue.js, die leicht zu übersehen ist

Inhaltsverzeichnis nächstesTick Syntaxvereinfachu...

MySQL-Grundlagen in 1 Stunde

Inhaltsverzeichnis Erste Schritte mit MySQL MySQL...

SQL-Implementierung von LeetCode (196. Doppelte Postfächer löschen)

[LeetCode] 196.Doppelte E-Mails löschen Schreiben...

Implementieren der Prioritätswarteschlange in JavaScript

Inhaltsverzeichnis 1. Einführung in die Priorität...

Natives JS zum Erzielen digitaler Tisch-Spezialeffekte

Dieser Artikel beschreibt einen Digitaluhreffekt,...

JavaScript implementiert die H5-Goldmünzenfunktion (Beispielcode)

Heute habe ich eine Aktivität für einen roten Ums...