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 < .
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'log_bin%'; +---------------------------------+--------------------------------------------------+ | 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 '错误的sql语句'
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 '2016-10-11 15:22:53' 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 'insert|update|delete' | 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!