mysql frm ibd 文件恢复数据
2015-05-21 13:31
696 查看
另外准备一份mysql环境,版本等要一样。
随便创建一个数据库
随便创建一个数据库
1.在里面建一个表 便结构需要和要恢复的表结构一致
CREATE TABLE `xxx` ( `id` int(32) NOT NULL AUTO_INCREMENT , PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9021 DEFAULT CHARSET=utf8
2. 移除表空间ALTER TABLE xxx DISCARD TABLESPACE;
3. 将ibd文件上传到数据库文件下,我这里路径是/var/lib/mysql/test2/。
4. 将ibd权限放开 chmod 777 /var/lib/mysql/test2/xxx.ibd
5. 导入表空间 ALTER TABLE xxx IMPORT TABLESPACE;
6. 运气比较好,40+表只有1个表不能直接把数据转过来,查看数据就会直接停掉mysql服务。
日志:InnoDB: Attempted to open a previously opened tablespace. Previous tablespace wittc1/tb_wittc_online_meeting uses space ID: 1 at filepath: ./wittc1/tb_wittc_online_meeting.ibd. Cannot open tablespace mysql/innodb_table_stats which uses space ID: 1 at filepath: ./mysql/innodb_table_stats.ibd 2015-05-21 13:02:08 7f02b42ec720 InnoDB: Operating system error number 2 in a file operation.应该就是网上说的tablespace id 问题,修改innodb_force_recovery无效。
没找到类似的错误日志:081010 11:47:40 InnoDB: Error: tablespace id in file '.test1product.ibd' is 1193, but in the InnoDB InnoDB: data dictionary it is 1.
最后在mysql test数据库里执行上面操作,竟然成功了。。。过了几分钟mysql又崩掉了,问题也懒得看了,把ib_logfile ibdata 还有数据库里面那些数据删掉,重启。后来又发现一个问题,一些字长度不足,数据会被截掉,打开表前先把表字段长度检查下,修改完再打开。
数据库一定要备份啊,说不定就会被人坑了
相关文章推荐
- MySQL frm+ibd文件还原data的办法【数据恢复】
- 恢复mysql数据--使用frm和ibd文件
- MySQL仅从.frm和.ibd文件恢复数据
- 【MySQL】InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据
- MySQL使用frm和ibd文件恢复数据
- mysql根据.frm和.ibd文件恢复表结构和数据
- mysql frm ibd 文件恢复数据
- MySQL innodb引擎下根据.frm和.ibd文件恢复表结构和数据
- 【转&参考】MySQL利用frm和ibd文件进行数据恢复
- mysql--覆盖原表,然后用备份的文件(.frm和.ibd)恢复原来的数据
- mysql中的data下的数据文件(.FRM、.MYD、.MYI)恢复为数据
- Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据
- MySQL借助ibd文件恢复数据技巧
- MYSQL数据文件--.frm文件(只有.frm文件时的表结构恢复)
- MySQL ibdata损坏或丢失 通过frm&ibd文件恢复数据
- 通过.frm和.ibd对mysql数据恢复
- mysql5.6InnoDB通过frm与ibd对数据进行恢复
- Mysql 使用ibd数据文件进行数据恢复 (以及数据移动) 1067的解决办法
- MYSQL数据文件--.frm文件(只有.frm文件时的表结构恢复)
- MySQL表结构为InnoDB类型从ibd文件恢复数据