删除mysql的。ibd,。在删除表之前,请删除、ibdata1、ib _ logfile0和ib_logfile1文件。然后重建这个表。有什么问题吗?
。frm和。ibd可用于批量恢复InnoDB表。
创建一个已经丢失的表结构
你需要先安装mysql-utilities。
// RedHatyum -y安装MySQL-server mysql-utilities//debian apt安装MySQL-utilities
使用mysqlfrm从。frm文件。
//分析一个. frm文件生成建表语句MySQL frm-diagnostic/var/lib/MySQL/test/t 1。frm//全部分析。一个目录下的frm文件生成建表语句root @ username:~ # MySQL frm-diagnostic/var/lib/MySQL/my _ createtb . SQL root @ username:~ # grep " ^create表" createtb.sql |wc -l124
您可以看到,a * * *生成了124条表构建语句。
很多时候,可以从其他库生成表构建语句,就像应用程序的其他数据库或不同的测试环境一样,下面的mysqldump用于生成表构建语句:
mysqldump-no-data-compact my _ db & gt;createtb.sql
登录MySQL生成表格。
mysql & gt创建数据库my _ dbmysql & gt使用my _ dbDatabase changedmysql & gtsource createtb.sqlQuery正常,0行受影响(0.07秒)......
导入旧数据文件
丢弃新创建的。没有数据的ibd文件。
root @ username:/var/lib/MySQL/my _ db # ll *IBD | WC 12411167941 root @ username:/var/lib/MySQL/my _ db # MySQL-e " show tables from my _ db " \ | grep-v?我的数据库中的表?\|读取a时;do mysql -e "ALTER TABLE my_db。$a丢弃表空间";done root @ username:/var/lib/MySQL/my _ db # ll *。ibd|wcls:无法访问“*”。' ibd ':没有这样的文件或目录000
你可以看到所有的。idb文件已被丢弃。然后复制旧的。ibd文件,并且不要忘记更改所有者:chown mysql。*,然后将这些数据文件导入数据库。
root @ username:/var/lib/MySQL/my _ db # MySQL-e " show tables from my _ db " \ | grep-v?我的数据库中的表?\|在读取a时;\do mysql -e "修改表my_db。$a导入表空间";完成的
导入完成后的清单
使用mysqlcheck检查数据库my_db下的所有表:
root @ username:/var/lib/MySQL/my _ db # MySQL check-c my _ dbmy _ db . CDP _ backup _ point OK......
所有表都已成功导入。