【发布时间】:2023-03-05 23:38:01
【问题描述】:
我在 MySQL 的 .frm 文件中有所有数据。如何恢复数据?我不想恢复所有这些,只是一些记录和表格,所以我需要将它们转储出来。
据我所知,只有 .frm 文件,没有 .myd 文件。但是,有 ibdata1 文件。我应该如何恢复?
【问题讨论】:
-
你有完整的mySQL数据目录吗?
标签: mysql
我在 MySQL 的 .frm 文件中有所有数据。如何恢复数据?我不想恢复所有这些,只是一些记录和表格,所以我需要将它们转储出来。
据我所知,只有 .frm 文件,没有 .myd 文件。但是,有 ibdata1 文件。我应该如何恢复?
【问题讨论】:
标签: mysql
我搞定了。
1) 我创建了一个空数据库,以本地安装的服务器上的真实数据库命名。
2) 我杀死了“mysqld”
3) 我将三个 ib* 文件复制到我的本地 MySQL 数据目录(在 Windows 上它是根驱动器中的隐藏文件夹)。确保你复制到 InnoDB 数据文件目录,根据你的 my.cnf InnoDB 和 MyISAM 数据可能存储在不同的文件夹中。我还复制了 .frm 文件。
4) 我跑了"C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\mysqld" --defaults-file="C:\Program Files (x86)\MySQL\MySQL Server 5.1\my.ini" --innodb-force-recovery=6
5) 我运行mysql -uroot -pmypass 来确认use mydb; select * from mytable; 返回的结果。
6) 我用mysqldump mydb mytable --compact > file.sql
就是这样!
【讨论】:
ibdata* 文件位于 mysql/data/ 文件中,而我原本希望它们位于每个相应的数据库文件夹中。
非常简单的步骤。
在 Xampp 控制面板中点击 MySql 的配置,然后选择“my.ini”文件。
在此文件中,在[mysqld] 行之后添加一行innodb_file_per_table=1。
现在,我创建了一个您要恢复的数据库,名称为 exam_table
逐一创建要恢复的表,名称为exam_time。
运行 SQL 查询/查询ALTER TABLE `exam_time` DISCARD TABLESPACE;
注意:这会删除当前的 .ibd 文件。
将备份的exam_time.frm & exam_time.ibd 文件复制到相应的数据库目录。
运行 SQL 查询/查询ALTER TABLE tbl_name IMPORT TABLESPACE;
检查您的exam_time 表,它已恢复.....Hurrahhh
【讨论】: