Oct 20

linux mysql数据库恢复 不指定

NetKnave , 15:27 , 技术文章 , 评论(0) , 引用(0) , 阅读(548) , Via 本站原创 | |
今天下午上服务器看下数据库顺便备份一下
打开phpmyadmin就顺手点了下用户。看到一个没用的账号就点删除。想删除这个用户
用户删除之后。跑去备份数据库。结果傻眼了。数据库没了。
刚才删用户的时候phpmyadmin下面的"Drop the databases that have the same names as the users. "打了个勾?
TM的。连同数据库一块删了。KAO啊。

找了很多办法,想在linux下恢复数据库的目录。问了很多人。都说无解。主机商也说没办法。我KAO。
无奈之下去看了下my.cnf 结果发现服务器上的二进制日志是开着的。上帝保佑啊

使用mysqlbinlog就可以恢复之前的误删操作了
首先还是在确保二进制日志是开启的

我的日志名设置为binlog.0000XX

先是使用mysqlbinlog将日志文件输出为文本格式来分析一下


/usr/local/web/mysql/bin/mysqlbinlog binlog.000011 > /tmp/11.txt
/usr/local/web/mysql/bin/mysqlbinlog binlog.000012 > /tmp/12.txt
/usr/local/web/mysql/bin/mysqlbinlog binlog.000013 > /tmp/13.txt


查看文本发现里面全是用户的操作记录

我在13.txt最底部找到了删除用户的记录

下面来恢复数据库先。首先导入前几个月的备份数据库。

然后慢慢恢复。先恢复前两个二进制日志


/usr/local/web/mysql/bin/mysqlbinlog binlog.000011 |/usr/local/web/mysql/bin/mysql -uroot -p
/usr/local/web/mysql/bin/mysqlbinlog binlog.000012 |/usr/local/web/mysql/bin/mysql -uroot -p


现在到第三个日志来了,也就是包含删除用户记录的日志

最尾部

# at 3649944
DROP USER 'database'@'localhost'

位置在 3649944    那就恢复第三个日志从开始至3649944的位置。后面的就不管了

/usr/local/web/mysql/bin/mysqlbinlog binlog.000013 --stop-pos=3649944 |/usr/local/web/mysql/bin/mysql -uroot -p


这样就KO了

假如在删除语句后面还有要恢复的  比如3649955行后的数据都要恢复   那就使用--start-pos=3649955

/usr/local/web/mysql/bin/mysqlbinlog binlog.000013 --start-pos=3649955 |/usr/local/web/mysql/bin/mysql -uroot -p



--stop-pos=600           //从日志头部至600位置结束
--start-pos=1111         //人日志1111的位置开始恢复
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]