MySql从binlog日志中恢复数据(mysql-bin.000001)

最近比较忙,已经好久没写文章了,后面有时间再持续更新吧。前几天周末大早上被客户拉起来改代码,迷迷糊糊的时候一不小心执行了Delete from tablename,芜湖起飞,一张关键的表数据全都没了。

当时突然就清醒了,然后迅速连接数据库服务器,进入mysql的data目录下查看是否有施救的办法,还好看到了mysql-bin.000001-mysql-bin.000007的二进制日志文件,这时候心里稍微放松了一下,如果你没看到这种命名的文件,那么也就不必往下看了,这对你没有帮助。

开始数据恢复之旅:

1.首先在本地电脑安装与服务器相同的mysql数据库,我使用的是5.7.30,所以就在本地安装了相同的5.7.30版本,具体怎么安装,直接在博客里搜MySQL,就能看到相关的文章了。

2.把服务器上的mysql-bin.000001-mysql-bin.000007和mysql-bin.index文件copy到本地的mysql/data目录下;

3.从mysql安装目录下的bin文件夹里,把mysqlbinlog.exe和mysqlbinlog.pdb复制到mysql/data目录下;

4.然后使用管理员身份打开命令提示符,并且cd指令切换到mysql/data的目录下;

5.然后执行如下命令,意思就是从mysql-bin.000007日志文件里,恢复databasename数据库的所有sql语句到mytestdb.sql文件夹里:

mysqlbinlog --no-defaults mysql-bin.000007 -d databasename > mytestdb.sql --skip-gtids=true

6.这样就得到了所有对数据操作的sql语句,比如我这里只需要恢复新增的数据,就直接搜索相应的语句提取出来执行就可以了;

注:mysqlbinlog还有很多操作,好像能直接根据binlog文件恢复到数据库中,我因为时间紧任务重就没试,用了最笨的方法恢复了客户数据。

THE END