1.创建容器
docker run -p 3306:3306 --name mysql052 --restart=always --privileged=true \
-e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.22 --lower_case_table_names=1

2.创建表保持与idb文件一致
如果不知道原来表结构什么样 ,下载mysql工具
http://downloads.mysql.com/archives/utilities/
安装过程中如果提示 This application requires the Visual c++ RedistributablePackage for Visual Studio 2013, Please install theredistributable package and then run this installer again,See the online documentation for more details.
就先安装 http://www.microsoft.com/zh-CN/download/details.aspx?id=40784 下载 vcredist_x64.exe
运行mysql utilities
执行语句 mysqlfrm --diagnostic 路径/xxx.frm 路径就是文件位置
比如我们执行 mysqlfrm --diagnostic 路径/bilibili.frm 就能得到建表语句,删除语句中涉及到的文件路径。

如果只有ibd可以通过ibd2sql生成DDL
项目地址: http://github.com/ddcw/ibd2sql
下载地址: http://codeload.github.com/ddcw/ibd2sql/zip/refs/heads/main
解析开后进入目录执行 python3 main.py ibc文件path --DDL

3.分离表空间
select concat("alter table ",table_schema,".",table_name," discard tablespace;") 
from information_schema.tables 
where table_schema='数据库名'

4.关闭数据库
5.复制 idb文件到 /dp/docker/file/mysql052/data/数据库名
6.重启数据库
7.关联表空间
select concat("alter table ",table_schema,".",table_name," import tablespace;") 
from information_schema.tables 
where table_schema='数据库名'