记录一次mysql从ibd文件恢复数据的过程
mysql5.7版本中,一个表会对应两个文件,一个是 .frm 一个是.ibd
如果是分区表,会有多个.ibd文件,并以格式 tablename#P#partitionname.ibd格式命名
8.x版本中,没有frm文件,只有ibd文件
- 新建库
- 新建表
- discard 表空间
ALTER TABLE $TABLE_NAME DISCARD TABLESPACE;
ALTER TABLE $TABLE_NAME DISCARD PARTITION $PARTITION_NAME TABLESPACE;
- 复制ibd文件
- 修改ibd文件所有权为 mysql:mysql
- import 表空间
ALTER TABLE $TABLE_NAME IMPORT TABLESPACE;
ALTER TABLE $TABLE_NAME IMPORT PARTITION $PARTITION_NAME TABLESPACE;
已知问题:
如果表空间很大,超过50G,恢复表空间的时候可能会很久(>10min),并且会有一个warning
Love the neighbor. But don't get caught.