Heim  >  Artikel  >  Datenbank  >  So rufen Sie versehentlich gelöschte Daten in MySQL ab

So rufen Sie versehentlich gelöschte Daten in MySQL ab

coldplay.xixi
coldplay.xixiOriginal
2020-10-13 17:42:5418671Durchsuche

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

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)

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;

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

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

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

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!

Stellungnahme:
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