Heim > Datenbank > MySQL-Tutorial > Hauptteil

So rufen Sie versehentlich gelöschte Daten in MySQL ab

coldplay.xixi
Freigeben: 2020-10-13 17:42:54
Original
18634 Leute haben es durchsucht

MySQL-Methode zum Abrufen versehentlich gelöschter Daten: Suchen Sie zuerst die falsche Anweisung im Binlog-Protokoll und stellen Sie sie schließlich in der Datenbank wieder her. Der Code lautet [# mysql -uroot -p -f ids < .

So rufen Sie versehentlich gelöschte Daten in MySQL ab

MySQL-Methode zum Abrufen versehentlich gelöschter Daten:

1. Finden Sie das Binlog-Protokoll

Voraussetzung für die Datenwiederherstellung ist, dass das Binlog-Protokoll von MySQL aktiviert sein muss aktiviert, bitte ignorieren Sie dieses Dokument. Ob das Binlog-Protokoll aktiviert ist, kann in der MySQL-Konfigurationsdatei überprüft werden. Der Protokollspeicherort befindet sich im Allgemeinen im Verzeichnis /var/lib/mysql oder im Datumsverzeichnis, in dem es kompiliert und installiert wurde. Sie können sich auch bei MySQL anmelden und Befehle verwenden, um es anzuzeigen.

# cat /etc/my.cnf
log_bin=mysql-bin
# mysql -uroot -p
Enter password:
mysql> show variables like&#39;log_bin%&#39;;
+---------------------------------+--------------------------------------------------+
| Variable_name                   | Value                                            |
+---------------------------------+--------------------------------------------------+
| log_bin                         | ON                                               |
| log_bin_basename                | /home/programs/mysql-5.6.26/data/mysql-bin       |
| log_bin_index                   | /home/programs/mysql-5.6.26/data/mysql-bin.index |
| log_bin_trust_function_creators | OFF                                              |
| log_bin_use_v1_row_events       | OFF                                              |
+---------------------------------+--------------------------------------------------+
5 rows in set (0.00 sec)
# ll /home/programs/mysql-5.6.26/data/mysql-bin*
-rw-rw---- 1 mysql mysql 343629748 Oct 13 22:09 /home/programs/mysql-5.6.26/data/mysql-bin.000001
-rw-rw---- 1 mysql mysql        19 Sep 23 17:11 /home/programs/mysql-5.6.26/data/mysql-bin.index
Nach dem Login kopieren

Wenn mehrere Binlog-Protokolle vorhanden sind, können Sie das aktuelle Binlog auch anzeigen und Binlog-Protokolle unter der MySQL-Befehlszeile ausschneiden. Nachdem das Binlog ausgeschnitten und erneut angezeigt wurde, werden Sie sehen, dass das neue Protokoll in die neue Binlog-Datei geschrieben wird.

mysql> show master status;
+------------------+-----------+--------------+------------------+-------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+-----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 343629748 |              |                  |                   |
+------------------+-----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> flush logs;
Query OK, 0 rows affected (0.01 sec)
Nach dem Login kopieren

2. Finden Sie die falsche Anweisung im Binlog

Sie können den Zeitpunkt finden, zu dem die falsche Anweisung im Binlog-Protokoll ausgeführt wurde, und die Binlog-Protokolle vor und nach der falschen Anweisung als SQL wiederherstellen. Sie können diesen Schritt auch überspringen und das gesamte Binlog-Protokoll direkt in SQL wiederherstellen, dann die SQL-Datei öffnen und die Fehleranweisung löschen.

# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids mysql-bin.000001 | grep --ignore-case -A3 -B4 &#39;错误的sql语句&#39;
Nach dem Login kopieren

3. Binlog-Protokolle wiederherstellen

Verwenden Sie den Befehl mysqlbinlog, um Binlog-Protokolle direkt als SQL-Skripte wiederherzustellen, und Sie können die Start- und Endzeit angeben. Wenn von der letzten Sicherung (es wird empfohlen, das Binlog-Protokoll während der Sicherung zu aktualisieren) bis zur Wiederherstellungszeit mehrere Binlog-Protokolle generiert werden, exportieren Sie sie in der Reihenfolge von klein nach groß nach SQL und importieren Sie sie dann der Reihe nach in die Datenbank.

# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids --start-datetime &#39;2016-10-11 15:22:53&#39; mysql-bin.000001 > /home/stack/data.sql
Nach dem Login kopieren

Verwenden Sie im obigen Befehl -d ids, um die wiederherzustellende Datenbank anzugeben. Wenn Sie Daten auf Tabellenebene wiederherstellen möchten, exportieren Sie sie nach SQL und filtern Sie dann grep.

# more data.sql | grep --ignore-case -E &#39;insert|update|delete&#39; | grep table
Nach dem Login kopieren

4. In der Datenbank wiederherstellen

Beim Wiederherstellen von Daten kann es zu doppelten Datenfehlern kommen. Es wird empfohlen, den Parameter -f zu verwenden, um ihn zu ignorieren.

# mysql -uroot -p -f ids < data.sql
Nach dem Login kopieren

Weitere verwandte kostenlose Lernempfehlungen: MySQL-Tutorial(Video)

Das obige ist der detaillierte Inhalt vonSo rufen Sie versehentlich gelöschte Daten in MySQL ab. 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!