- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这个问题与我在 stackoverflow 上看到的相关 InnoDB 修复问题略有不同。
假设我已经使用 innodb_file_per_table=1 在我的 MySQL 5.1 数据库中恢复了以下内容:
db/tablename.ibd
innodb/ibdata1
innodb/ib_logfile0
innodb/ib_logfile1
我丢失了 db/tablename.frm
文件。我可以启动数据库服务器,但 InnoDB 提示:
110723 13:26:33 InnoDB: Error: table 'db/tablename'
InnoDB: in InnoDB data dictionary has tablespace id 5943,
InnoDB: but tablespace with that id or name does not exist. Have
InnoDB: you deleted or moved .ibd files?
如何重建 FRM 文件?
最佳答案
编辑:我创建了一个简单的脚本来执行下面描述的所有步骤:https://ourstickys.com/recover.sh
老问题,但我发现这个更简单的方法:https://dba.stackexchange.com/questions/16875/restore-table-from-frm-and-ibd-file
I have recovered my MySQL 5.5 *.ibd and *.frm files with using MySQL Utilites and MariaDB 10.
1) Generating Create SQLs.
You can get your create sql's from frm file. You must use : https://dev.mysql.com/doc/mysql-utilities/1.5/en/mysqlfrm.html
shell> mysqlfrm --server=root:pass@localhost:3306 c:\MY\t1.frm --port=3310
Other way you may have your create sql's.
2) Create Your Tables
Create your tables on the database.
3) alter table xxx discard tablespace
Discard your tables which do you want to replace your *.ibd files.
4) Copy your *.ibd files (MySQL Or MariaDB) to MariaDB's data path
First i try to use MySQL 5.5 and 5.6 to restrore, but database crashes and immediately stops about tablespace id broken error. (ERROR 1030 (HY000): Got error -1 from storage engine)
After i have used MariaDB 10.1.8, and i have succesfully recovered my data.
5) alter table xxx import tablespace
When you run this statement, MariaDB warns about file but its not important than to recover your data :) Database still continues and you can see your data.
I hope this information will helpful for you.
让我补充一点,您可以在这里下载 mysqlfrm:https://dev.mysql.com/downloads/utilities/
我还找到了一种使用 dbsake
获取 CREATE TABLE
的更快方法:
curl -s http://get.dbsake.net > dbsake
chmod u+x dbsake
然后:
#only one table
./dbsake frmdump /path/to/table.frm > recover.sql
#multiple tables
./dbsake frmdump /path/to/*.frm > recover.sql
接着是:
mysql -uUSER -p recover_db < recover.sql
如果你愿意,你也可以在一行中执行它:
./dbsake frmdump /path/to/*.frm | mysql -uUSER -p recover_db
此时您可以按照上述第 3 点开始的说明进行操作。
关于mysql - 如何为仅包含 ibdata 和 *.ibd 文件的 MySQL InnoDB 表重新创建 FRM 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6804397/
是否有任何方法可以仅从 .ibd 文件重新创建 mysql 数据库?如果有人可以发布如何创建 .frm 或获取“创建表”语句甚至完全恢复数据库的方法,那就太好了。 问题是,我使用percona的xtr
由于我的电脑系统错误,MySql数据文件夹中的一些MySql .ibd文件被删除。只剩下 .frm 文件了。因此,表“reservation”缺少表空间。“question”。发生了错误。 预订是数据
最近我将一个 MySQL 数据库从一台服务器复制到另一台服务器。同时我已经从 Master DB 中清除了许多行。所以一段时间后复制正确完成。我验证了两个数据库中的数据计数,它是相同的。 之后,我只是
我在 Windows 10 上安装了 Ampps 3.7,虽然 Apache 运行正常,但 Mysql 将不再启动;它过去运行正常,但现在出现 innidb 错误。我的问题类似于问题 here , 除
我在我的 mysql 服务器数据目录中发现了很多 ibd 文件,那是什么? mysql版本是5.7.12,奇怪的是都没有frm文件 -rw-r----- 1 mysql mysql 84M Aug
在innodb_file_per_table = 1的情况下,我们如何计算InnoDB数据文件中某些特定表的ibd文件的重做/撤消日志消耗的空间量,以及在情况下的ibdata文件中的重做/撤消日志消耗
最近我的硬盘出现故障,但一家维修店设法恢复了所有内容并将其存储在我的外部驱动器上。 我的新干净驱动器(MacOS Sierra)本地安装了 mysql 5.7.20 和 php。我正在尝试将数据库从旧
环境 我们在运行 MariaDB(版本 10.3.8)的 CentOS 服务器上有一个临时/测试 WordPress 站点。我们一直在尝试一个名为 GeoDirectory (https://wpge
昨天我花了很多时间寻找从 .ibd 和 .frm 文件恢复各种数据库的解决方案.. 最后,我找到了这个解决方案(?): https://github.com/twindb/undrop-for-inn
我正在使用 MySql 8.0.11 并使用 keyring_file 插件,我已经加密了数据库中的特定表,例如 t1。 当我检查t1.ibd文件的内容时,可以看到加密成功后内容已被加密。但是,即使
我已经使用 SonarQube/Sonar 几年了,measures_data.idb 大小已经增长到惊人的 114GB,是的。 我已经设置了默认的内务管理设置。 我正在使用 MySql 5.6(每个
我用inotify监控mysql数据文件的变化,存储引擎是InnoDB。当实际更新 InnoDB .IBD 文件中的数据时,inotify 将始终无法捕获任何事件。然而,当我将相同表的存储转换为 My
我有一个大表,其中包含许多 NULL 值的 BLOB 字段。我启用了多个表空间并为每个表获得了一个单独的 ibd 文件。这个表的物理大小远远超过我自己计算的大小,所以我的结论是应该可以缩小这个 ibd
我正在尝试在 PMA 中恢复数据库,但只能访问 frm 和 ibd 文件 - 而不是我了解您需要的 ib_log 文件。 我知道我可能无法恢复数据库数据,但是否可以从 frm 文件中恢复表的结构? 最
我有一个运行正常的 MySQL 服务器,没有任何错误。我不小心删除了所有 .ibd 和 .frm 文件。但是服务器没有抛出任何错误。它甚至使用命令行继续数据插入和所有操作。 我发现它临时使用ibdat
我的 WAMP 出现问题,因此我将 DATABASE 文件夹复制到另一个位置并重新安装 WAMP。 之后,当我尝试导入它时,出现了这个错误 #1064 - You have an error in y
环境: Windows 7(XAMPP 最新版) Apache 2.4.4PHP 5.5MySQL 5.6.11 我正在尝试从 MySQL 5.1 备份数据库并将其导入 MySQL 5.6。 在 My
我对 InnoDB 的数据文件有疑问。 (ibdata1, *.ibd)我怎么读?!我该如何编辑它?! 有一个 tb1 表:(i int, c char(10))。 我插入了 3 条记录:(123,
这是我的innodb表的表状态 | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max
假设已经从备份磁带中恢复了以下 MySQL 文件: 表名.frm 表名.ibd 此外,假设 MySQL 安装正在使用 innodb_file_per_table 运行,并且数据库已使用 mysqlad
我是一名优秀的程序员,十分优秀!