## binlog日志恢复
> 前提:需要开启binlog日志
* 查看binlog日志情况
```
show variables like '%bin%';
```
![](https://img.kancloud.cn/d7/26/d7267e27316936a6b82410203efb62e4_550x439.png)
* binlog日志配置
```
[mysqld]
log-bin=/www/server/data/mysql-bin
server-id=1
binlog-format = MIXED
```
##
## bin-log恢复数据
1. 第一步先停止数据库服务/或者关闭nginx,避免数据写入
2. 将 mysql-bin.000011 文件转化成sql语句
```
/www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000011 > /root/info.sql
```
3. 打开 info.sql
```
vim info.sql
```
4.找到误操作的sql语句,并删除误操作的sql语句
![](https://img.kancloud.cn/01/52/0152abaf8c73f8ebadae8d4de3be76d7_1000x286.png)
基于位置删除,删除误操作的sql语句,保存。
5.将保存的sql导入到数据库
```
source /root/info.sql;
```
6.恢复成功
##
### 总结:
(1) 如果有多个mysql-bin文件,则需全部依次转化成sql文件,并找到有误删除的sql文件改正。然后将多个sql文件依次导入到数据库中。
(2) 每次启动MySQl服务都会新生成一份bin-log日志文件
## 其他###
假如需要将某一个binlog完全恢复,只需要执行以下命令:
~~~text
mysqlbinlog mysql-bin.000010 | mysql -uroot -p
~~~
方法1、根据起始和终止时间进行恢复
~~~text
mysqlbinlog mysql-bin.000001 --start-datetime='2019-07-12 19:50:36' --stop-datetime='2019-07-13 19:23:40' | mysql -uroot -p
~~~
方法2、根据起始节点和终止节点进行恢复
~~~text
#查看binlog日志的节点位置情况
show binlog events in 'mysql-bin.000001' \G;
#根据binlog起始和结束节点做恢复
mysqlbinlog mysql-bin.000001 --start-position=100 --stop-position=200 | mysql -uroot -p
~~~