Wenn ein Backup vorhanden ist, ist es ganz einfach. Sie müssen nur die aktuellsten Backup-Daten generieren und dann mysqlbinlog verwenden, um die Daten nach dem Backup-Zeitpunkt abzurufen und sie dann im aktuellen Netzwerk wiederherzustellen. Wenn keine Sicherungskopie vorhanden ist, kann es zu Problemen kommen und die Kosten für die Wiederherstellung der Daten sind ebenfalls sehr hoch. So verwenden Sie mysqlbinlog, um Daten nach dem Sicherungszeitpunkt abzurufen: Führen Sie ein einfaches Experiment durch, löschen Sie die MySQL-Tabellendaten und verwenden Sie dann mysqlbinlog, um die Daten der gerade gelöschten Tabelle abzurufen. Die Erstellungszeit der App-Tabelle und das Einfügen der Daten: 2013-02-04 10:00:00 Prinzip: mysqlbinlog Voraussetzung: MySQL hat Binärprotokoll aktiviert Vor dem Testen des Löschens: mysql> Tabellen anzeigen; +--------------------------+ | Tabellen_im_Bericht_sina | +--------------------------+ | App | | Prüfung | +--------------------------+ mysql> jetzt auswählen(); +---------------------+ | jetzt() | +---------------------+ | 04.02.2013 11:45:44 | +---------------------+ 1 Zeile im Satz (0,01 Sek.) mysql> wähle count(1) aus App aus; +----------+ | Anzahl(1) | +----------+ | 10 | +----------+ 1 Zeile im Satz (0,01 Sek.) Datenlöschung starten: mysql> löschen aus App, wo ID =1; Abfrage OK, 1 Zeile betroffen (0,00 Sek.) MySQL> mysql> löschen aus App, wo ID < 6; Abfrage OK, 4 Zeilen betroffen (0,01 Sek.) mysql> wähle count(1) aus App aus; +----------+ | Anzahl(1) | +----------+ | 5 | +----------+ 1 Zeile im Satz (0,00 Sek.) mysql> jetzt auswählen(); +---------------------+ | jetzt() | +---------------------+ | 04.02.2013 12:08:45 | +---------------------+ Datenabruf starten: 1. Suchen Sie den Speicherort des Bin-Protokolls: /app/mysql/log -rw-rw---- 1 mysql mysql 17K 4. Feb. 11:43 alert.log -rw-rw---- 1 mysql mysql 1,0K 1. Nov. 14:52 master-bin.000001 -rw-rw---- 1 mysql mysql 126 25. Dezember 14:00 master-bin.000002 -rw-rw---- 1 mysql mysql 126 25. Dezember 14:02 master-bin.000003 -rw-rw---- 1 mysql mysql 126 25. Dezember 14:02 master-bin.000004 -rw-rw---- 1 mysql mysql 107 25. Dezember 14:02 master-bin.000005 -rw-rw---- 1 mysql mysql 13K 4. Feb. 12:02 master-bin.000006 Sie können sehen, dass das einzige kürzlich geänderte Binärprotokoll master-bin.000006 ist. (Wenn sich die versehentliche Löschung über mehrere Bin-Protokolle erstreckt, müssen Sie die Daten beim Abrufen der Bin-Protokolle einzeln abrufen.) Speichern Sie alle während dieser Zeit ausgeführten SQL-Anweisungen in der wiederherzustellenden SQL-Datei. mysqlbinlog --start-date='2013-02-04 10:00:00' --stop-date='2013-02-04 12:08:45' /app/mysql/log/master-bin.000006 >/app/mysql/mysql_restore_20130204.sql Natürlich ist diese Zeit in der aktuellen Netzwerkumgebung möglicherweise nicht so genau und es kann zu Störungen durch andere Transaktions-SQL-Anweisungen kommen. Erstellen einer temporären Datenbank Datenbank für_bak erstellen; Exportieren Sie die Tabellen, die versehentlich in der aktuellen Datenbank-App gelöscht wurden mysqldump -uroot -ppwd meine_db-App > /app/mysql/app.sql Importieren Sie die aktuellen Daten in eine temporäre Tabelle: mysql -root -ppwd for_bak < /app/mysql/app.sql Schauen wir uns einen Teil des Inhalts von /app/mysql/mysql_restore_20130204.sql an: (Sie können die böse Löschanweisung sehen) ZEITSTEMPEL EINSTELLEN=1359949544/*!*/; BEGINNEN /*!*/; # bei 12878 #130204 11:45:44 Server-ID 1 End-Log-Pos 12975 Abfrage Thread-ID = 5 Exec-Zeit = 974 Fehlercode = 0 ZEITSTEMPEL EINSTELLEN=1359949544/*!*/; aus App löschen, bei der ID =1 /*!*/; # bei 12975 #130204 11:45:44 Server-ID 1 end_log_pos 13002 Xid = 106 BEGEHEN /*!*/; # bei 13002 #130204 11:45:44 Server-ID 1 End-Log-Pos 13077 Abfrage Thread-ID = 5 Exec-Zeit = 1013 Fehlercode = 0 ZEITSTEMPEL EINSTELLEN=1359949544/*!*/; BEGINNEN /*!*/; # bei 13077 #130204 11:45:44 Server-ID 1 End-Log-Pos 13175 Abfrage Thread-ID = 5 Exec-Zeit = 1013 Fehlercode = 0 ZEITSTEMPEL EINSTELLEN=1359949544/*!*/; aus App löschen, deren ID < 6 ist /*!*/; # bei 13175 #130204 11:45:44 Server-ID 1 end_log_pos 13202 Xid = 107 BEGEHEN /*!*/; TRENNUNGSZEICHEN ; # Ende der Protokolldatei Sie können sehen, wann die Daten gelöscht wurden. Die konkrete Zeit kann auch mit „select from_unixtime(1359949544);“ abgefragt werden. Glücklicherweise befinden sich auch die Anweisung „Create Table App“ und die Anweisung „Insert“ in dieser Datei. Nach dem manuellen Entfernen der Löschanweisung wird die aus mysqlbinlog abgerufene SQL-Datei in der temporären Datenbank als Quelle verwendet. Dadurch wird die App in den Zustand vor dem Löschen zurückversetzt. Importieren Sie dann die Daten der temporären Bibliothek in die vorhandenen Netzwerkdaten (dies ist nicht der Schwerpunkt dieses Artikels). Wenn keine Sicherung vorhanden ist, kann das Abrufen aller mit der App-Tabelle verknüpften Daten sehr mühsam sein, insbesondere wenn viele Binärprotokolldateien vorhanden sind und jede relativ groß ist. In diesem Fall besteht die einzige Möglichkeit darin, mit mysqlbinlog die SQL-Datensätze der mit der App-Tabelle verknüpften DML-Operationen von der Erstellung der App bis heute nacheinander abzurufen und die Daten dann zu integrieren und wiederherzustellen. Ich denke, diese Situation ist im Allgemeinen selten. Obwohl es mühsam ist, ist eine Wiederherstellung nicht unmöglich. Der obige Artikel zum Wiederherstellen versehentlich gelöschter Tabellendaten in MySQL (unbedingt lesen) ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, er kann Ihnen als Referenz dienen, und ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: Beispiel für eine Domänennamenüberprüfungsmethode für Betrieb und Wartung von Nginx
Nachdem Sie sich das angesehen haben, garantiere ...
In diesem Artikel wird beschrieben, wie Sie die a...
Inhaltsverzeichnis Schritt 1: Installieren Sie no...
Problembeschreibung Da wir uns nicht lange bei Za...
Inhaltsverzeichnis 1. Registrieren Sie ein Konto ...
Tatsächlich haben wir in letzter Zeit viel über W...
1. Zweck: Machen Sie den Code leichter wartbar un...
Inhaltsverzeichnis Vorwort Überprüfen und deinsta...
1. Docker online herunterladen yum install -y epe...
Beispiele für die MySQL-Verschlüsselung und -Ents...
In diesem Artikelbeispiel wird der spezifische Co...
Bereits in den CSS2-Empfehlungen von 1998 verschwa...
Inhaltsverzeichnis Vorwort Wie wechselt man zwisc...
Der Zweck des Schreibens von Skripten besteht dar...
Vorwort „Wenn es um Bildbearbeitung geht, denken ...