默認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