mysql使用binlog恢复使用delete误删的数据
在我们平时使用MySQL数据库的时候,可能会出现delete from table_name 忘记写条件语句而导致删除了整个表的数据。
这个时候就很棘手了。如果公司的数据库都有开启数据备份那自然是没有问题。source 一下备份下来的sql文件就好。
但是如果没有备份数据呢?
办法还是有的。
答案就是bin log。
MySQL带了一个 bin log 的功能,
但是默认是没有开启的。
我们可以敲入
show VARIABLES
命令。
我们会发现log_bin的值是OFF,所以我们需要开启bin log的功能。
如何开启呢?也是很简单的。
我们在my.ini文件配置下即可。就是以前安装MySQL的那个配置文件。
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
log-bin=mysql-bin
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=F:\mysql\mysql-5.6.21-winx64\mysql-5.6.21-winx64
# 设置mysql数据库的数据的存放目录
datadir=F:\mysql\mysql-5.6.21-winx64\mysql-5.6.21-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
红色的字是笔者特意标红的。在原有的配置上添加即可。
重启下MySQL服务,bin log就是起起来了。
现在笔者的test数据库下的user表中有这么多数据
我们先用命令将记录刷到log bin中
FLUSH LOGS ;
我们可以看到在MySQL的安装目录下的data目录下多了mysql-bin.000001和mysql-bin.000002这两个文件
现在我们模拟一个误操作。
将数据全部删除掉。
我们可以使用
mysqlbinlog --start-date="2012-10-15 16:30:00" --stop-date="2017-6-11 17:16:00" F:\mysql\mysql-5.6.21-winx64\mysql-5.6.21-winx64\data\mysql-bin.000001 |mysql -uroot -p
来进行恢复。