MySQL大型数据文件迁移方法

有的数据表存有上百万条数据,体积达到了GB单位,此时通过mysqldump或者Navicat传输助手这类的方法显然太慢了,那么复制黏贴一下数据库data目录下的文件是不是可以更快一点呢?

诶,今儿咱就来试试!

首先目标数据库需要创建一个与源数据库同名的库和表,表需要与源表的表结构一致。这步操作的原因大概可以理解为,MySQL的innodb表结构和数据是分开存储的,为了不影响目标数据库原有的数据记录,我们仅迁移单独记录的数据即可。

MySQL大型数据文件迁移方法_第1张图片

创建完成后,把目标数据库的表空间删除

alter table `test-a`.person discard tablespace;

然后,复制源数据库data目录下的ibd文件到目标数据库的相同位置下,此时需要注意ibd的文件权限可能会改变。如果是宿主机安装的MySQL那目标权限可能是mysql:mysql,我这里是docker安装的,所以目标权限是polkitd:input,因此需要改写一下ibd文件的权限(命令最后是个.千万要注意,这个不是句号,不是手误多打了!.表示当前目录!当然也可以输入./)

chown -R polkitd:input .

MySQL大型数据文件迁移方法_第2张图片

改变好权限后,目标数据库需要导入表空间数据

alter table `test-a`.person import tablespace

此时,数据就迁移过来了!打开Navicat看看吧!

收工!

你可能感兴趣的:(mysql,数据库)