首页 > 数据库 > mysql教程 > 我们可以仅从 FRM 和 IBD 文件恢复 MySQL 表结构吗?

我们可以仅从 FRM 和 IBD 文件恢复 MySQL 表结构吗?

Barbara Streisand
发布: 2025-01-07 19:06:41
原创
374 人浏览过

Can We Recover MySQL Table Structure from FRM and IBD Files Only?

仅从 FRM 和 IBD 文件恢复 MySQL 表结构

问题:

用户经常遇到需要恢复数据库但只能访问 FRM 和 IBD 文件的情况。

能否恢复表结构?

可以,即使没有 IB_LOG 文件,也可以从 FRM 文件恢复表结构。

步骤:

1. 从 FRM 文件提取 SQL 创建语句:

  • 安装 MySQL Utilities。
  • 使用 mysqlfrm --diagnostic 命令为每个 FRM 文件生成 SQL 创建语句。
  • 输出将包含类似以下的语句:
<code class="language-sql">CREATE TABLE `example_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(150) NOT NULL,
  `photo_url` varchar(150) NOT NULL,
  `password` varchar(600) NOT NULL,
  `active` smallint(6) NOT NULL,
  `plan` int(11) NOT NULL,
  PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;</code>
登录后复制

2. 使用 SQL 语句创建表:

  • 删除任何现有表(如有必要)。
  • 执行步骤 1 中获得的 SQL 创建语句,以创建与原始表具有相同结构的表。

3. 恢复数据:

  • 使用以下命令删除新表数据:
<code class="language-sql">ALTER TABLE example_table DISCARD TABLESPACE;</code>
登录后复制
  • 删除表目录中相应的 IBD 文件。
  • 将原始 IBD 文件复制到目录:
<code class="language-bash">cp backup/example_table.ibd /path/to/example_table.idb</code>
登录后复制
  • 确保 IBD 文件具有正确的拥有权和权限。
  • 导入旧数据:
<code class="language-sql">ALTER TABLE example_table IMPORT TABLESPACE;</code>
登录后复制

以上是我们可以仅从 FRM 和 IBD 文件恢复 MySQL 表结构吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板