2022
我们一起努力

mysql数据文件恢复(mysql 数据恢复)

目录:

  • 1、mysql怎么通过frm和ibd文件还原数据?
  • 2、mysql数据表内容删除后怎么恢复
  • 3、MySQL损坏数据恢复
  • 4、mysql 数据被清空了怎么恢复

mysql怎么通过frm和ibd文件还原数据?

1、找回表结构,如果表结构没有丢失直接到下一步\x0d\x0a\x0d\x0aa、先创建一个数据库,这个数据库必须是没有表和任何操作的。\x0d\x0a\x0d\x0ab、创建一个表结构,和要恢复的表名是一样的。表里的字段无所谓。一定要是innodb引擎的。CREATE TABLE `weibo_qq0`( `weiboid` bigint(20)) ENGINE=InnoDB DEFAULT CHARSET=utf8;\x0d\x0a\x0d\x0ac、关闭mysql, service mysqld stop;\x0d\x0a\x0d\x0ad、用需要恢复的frm文件覆盖刚新建的frm文件;\x0d\x0a\x0d\x0ae、修改my.ini 里 innodb_force_recovery=1 , 如果不成修改为 2,3,4,5,6。\x0d\x0a\x0d\x0af、 启动mysql,service mysqld start;show create table weibo_qq0 就能li到表结构信息了。\x0d\x0a\x0d\x0a2、找回数据。记得上面把 innodb_force_recovery改掉了,需要注释掉,不然恢复模式不好操作。 这里有个关键的问题,就是innodb里的任何数据操作都是一个日志的记录点。也就是如果我们需要数据恢复,必须把之前的表的数据的日志记录点添加到一致。\x0d\x0a\x0d\x0aa、建立一个数据库,根据上面导出的创建表的sql执行创建表。\x0d\x0a\x0d\x0ab、找到记录点。先要把当前数据库的表空间废弃掉,使当前ibd的数据文件和frm分离。 ALTER TABLE weibo_qq0 DISCARD TABLESPACE;\x0d\x0a\x0d\x0ac、把之前要恢复的 .ibd文件**到新的表结构文件夹下。 使当前的ibd 和frm****。ALTER TABLE weibo_qq0 IMPORT TABLESPACE; 结果不出意外肯定会报错。就和我们开展数据开始说的那样,数据记录点不一致。我们看看之前ibd记录的点在什么位置。开始执行 import tablespace,报错 ERROR 1030 (HY000): Got error -1 from storage engine。找到mysql的错误日志,InnoDB: Error: tablespace id in file ‘.testweibo_qq0.ibd’ is 112, but in the InnoDB InnoDB: data dictionary it is 1. 因为 weibo_qq0 之前的记录点在112,当前的表只创建一次,所以记录点是1.\x0d\x0a\x0d\x0ad、那怎么从1记录到112。for ($1=1; $i

回答于 2022-11-16

mysql数据表内容删除后怎么恢复

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

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

2.如果不是删除了一个表的部分数据,而是删除整个表,那么可以在删除后马上用磁盘数据恢复软件尝试恢复。(因为删除表后会有文件被删除,而删除表的部分数据,文件还是存在)

3.找数据恢复的公司,使用工具分析ibdata1(分析过程参考一页一页查看有没有历史记录存在,使用ibdata1恢复数据,应该是在了解数据表结构的前提下,数据库除ibdata1外其他数据受损不能正常使用数据库时尝试,而不是删了表数据后恢复什么的。(事实上,这个文件是存储现有表数据的,其实也可以设置成每个表一个文件。)

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

注:用事物日志恢复,需要几个前提。

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

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

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

MySQL损坏数据恢复

    mysql CREATE DATABASE sakila;

    mysql USE sakila;

    mysql CREATE TABLE actor (

        actor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,

        first_name VARCHAR(45) NOT NULL,

        last_name VARCHAR(45) NOT NULL,

        last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

        PRIMARY KEY  (actor_id),

        KEY idx_actor_last_name (last_name)

      )ENGINE=InnoDB DEFAULT CHARSET=utf8;

    ALTER TABLE {库名}.{表名} DISCARD TABLESPACE;

    例:

    mysql ALTER TABLE sakila.actor DISCARD TABLESPACE;

    cp /backup_directory/actor.ibd path/to/mysql-5.7/data/sakila/

    ALTER TABLE {库名}.{表名} IMPORT TABLESPACE;SHOW WARNINGS;

    例:

    mysql ALTER TABLE sakila.actor IMPORT TABLESPACE; SHOW WARNINGS;

    Query OK, 0 rows affected, 1 warning (0.15 sec)

    Warning | 1810 | InnoDB: IO Read error: (2, No such file or directory)

    Error opening './sakila/actor.cfg', will attempt to import

    without schema verification

    mysql SELECT COUNT(*) FROM sakila.actor;

    +----------+

    | count(*) |

    +----------+

    |      200 |

    +----------+

mysql 数据被清空了怎么恢复

以下情况可以恢复数据:

1 innodb引擎表开启了事务,执行dml语句,比如delete、update、insert之类,并且没有提交即commit操作的话,可以执行rollback进行回滚恢复。如果是ddl操作,如drop、create、alter之类的操作时无效的

2 在进行删除操作之前有备份,比如mysqldump,物理备份数据文件之类的操作,那么可以恢复到删除前的数据

3 如果你的删除操作是直接对data下的文件进行删除,注意,不是粉碎文件操作,那么你可以尝试用磁盘恢复软件来找回被误删的数据文件;

除以上情况,其他真的是没法恢复了,不过貌似很多公司号称能够恢复,要收费,具体他们怎么恢复我就不晓得了。

赞(0)
文章名称:《mysql数据文件恢复(mysql 数据恢复)》
文章链接:https://www.fzvps.com/264085.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!