龙空技术网

手把手教你利用.frm和.idb文件恢复mysql数据

白首我共你 110

前言:

今天姐妹们对“idbmysql”大概比较看重,我们都想要分析一些“idbmysql”的相关文章。那么小编在网摘上网罗了一些关于“idbmysql””的相关知识,希望大家能喜欢,兄弟们快快来了解一下吧!

第一步:导出表结构。

表名.frm文件是存放表结构的元数据,无法直接打开,需要借助工具,可使用MYSQL Utilities工具进行查看,下载地址:

安装过程中可能会提示未安装 Visual C++ Redistributable Packages for Visual Studio 2013,则先下载安装,下载地址:

第二步:使用.frm文件恢复表结构

打开cmd命令行,进入到.frm文件所在目录,执行命令:mysqlfrm --diagnostic ./文件名.frm。比如表名为site,则执行:

mysqlfrm --diagnostic ./site.frm 

红色部分为表结构语句

在导出的建表语句最后加一句:

ROW_FORMAT=COMPACT

有些建表语句varchar()括号里面的长度过长,可能会报这个错,修改括号里值即可。比如原来是varchar(2000),改成varchar(1000)。

错误代码:1071 Specified key was too long;

获取建表SQL语句后,导入数据库,创建表结构。

第三步:卸载表空间

执行以下命令将表空间卸载,卸载完成后,数据库目录下的.idb文件被删除了。

alter table 表名 discard tablespace;   #mysql中执行
第四步:停止mysql服务
systemctl stop mysql
第五步:复制idb文件

复制.idb文件到数据库所在目录,跟.frm文件相同目录,一般是在数据安装路径\data\数据库名

第六步:授权

给数据库目录授执行权限:

chmod -R 760 /www/server/data/数据库名
第七步:启用mysql服务
systemctl start mysql
第八步:绑定表空间
ALTER TABLE 表名 IMPORT TABLESPACE;  #mysql中执行
第九步:重新加载

到mysql安装目录执行以下命令,需要输入root账号的密码

/www/server/mysql/bin/mysqladmin -uroot -p reload
第十步:刷新表数据
/www/server/mysql/bin/mysqladmin -u root -p flush-tables

数据恢复完成!

标签: #idbmysql