在我们平时使用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

来进行恢复。

Logo

更多推荐