表空间迁移测试及遇到的问题


测试环境:
数据源服务器            3307:dba.t091203
数据目标服务器    330723 :dba.t091203
描述:
将3307 实例的 dba.t091203 表空间迁移到 330723 实例 dba.t091203
过程概述:
1.源服务器准备测试表和数据  dba.t091203
2.目标服务器建同名表 dba.t091203
3.目标服务器 :alter table  dba.t091203 discard tablespace;-- 清除表空间
4.源服务器:flush tables  dba.t091203 for export;
5.源服务器:cp xxx/t091203.ibd  xxxx/目标目录
6.源服务器:alter table  dba.t091203 discard tablespace;
7.目标服务器:chown -R mysql:mysql  t091203.*
8.目标服务器:alter table  dba.t091203 import tablespace;
具体操作过程:
 
#源:数据准备阶段
root@localhost:mysql3307.sock[dba]>create table dba.t091202 like dba2.tabf_goods ;
Query OK, 0 rows affected (0.05 sec)
root@localhost:mysql3307.sock[dba]>insert into dba.t091202 select * from dba2.tabf_goods;
Query OK, 761 rows affected (0.12 sec)
Records: 761 Duplicates: 0 Warnings: 0
 
#目标服务器:准备表,空表就好。
root@localhost:mysql330723.sock[dba]>CREATE TABLE `t0912` (
   ->   `goods_id` decimal(22,0) NOT NULL,
   ->   `descrip` varchar(40) NOT NULL,
   ->   `domain_no` decimal(22,0) NOT NULL,
   ->   `goods_type` decimal(22,0) NOT NULL,
   ->   `goods_class` decimal(22,0) NOT NULL,
   ->   `help_code` varchar(20) NOT NULL,
   ->   `status` char(1) NOT NULL,
   ->   `DESCRIP_EN` varchar(200) DEFAULT NULL,
   ->   PRIMARY KEY (`goods_id`,`domain_no`)
   -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
Query OK, 0 rows affected (0.49 sec)

#目标服务器,要导入表空间的表,先清除表空间。这一步至关重要,不然一会导入会报错
root@localhost:mysql330723.sock[dba]>alter table t091203 discard tablespace;
Query OK, 0 rows affected (0.00 sec)

注意:
1.    目标服务器准备表这个步骤一定要做,不然后面导入表空间的时候会报错,提示表不存在。
root@localhost:mysql330723.sock[dba]>alter table t091203 import tablespace;
ERROR 1146 (42S02): Table 'dba.t091203' doesn't exist

2.    这时,在新建空表也会报错
root@localhost:mysql330723.sock[dba]>create table t091202 (id int);
ERROR 1146 (42S02): Table 'dba.t091203' doesn't exist

3.    目标服务器,准备空表后,要做删除表空间操作,如果discard tablespace 不做,那么后面导入表空间也会报错。
root@localhost:mysql330723.sock[dba]>alter table t091203 import tablespace;
ERROR 1813 (HY000): Tablespace 'dba/t091203' exists.
 
#源服务器,导出表空间
root@localhost:mysql3307.sock[dba]>flush table t091202 for export;
Query OK, 0 rows affected (0.00 sec)
 
#源服务 拷贝表空间文件到目标位置
cp /home/backup/t091203.ibd /data/330723/mysql/data/dba/
cp /home/backup/t091203.cfg /data/330723/mysql/data/dba/
 
#源服务器
root@localhost:mysql3307.sock[dba]>unlock tables;
Query OK, 0 rows affected (0.01 sec)
root@localhost:mysql3307.sock[dba]>alter table t091202 discard tablespace;
Query OK, 0 rows affected (0.02 sec)
 
#目标服务修改文件用户(shell层)
chown -R mysql:mysql t091203.*

#目标服务器导入表空间
root@localhost:mysql330723.sock[dba]>alter table t091203 import tablespace;
Query OK, 0 rows affected, 1 warning (0.04 sec)
root@localhost:mysql330723.sock[dba]>show warnings;
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                                                     |
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1810 | InnoDB: IO Read error: (2, No such file or directory) Error opening './dba/t091203.cfg', will attempt to import without schema verification |
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
##############################################################################
过程当中文件变化:
1. 源数据表导入表空间时:flush table t091202 for export;
     t0912.cfg 文件    生成
2. 源数据表释放锁
    t0912.cfg 文件    消失
3. 源数据库表删除表空间时:
    ibd文件                消失
 
 
ps:论坛格式弄不好,放了一个附件是测试过程和问题
已邀请:

要回复问题请先登录注册