替换 Innodb 中的 IBD 文件
Replacing IBD files in Innodb
今天我错误地删除了一个生产数据库。
我能够从昨天晚上恢复数据库,但我发现了最近的 IBD 和 FRM 文件。
所以我想知道我是否能够恢复这些文件。仅仅覆盖 IBD 文件是行不通的,因为 Mysqld 无法启动..
关于如何解决这个问题有什么建议吗?
不,您不能只替换 ibd 文件,它们的内部状态本质上与主表空间状态 (ibdata*) 和事务日志状态 (ib_logfile*) 相关联。
将整个数据集恢复到备用服务器,使用 mysqldump 转储您需要的表,或者如果它们很大,则使用可导出表空间:
在还原服务器上:
FLUSH TABLE table_name 用于导出;
保持会话 运行.
在主服务器上:
改变 TABLE table_name 丢弃 TABLE空间;
复制ibd文件过来
在主服务器上:
更改 TABLE table_name 导入 TABLESPACE;
那应该做你想要的。
今天我错误地删除了一个生产数据库。
我能够从昨天晚上恢复数据库,但我发现了最近的 IBD 和 FRM 文件。
所以我想知道我是否能够恢复这些文件。仅仅覆盖 IBD 文件是行不通的,因为 Mysqld 无法启动..
关于如何解决这个问题有什么建议吗?
不,您不能只替换 ibd 文件,它们的内部状态本质上与主表空间状态 (ibdata*) 和事务日志状态 (ib_logfile*) 相关联。
将整个数据集恢复到备用服务器,使用 mysqldump 转储您需要的表,或者如果它们很大,则使用可导出表空间:
在还原服务器上: FLUSH TABLE table_name 用于导出; 保持会话 运行.
在主服务器上: 改变 TABLE table_name 丢弃 TABLE空间;
复制ibd文件过来
在主服务器上: 更改 TABLE table_name 导入 TABLESPACE;
那应该做你想要的。