## 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 ~~~