当ibdata1文件丢失,只剩*.frm和*.ibd文件,数据恢复案例
frm文件生成对应的表结构
- mysqlfrm工具安装
- 下载地址: MySQL :: Download MySQL Utilities
- linux:wget https://downloads.mysql.com/archives/get/p/30/file/mysql-utilities-1.6.5.tar.gz
- 解析文件得到表结构
- 打开cmd,cd到data/数据库名 目录下,执行以下解析命令
mysqlfrm --server=root:password@localhost mydb:mytable.frm --port=3304
- password为数据库密码 如果没有可以不填
- 例如:
mysqlfrm --server=root@localhost mydb:mytable.frm --port=3304
- 例如:
- mydb为数据库名,mytable为表名
- password为数据库密码 如果没有可以不填
- 执行后稍等片刻就会在命令行打印出创建表的sql语句
- 如果乱码,可执行
chcp 65001
来使用UTF-8编码,再次执行解析命令
- 如果乱码,可执行
- 创建数据库(mydb),复制出来利用sql管理工具执行去创建表(如果执行之前数据库中已经存在表则先删除此数据表然后再执行sql语句)
- 此时数据库和表结构已经恢复完毕
- 恢复数据表里面的数据
- 执行命令:
ALTER TABLE `数据库名`.`表名` DISCARD TABLESPACE
,可实现删除现有*.idb文件 - 把备份的*.ibd文件拷贝到data目录下的数据库文件夹下
- 执行命令:
ALTER TABLE `数据库名`.`表名` IMPORT TABLESPACE
- 稍等片刻,数据恢复成功
- 执行命令: