mysql 误删恢复数据(mysql删除的数据库怎么还原?)

虚拟屋 2023-04-15 11:08 编辑:admin 289阅读

一、mysql删除的数据库怎么还原?

在解决的过程中,以下几种尝试:

1.如果开启了日志,直接mysqlbinlog 使用日志恢复即可。

2.如果不是删除了一个表的部分数据,而是删除整个表,那么可以在删除后马上用磁盘数据恢复软件尝试恢复。

(因为删除表后会有文件被删除,而删除表的部分数据,文件还是存在)

3.找数据恢复的公司,使用工具分析ibdata1(分析过程参考一页一页查看有没有历史记录存在,使用ibdata1恢复数据,应该是在了解数据表结构的前提下,数据库除ibdata1外其他数据受损不能正常使用数据库时尝试,而不是删了表数据后恢复什么的。

(事实上,这个文件是存储现有表数据的,其实也可以设置成每个表一个文件。)

4.mysql下有ib_logfile0和ib_logfile1两个文件,其实这两个文件里,记录了Mysql的一些事物日志,用于事务的前滚后滚,是Mysql自身使用的,这个文件用文本工具打开后,有很多乱码,但却可以查找到被删除的少量数据的insert记录,极少数的乱码通过前后语句找出了原文,最终通过事物日志恢复了删除的文件。注:用事物日志恢复,需要几个前提。

1:知道被删除数据的大概位置,不要这边查找,那边又不断有新数据插入。

2:因为有很多乱码,适用于查找少量数据,而不是用作大量数据的恢复,浪费体力。

3:如果二进制日志没开,没有备份,那么只能用这种方法恢复了。

二、误删除了数据库的数据文件,而且没有备份,怎样恢复?

打开mysql的bin log功能:对于mysql也是支持增量备份,但要打开mysql的bin log功能。我们修改mysql的配置文件。linux是/etc/my.cnf,windows是mysql的安装目录/my.ini我们在[mysqld]下面加上log-bin一行代码,如下面。[mysqld]log-bin=mysql-bin复制代码加完后重起mysql即可。某客户更新数据的时候,误删了数据库的内容,因为数据库做了主从,但是没有做备份(备份很重要啊!)幸好开启了bin-log,之后只好把整个日志的记录拿回来本地进行恢复。之后自己也做了一个简单的测试,对数据进行恢复,具体如下:

1、新建一个表CREATE TABLE `lynn`.`sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM;

2、插入多条数据INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn1', '1');INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn2', '2'); INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn3', '3'); INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn4', '4');

3、查看数据并删除mysql> select * from sn_test;+-------+-----+| name | age |+---------+---+| lynn1 | 1 || lynn2 | 2 || lynn3 | 3 || lynn4 | 4 |+---------+-----+4 rows in set (0.00 sec)mysql> delete from sn_test;Query OK, 4 rows affected (0.00 sec)mysql> select * from sn_test;Empty set (0.00 sec)4、mysqlbinlog恢复数据mysqlbinlog mysql-bin.000006 > 1.sql查看1.txt里面数据插入的纪录,把删除之前的数据进行恢复mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123重新登录,查看数据,OK,已经成功恢复了对于数据库操作,应该注意如下问题:1、要常备份(全备,增量备份),出了问题可以最快恢复数据;2、操作数据库前,要把需要操作的数据库或者表dump出来;3、需要把bin-log打开,就算没有做上面的两步,也可以通过日志恢复数据

三、MySQL存储过程误删了怎么恢复?

(1)利用全备的sql文件中记录的CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件中增量的那部分。

(2)用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中的drop语句。

(3)通过全备文件和增量binlog文件的导出sql文件,就可以恢复到完整的数据。