MySQL-独立表空间迁移
来自45讲
独立表空间迁移,可以在多实例上进行试验(把一张表从另外一个库拷贝过来直接使用,更适用于大表迁移)
mysql> create table test_emp like lagou.emp; /*创建一个相同表结构的空表*/
mysql> alter table test_emp discard tablespace; /*新表的.ibd文件会被删除*/
mysql> flush table lagou.emp for export; /*生成.cfg文件(注意:期间不能退出窗口,退出.cfg自动消失)*/
/*执行此步后lagou.emp整个表处于只读状态,直到执行 unlock tables 命令后才释放读锁*/
shell> scp /data/3306/data/lagou/emp.cfg /data/3306/data/haha/test_emp.cfg;cp /data/3306/data/lagou/emp.ibd /data/3306/data/haha/test_emp.ibd
shell> scp /data/3306/data/lagou/emp.cfg 124.222.102.32:/data/3306/data/haha/test_emp.cfg;scp /data/3306/data/lagou/emp.ibd 124.222.102.32:/data/3306/data/haha/test_emp.ibd
mysql> chown mysql.mysql /data/3306/data/haha/test_emp.ibd;chown mysql.mysql /data/3306/data/haha/test_emp.cfg
/*拷贝得到的两个文件,MySQL进程要有读写权限*/
mysql> unlock tables; /*这时候.cfg文件会被删除*/
mysql> alter table test_emp import tablespace;
物理拷贝的方式速度最快,尤其对于大表拷贝来说是最快的方法。
如果出现误删表的情况,用备份恢复出误删之前的临时库,然后再把临时库中的表拷贝到生产库上,是恢复数据最快的方法。
但是,这种方法的使用也有一定的局限性:
必须是全表拷贝,不能只拷贝部分数据;
需要到服务器上拷贝数据,在用户无法登录数据库主机的场景下无法使用;
由于是通过拷贝物理文件实现的,源表和目标表都是使用 InnoDB 引擎时才能使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?