这里写一下MySql 数据误删除的恢复过程。这里采用的方式是mysqlbinlog的日志恢复
首先,mysql要配置开启bin-log。查看my.ini文件(默认是my-default.ini),在文件后面加入
log-bin = mysql-bin
另外,配置一下bin-log的格式,我这里使用了mixed。在文件后面加入
binlog_format = mixed
如下:
bin-log有3种格式,每种格式都有好处,这里带上API,https://dev.mysql.com/doc/internals/en/binlog-formats.html
-----------------------------------------------------------------------------------------
然后重启mysql
进入mysql , 输入show variables like '%bin%'; 查看是否开启binlog。 如下图:
为ON 代表开启,接着我们新建一个数据表,来进行测试。下面是一些基本的mysql操作,就不一一介绍了,直接上图
数据给误删除了,接着我们要进行恢复。
打开mysql的安装目录,在Data(数据库)文件夹里面,可以看到一些mysql-bin.xxxxxx文件。如:
这些都是二进制文件,我们找到最新的那一个,mysql-bin.000004. 接着我们需要把它转成sql文件。如何转????
在cmd中,进入mysql的bin目录,然后输入
mysqlbinlog "mysql-bin.000004文件的路径" > "目标sql保存路径"。如:
接着在目标路径可以找到目标sql,这里我的路径时d盘根目录下的test.sql。我们把这文件给打开。会发现里面有许多日志信息,包括一些执行过的sql。我在最后面看到了我刚刚的delete操作。
做了删除操作,我们得把数据给insert 回去,继续看日志,会发现
我们的任务就是把目标起点到目标终点的事重新做一遍。
mysqlbinlog "mysql-bin.000004的路径" --start-position=目标起点 --stop-position=目标终点 | mysql -u root -p
如图:
接着我们再去查一下数据库,发现刚刚删除的数据又回来了
以上就是这个数据误删除的日志恢复流程。也是数据误删除的日志恢复方式。
此刻,你们是否有这种感觉,没意义呀。如果我数据一个月了呢?一年了呢?,要找回所有的数据怎么可能?
很直接告诉你,只靠这种方式几乎不可能恢复的很全。
主从数据备份+日志,才是正解。好好学习