MySQL Binlog恢復delete的數據

默認MySQL8.0開啓了binlog,刪除了數據會有記錄
檢查是否開啓

mysql> show variables like '%log_bin%';
+---------------------------------+------------------------------------+
| Variable_name                   | Value                              |
+---------------------------------+------------------------------------+
| log_bin                         | ON                                 |
| log_bin_basename                | /usr/local/mysql/data/binlog       |
| log_bin_index                   | /usr/local/mysql/data/binlog.index |
| log_bin_trust_function_creators | OFF                                |
| log_bin_use_v1_row_events       | OFF                                |
| sql_log_bin                     | ON                                 |
+---------------------------------+------------------------------------+
6 rows in set (0.00 sec)

log_bin_basename 就是binlog存放的位置

在Docker中,binlog文件一般在/var/lib/mysql/

mysqlbinlog -uroot --base64-output=decode-rows -v  --database=數據庫名 --start-datetime="2022-01-06 11:00:00" --stop-datetime="2022-01-06  12:00:00" --result-file=導出的文件名.sql /var/lib/mysql/binlog文件名

可以直接查看刪除的log詳情進行手動恢復

或者依據position去恢復,會將指定位置的sql重新執行一次

 mysqlbinlog  --verbose --start-position=439 --stop-position=1598 /var/lib/mysql/binlog.000005 | mysql -uroot -p
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章