## binlog日志恢復
> 前提:需要開啟binlog日志
* 查看binlog日志情況
```
show variables like '%bin%';
```

* 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語句

基于位置刪除,刪除誤操作的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
~~~