04d50464-ac9c-44c6-bd99-07a881e13d注意这里是恢复数据,不是回滚数据,**恢复的本质是将原有的插入语句再执行一遍,而回滚则是回退到删除之前的状态**。
SHOW VARIABLES LIKE '%log_bin%';是否开启log
打开方法:mysql配置文件中找到#log-bin=mysql-bin,并取消注释即可
SHOW MASTER LOGS;查看binlog文件数量
SHOW MASTER STATUS;查看当前正在写入的binlog文件
FLUSH LOGS;新建binlog文件并写入,避免新增之前日志。
show binlog events in 'mysql-bin.000060'\G;指定查询binlog文件
server id 1:数据库主机的服务号
end_log_pos 796 :sql结束时的pos节点
thread_id=11:线程号
![[Notion/技术支持/MySql/attachments/Untitled.png]] binlog中每个事件都有一个begin和commit,我们后面进行恢复或回滚的时候开始和结束的pos都是取的事件整体的开始点和结束点。比如上面删除事件的开始点其实是1105,结束点则是1316 。
mysqlbinlog mysql-bin.000060指令是查询二进制日志
注意提示错误Warning: this binlog is either in use or was not closed properly.
请使用find / -name 'mysqlbinlog' 查找是否还有别的指令
通过时间恢复:
mysqlbinlog --no-defaults mysql-bin.000720 --start-datetime="2018-09-12 18:45:00" --stop-datetime="2018-09-12:18:47:00"
通过POS恢复:
mysqlbinlog --no-defaults --start-position=6283 --stop-position=18038 D:/Develop/Mysql/mysql-8.0.27-winx64/data/binlog.000067 | mysql -uroot -p
参数解释:
--start-position=6283 创建表后首操作
--stop-position=18038 误操作前一条操作
参考: https://blog.csdn.net/Interest1_wyt/article/details/115028429