--- notion-id: 04d50464-ac9c-44c6-bd99-07a881e13d27 --- `注意这里是恢复数据,不是回滚数据,``**恢复的本质是将原有的插入语句再执行一遍,而回滚则是回退到删除之前的状态**``。` # 一、调用binlog文件 `SHOW VARIABLES LIKE '%log_bin%'; `是否开启log 打开方法:mysql配置文件中找到#log-bin=mysql-bin,并取消注释即可 `SHOW MASTER LOGS; `查看binlog文件数量 `SHOW MASTER STATUS;`查看当前正在写入的binlog文件 `FLUSH LOGS;`新建binlog文件并写入,避免新增之前日志。 # 二、查看日binlog文件 ## 方式一: `show binlog events in 'mysql-bin.000060'\G; `指定查询binlog文件 ```plain text server id 1:数据库主机的服务号 end_log_pos 796 :sql结束时的pos节点 thread_id=11:线程号 ``` ![[Notion/技术支持/MySql/attachments/Untitled.png]] **binlog中每个事件都有一个begin和commit,我们后面进行恢复或回滚的时候开始和结束的pos都是取的事件整体的开始点和结束点。比如上面删除事件的开始点其实是1105,结束点则是1316** 。 ## 方式二: ```plain text 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` ```javascript 参数解释: --start-position=6283 创建表后首操作 --stop-position=18038 误操作前一条操作 ``` 参考: [https://blog.csdn.net/Interest1_wyt/article/details/115028429](https://blog.csdn.net/Interest1_wyt/article/details/115028429)