您的位置:首页 > 数据库 > MySQL

针对MYSQL delete、update、insert语句误操作时的恢复办法

2016-07-06 22:44 801 查看
mysql 针对MYSQL delete、update、insert语句误操作(如update忘记加where条件)

目前还没有特别好的办法进行恢复,主要是根据binlog日志文件进行恢复,网上也有

很多的博客说明这些操作步骤,目前总结起来快速方便的办法是:

利用淘宝的彭立勋开发出的一个flashback插件进行恢复,之前的插件版本只针对MySQL-5.5.18,

无法用于目前主流的5.6版本的。后来平民软件将该功能移植到5.6版本上,

让相关人员对数据库有更强的掌控能力。

相关的博客:http://www.cnblogs.com/youge-OneSQL/p/5249736.html

相关的博客:http://blog.csdn.net/wyzxg/article/details/9454375

0. MYSQL可恢复的前提

(1)开启binlog

(2)binlog_format的格式采用 ROW 格式,

          ROW 方式会产生大量的binlog信息,参数binlog_row_image = MINIMAL 时可适当优化。

1. 下载 mysql5.6  flashback插件(二进制版本,无需安装)

下载地址:http://pan.baidu.com/s/1nvGOOIl 

最新更新的日期: 2016/4/8

2. 将二进制插件文件拷贝到  原mysqlbinlog程序的目录中



 下载的插件程序文件重命名 mysqlbinlogFB(保证和mysqlbinlog不重名即可)



下载下来的插件程序文件和之前的mysqlbinlog 工具一样使用,只是参数多了一个
-B参数



3. 模拟一下 delete 没有加 where条件的情况





 4. 找到刚才delete 操作在binlog日志文件中的开始和结束位置点

 这里主要看如何使用mysqlbinlog工具了,例如:产生delete误操作的时间点大概是在“2016-07-06
21:41:00”左右,我们查看binlog日志文件时指定开始时间点为“2016-07-06 21:40:00”并且匹配表名称“t_name”,如果打印出的binlog日志比较多时,可只看前20行和后20行即可。

前20行:

[root@myDBserver data]# mysqlbinlogFB -v --base64-output=decode-rows --start-datetime='2016-07-06 21:40:00'  mysql-bin.000021 |grep -i 't_name' -C20 | head -n 20

后20行:

[root@myDBserver data]# mysqlbinlogFB -v --base64-output=decode-rows --start-datetime='2016-07-06 21:40:00'  mysql-bin.000021 |grep -i 't_name' -C20 | tail-n 20

由于是测试的表数据,binlog信息量比较少,所以直接打印2016-07-06 21:40:00时间点之后的全部binglog信息,最后找出的位置起始结束点信息如下:

[root@myDBserver data]# mysqlbinlogFB -v --base64-output=decode-rows --start-datetime='2016-07-06 21:40:00'  mysql-bin.000021



 注意到两个
位置点  1377 和  1567,查看binlog中的日志信息确实是刚才误操作的delete 语句。

 在指定--start-position时,需要注意包含table_map_event的位置,否则工具无法找到相关表的元数据信息。

 5. 采用myslqbinlogFB 工具进行恢复

[root@myDBserver data]# mysqlbinlogFB-B-v
--start-position=1377 --stop-position=1567   mysql-bin.000021| mysql -uroot -proot123 mytest

采用上面的命令即可 将刚才的delete的 binlog信息反转成insert语句插入到 mytest数据库中的t_name表中。

最后查看 t_name表:



同理,对于update,insert 语句恢复,一样的步骤操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息