MySQL innodb表使用表空间物理文件复制表

MySQL innodb表使用表空间物理文件复制表

    • 1.在目标库创建相同的表名
    • 2. 查找MySQL数据文件存放地
    • 3. 删除目标表的表空间
    • 4. 拷贝源库的idb文件
    • 5. 修改表空间文件权限
    • 6. 目标表导入表空间数据

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;

你可能感兴趣的:(MySQL)