MySQL 8通过.ibd原始文件还原表数据到docker容器部署的数据库【测试成功】

艺帆风顺 发布于 2025-04-02 15 次阅读


一、问题背景    某项目存在单表数据量极大,通过SQL的方式导入数据库卡死,故考虑使用.ibd原始文件拷贝导入。参考链接:https://www.cnblogs.com/xibuhaohao/articles/17932856.html二、源端数据库操作    通过 show global variables like "%datadir%";  查询数据路径,如果是docker容器部署则需要确认挂载路径。  三、导入端数据库操作  首先确认ibd文件的路径,将源ibd文件拷贝进来。  查看之前ibd文件的权限和拥有者、确保权限所属用户所属组修改一致。

    sudo chown systemd-coredump:input  ehs_factors_real_time_data.ibdsudo chmod 640 ehs_factors_real_time_data.ibd

     然后使用以下命令:

        1)先解除表空间占用执行完后,数据库文件下的.ibd文件会消失。

        2)再导入表空间刷新数据库,根据文件大小不同、等待时间不同,可以看到数据已经恢复。

      ALTER TABLE ehs_factors_real_time_data DISCARD TABLESPACE;ALTER TABLE `ylehs`.`ehs_factors_real_time_data` IMPORT TABLESPACE;

      再确认数据库总行数是否发生变化:

        SELECT     (SELECT COUNT(*FROM ehs_factors_real_time_data) AS ehs_factors_real_time_data_count,    (SELECT COUNT(*FROM ehs_factors_data) AS ehs_factors_data_count;