gpt4 book ai didi

mysql - 从 frm 和 ibd 文件恢复表结构

转载 作者:可可西里 更新时间:2023-11-01 06:53:00 24 4
gpt4 key购买 nike

我正在尝试在 PMA 中恢复数据库,但只能访问 frm 和 ibd 文件 - 而不是我了解您需要的 ib_log 文件。

我知道我可能无法恢复数据库数据,但是否可以从 frm 文件中恢复表的结构?

最佳答案

我只从 .frm.idb 文件恢复了表格。

获取创建表的 SQL 查询

如果您已经知道表的架构,则可以跳过此步骤。

  1. 首先,安装MySQL Utilities .然后你可以在命令提示符(cmd)中使用mysqlfrm命令。

  2. 其次,使用 mysqlfrm 命令从 .frm 文件获取 SQL 查询:

    mysqlfrm --diagnostic <path>/example_table.frm

然后您可以获得创建相同结构化表的 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;

创建表

使用上述 SQL 查询创建表。

如果旧数据仍然存在,您可能必须先删除相应的数据库和表。确保您有数据文件的备份。

恢复数据

运行此查询以删除新表数据:

ALTER TABLE example_table DISCARD TABLESPACE;

这将删除新的 .frm 文件和(新的,空的).idb 文件之间的连接。另外,删除文件夹中的 .idb 文件。

然后,将旧的.idb文件放入新的文件夹中,例如:

cp backup/example_table.ibd <path>/example_table.idb

确保 .ibd 文件可以被 mysql 用户读取,例如通过在文件夹中运行 chown -R mysql:mysql *.ibd

运行此查询以导入旧数据:

ALTER TABLE example_table IMPORT TABLESPACE;

这将从 .idb 文件导入数据并将恢复数据。

关于mysql - 从 frm 和 ibd 文件恢复表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26868956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com