记一次宝塔面板mysql表误删恢复过程

事情起因就不说了,手残嘛。。。
恢复经过说一下,宝塔面板的mysql自动开启了binlog功能~ 也就是说我们可以直接通过binlog方式恢复宝塔误删的数据。由于我误删的数据量小而且都是直接insert数据而不是从其他表摘的数据,因此通过数据库语句日志完全可以恢复,大家千万要注意数据库备份啊
首先找到宝塔面板的/www/server/data文件夹,看看里面有没有mysql-bin.xxxxx之类的文件,如果有那恭喜你可以进行下一步了~
mysql-bin.xxx
这里是000005和000006,修改日期一个是去年刚建库的时候的,一个是今天的。当然我们都要看一遍~
怎么看呢?在控制台输入如下命令:

/www/server/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000005 > /www/1.txt
/www/server/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000006 > /www/2.txt

这样就能把这两个文件的备份数据还原出来了~
我们看看解压出来的内容(两个文件在/www/下):
原始数据

嗯,一大堆无用数据。。。怎么办呢?我们需要进行筛选,这里我使用的是sublime text 2,由于我删的是以tp_moban_list开头的六个表,因此我在sublime text搜索了这个关键词并取了所有包含这个关键词的所有行。正则表达式如下:

^.*tp_moban_list.*$

然后使用sublime text自带的findAll功能选中包含这个关键词的所有行后copy一下粘贴到新的标签页里:
清理后的表
这个数据看起来舒服多了,上面那些表结构对于我来说没有意义就删掉了,我把后面的insert delete update等操作保留下来,里面还有些注释顺便也清理掉:
二次清理后的图片
下一步就简单了,把每行末尾加个分号(用sublime的$替换成;就行了),然后直接塞到phpmyadmin上执行一遍就行了~
两个文件1.txt和2.txt都执行一遍,注意顺序,然后这个表就完整恢复啦~!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章