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