版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jeikerxiao/article/details/83061202
MySQL innodb表使用表空间物理文件复制表
1.在目标库创建相同的表名
创建相同结构的同名表。
2. 查找MySQL数据文件存放地
ps -ef|grep mysqld
输出结果:
mysql 21508 6679 0 Sep21 ? 02:03:51 ./bin/mysqld
--basedir=/opt/software/mysql
--datadir=/opt/data/mysql
--plugin-dir=/opt/software/mysql/lib/plugin
--user=mysql
--log-error=/opt/data/mysql/mysqld.log
--pid-file=/opt/data/mysql/mysqld.pid
--port=3306
可以看到数据文件存储在datadir
代表的地址。
cd /opt/data/mysql
进入对应目标数据库
示例数据库为:mydb
➜ mydb ll
total 1.9M
-rw-rw---- 1 mysql mysql 67 Jun 25 13:57 db.opt
-rw-rw---- 1 mysql mysql 9.1K Oct 15 16:17 snc_user.frm
-rw-rw---- 1 mysql mysql 12K Oct 15 16:20 snc_user.ibd
3. 删除目标表的表空间
alter table snc_user discard tablespace;
可以查看到目标数据库下文件没有了.ibd
文件.
➜ mydb ll
total 1.9M
-rw-rw---- 1 mysql mysql 67 Jun 25 13:57 db.opt
-rw-rw---- 1 mysql mysql 9.1K Oct 15 16:17 snc_user.frm
4. 拷贝源库的idb文件
拷贝数据文件到目标数据库下
➜ mydb ll
total 1.9M
-rw-rw---- 1 mysql mysql 67 Jun 25 13:57 db.opt
-rw-rw---- 1 mysql mysql 9.1K Oct 15 16:17 snc_user.frm
-rw-rw---- 1 root root 512K Oct 15 16:20 snc_user.ibd
5. 修改表空间文件权限
修改拷贝过来的数据文件的权限:
chown -R mysql:mysql
6. 目标表导入表空间数据
执行导入命令:
alter table snc_user import tablespace;