查看binlog
- 首先要看是否开启了binlog
- show variables like’log%’
- log_bin 为on 就是开启的
- show variables like’log%’
- 查看binlog的记录模式
- show variables like’binlog_format%’
- 总共有三种 row、mixed、statement level
- 我们一般使用的row,row模式是记录每一个修改的数据,修改前和修改后都会存储下来
- 查看binlog的日志存放位置
- 默认是在var/lib/mysql
- 不在这里可以去my.cnf 查看, log-bin 为binlog位置
- 找到binlog以后一般当天的日志在最新的日志里面
- 如果不是当天的日志,那需要一个时间点,查看binlog开头的位置去定位到具体的文件
- mysqlbinlog --base64-output=DECODE-ROWS --v mysql-bin 000100 |head -n20
- 找到binlog之后将具体时间点范围内的binlog 解析存储到日志文件中方便查找
- mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v --database=exam --start-datetime=“2023-12-12 00:00:00” --stop-datetime=“2023-12-12 00:01:00” mysql-bin.000100 > jwt.log
- 日志文件拿到后就可以直接搜索关键字了
- 比如我是找到了exam_item_id,由于我们大多数数据表是自增的,所以可以多选几个关键字去查看
- grep -C 20 ‘12343’ jwt.log|grep -C 20 ‘123’
- 通过binlog恢复数据的话,就需要再增加解析脚本,提取完数据后再拼接sql进行恢复,恢复数据最好是新建一张表,再恢复到表中