首先:将最近的二进制类型的日志文件存成文本文件导出,命令如下:
mysqlbinlog
F:/wamp/mysql-bin.000045
>
F:/test.txt
其次:打开保存的txt文件,文件格式如下:
其中at
1099代表第1099个命令(姑且这么记),查询这些命令,看看需要回复的命令在什么地方,然后执行命令。
最后:执行回复命令,如下:
mysqlbinlog
--start-position="123"
--stop-position="531"
F:/wamp/mysql-bin.000045
F:/test.txt
|
mysql
-uroot
-p
这样就可以完成数据库的回复了!!!
以下情况可以恢复数据:1 innodb引擎表开启了事务,执行dml语句,比如delete、update、insert之类,并且没有提交即commit *** 作的话,可以执行rollback进行回滚恢复。如果是ddl *** 作,如drop、create、alter之类的 *** 作时无效的
2 在进行删除 *** 作之前有备份,比如mysqldump,物理备份数据文件之类的 *** 作,那么可以恢复到删除前的数据
3 如果你的删除 *** 作是直接对data下的文件进行删除,注意,不是粉碎文件 *** 作,那么你可以尝试用磁盘恢复软件来找回被误删的数据文件;
除以上情况,其他真的是没法恢复了,不过貌似很多公司号称能够恢复,要收费,具体他们怎么恢复我就不晓得了。
情况1、如果你有该库的整体备份或对这个表的单独备份,那么也许可以恢复。可以将最新的备份恢复到一个备用的服务器上,导出那表的内容,完成恢复情况2、如果没有任何备份,那就基本没戏了。一般删除表的 *** 作是drop table,日志中不会记录删除具体行数的记录。表所对应目录下的文件已经被删除(innodb独立表空间,单表归为一文件)。同样的情况适用于myisam数据库引擎,对应的myd/myi/frm文件均被删除。这不像windows还有垃圾箱,是不可逆的 *** 作
此外,对数据库最危险的 *** 作就是对表进行删除行、删除表或删库的 *** 作了,所以任何对数据库有高危风险的 *** 作前最重要的就是备份!备份!再备份!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)