mysql - 替换 Innodb 中的 IBD 文件
问题描述
今天我犯了一个删除生产数据库的错误。
我能够从昨天晚上恢复数据库,但我发现了最近一段时间的 IBD 和 FRM 文件。
所以我想知道我是否能够恢复这些文件。仅覆盖 IBD 文件是行不通的,因为无法启动 Mysqld ..
对于如何解决这个问题,有任何的建议吗?
解决方案
不,您不能只替换 ibd 文件,它们的内部状态本质上与主表空间状态 (ibdata*) 和事务日志状态 (ib_logfile*) 相关联。
将整个数据集恢复到备用服务器,使用 mysqldump 转储您需要的表,或者如果它们很大,则使用可导出的表空间:
在恢复服务器上:FLUSH TABLE table_name FOR EXPORT;保持会话运行。
在主服务器上:ALTER TABLE table_name DISCARD TABLESPACE;
复制ibd文件。
在主服务器上:ALTER TABLE table_name IMPORT TABLESPACE;
那应该做你想做的事。
推荐阅读
- java - How can I correct my code for a Rock, Paper, Scissor GUI game?
- c++ - 不使用有状态元编程的 C++ 计数类型
- swift - SpriteKit 避免两个节点之间的碰撞
- c# - How to navigate through modal pages in Xamarin.Forms using Fresh.MVVM
- mongodb - 'features.0._id.$oid' 中的美元 ($) 前缀字段 '$oid' 对存储无效
- opencv - 反光材料和 Kinect v2 红外摄像头
- powerbi - PowerBI - 表格/矩阵视觉中的动态标题
- json - 数据可视化。TypeError: *: 'int' 和 'NoneType' 不支持的操作数类型
- netcdf4 - netCDF4ninstall 不适用于 python3.8
- html - 使用 CSS Grid 创建棋盘