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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章