MySQL5.7迁移表空间——普通表

Mysql 传输表空间--将InnoDB表复制到另一个实例(一)

---在工作中经常遇到将一个InnoDB表从一个实例,移动或者复制到另一个实例,其实有很多的方法,在5.6之前常用的是通过物理或者逻辑备份来实现。
在5.6.6+的版本中,用到了一种基于表空间迁移的快速方法,即类似Oracle TTS。下面本次测试在MySQL5.7环境中迁移普通表。

实验环境:(都是mysql5.7)

源库:192.168.2.200      mysql5.7.16  zhangdb下的emp表

目标库:192.168.2.100    mysql5.7.18  test下  (将zhangdb的emp表,导入到目标库的test schema下)

--:在源库(192.168.2.200)创建一个测试表

mysql> create database zhangdb;
mysql> use zhangdb
mysql> create table emp (id int,name varchar(9));
mysql> insert into emp values (1,'zhang');
mysql> insert into emp values (2,'zhang');
mysql> insert into emp values (3,'zhang');
mysql> insert into emp values (4,'zhang');
mysql> insert into emp values (5,'zhang');
mysql> select * from emp;
+------+-------+
| id   | name  |
+------+-------+
|    1 | zhang |
|    2 | zhang |
|    3 | zhang |
|    4 | zhang |
|    5 | zhang |
+------+-------+
5 rows in set (0.00 sec)

--:在源库(192.168.2.200)上运行FLUSH TABLES … FOR EXPORT 锁定表并生成.cfg元数据文件

mysql> flush tables emp for export;   --(注意:这一步是把表锁住了,不能insert update)

Query OK, 0 rows affected (0.00 sec)

[[email protected] data]# cd zhangdb

[[email protected] zhangdb]# ls

db.opt  emp.cfg  emp.frm  emp.ibd

[[email protected] zhangdb]# ll

total 116

-rw-r----- 1 mysql mysql    67 May 25 15:36 db.opt

-rw-r----- 1 mysql mysql   430 May 25 15:40 emp.cfg   ---生成的cfg文件

-rw-r----- 1 mysql mysql  8586 May 25 15:37 emp.frm

-rw-r----- 1 mysql mysql 98304 May 25 15:37 emp.ibd

--:在目标数据库(192.168.2.100)创建源表结构,并丢弃现有的表空间,如下

MySQL [(none)]> use test

Database changed

MySQL [test]> CREATE TABLE `emp` (

->   `id` int(11) DEFAULT NULL,

->   `name` varchar(9) DEFAULT NULL

-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Query OK, 0 rows affected (0.41 sec)

MySQL [test]>alter table  emp DISCARD TABLESPACE; ---丢弃现有表空间

注意:

※约束条件、字符集等等也必须一致,建议使用show create table t1; 来获取创建表的SQL,否则在新服务器上导入表空间的时候会提示1808错误。

--:将.ibd文件和.cfg元数据文件从源实例复制到目标实例

[[email protected] zhangdb]# scp emp.ibd emp.cfg [email protected]:/mysql/data/test/ ---传输到目标数据库的test schema目录

[[email protected] test]# chown mysql.mysql emp.cfg emp.ibd  --在目标数据库中授权

--在源数据库(192.168.2.200)解锁emp表

mysql> unlock table;

Query OK, 0 rows affected (0.01 sec)

--在目标数据库中(192.168.2.100)导入emp表空间,然后查看表是否正确

MySQL [test]> alter table emp import tablespace;
Query OK, 0 rows affected (0.23 sec)
MySQL [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| emp            |
+----------------+
1 row in set (0.06 sec)
MySQL [test]> select * from emp;
+------+-------+
| id   | name  |
+------+-------+
|    1 | zhang |
|    2 | zhang |
|    3 | zhang |
|    4 | zhang |
|    5 | zhang |
+------+-------+
5 rows in set (0.00 sec)

注意:

ALTER TABLE … IMPORT TABLESPACE特性并不强制对导入的数据施加外键约束。如果表之间有外键约束,那么所有表都应该在相同的(逻辑的)点上导出。在这种情况下,您将停止更新表,提交所有事务,在表上获得共享锁,然后执行导出操作。

原文地址:http://blog.51cto.com/fengfeng688/2149038

时间: 2024-10-11 23:41:30

MySQL5.7迁移表空间——普通表的相关文章

4.windows和Linux下创建oracleusername表空间,表,插入数据,用户管理表等操作

进入超级管理员,运行下面命令 Window下创建数据库.表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 依据实际安装环境进行调整 CREATE TABLESPACE ts_myscott LOGGING DATAFILE 'F:/app/to-to/oradata/orcl/ts_myscott.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL; CREATE TABLESPACE ts_myscott2 LOGGING DATAFILE

4.windows和Linux下创建oracle用户名表空间,表,插入数据,用户管理表等操作

进入超级管理员,执行以下命令 Window下创建数据库,表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 根据实际安装环境进行调整 CREATE TABLESPACE ts_myscott LOGGING DATAFILE 'F:/app/to-to/oradata/orcl/ts_myscott.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL; CREATE TABLESPACE ts_myscott2 LOGGING DATAFILE

数据库实例: STOREBOOK > 表空间 > 编辑 表空间: USERS

ylbtech-Oracle:数据库实例: STOREBOOK  >  表空间  >  编辑 表空间: USERS 表空间  >  编辑 表空间: USERS 1. 一般信息返回顶部 1.1, 之一般信息 1.2, 之数据文件 1.3, 2. 存储返回顶部 2.1, 2.2, 3. 阈值返回顶部 3.1, 3.2, 4.返回顶部 4.1, 作者:ylbtech出处:http://ylbtech.cnblogs.com/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,

数据库实例: STOREBOOK > 表空间 > 编辑 表空间: UNDOTBS1

ylbtech-Oracle:数据库实例: STOREBOOK  >  表空间  >  编辑 表空间: UNDOTBS1 表空间  >  编辑 表空间: UNDOTBS1 1. 一般信息返回顶部 1.1, 之一般信息 1.2, 之数据文件 1.3, 2. 存储返回顶部 2.1, 2.2, 3. 阈值返回顶部 3.1, 3.2, 4.返回顶部 4.1, 作者:ylbtech出处:http://ylbtech.cnblogs.com/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保

数据库实例: STOREBOOK > 表空间 > 编辑 表空间: SYSAUX

ylbtech-Oracle:数据库实例: STOREBOOK  >  表空间  >  编辑 表空间: SYSAUX  表空间  >  编辑 表空间: SYSAUX 1. 一般信息返回顶部 1.1, 之一般信息 1.2, 之数据文件 1.3, 2. 存储返回顶部 2.1, 2.2, 3. 阈值返回顶部 3.1, 3.2, 4. 占有者返回顶部 4.1, 4.2, 5.返回顶部 5.1, 作者:ylbtech出处:http://ylbtech.cnblogs.com/本文版权归作者和博客园

数据库实例: STOREBOOK > 表空间 > 编辑 表空间: SYSTEM

ylbtech-Oracle:数据库实例: STOREBOOK  >  表空间  >  编辑 表空间: SYSTEM  表空间  >  编辑 表空间: SYSTEM 1. 一般信息返回顶部 1.1, 之一般信息 1.2, 之数据文件 1.3, 2. 存储返回顶部 2.1, 2.2, 3. 阈值返回顶部 3.1, 3.2, 4.返回顶部 4.1, 作者:ylbtech出处:http://ylbtech.cnblogs.com/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段

Oracle表空间和表的入门操作指令

Oracle数据库-常用操作指令 查看端口号指令 netstat –a 清屏: SQL> clear scre; SQL> host cls; 表空间   建立表空间 SQL> create tablespace tc20 datafile 'e:\tc20_data_dbf' size 20m autoextend on next 5m maxsize 500m; 查询表空间名称 SQL> select tablespace_name,file_name from dba_dat

检查使用共享表空间的表

检查使用共享表空间的表 最近接手一台新的数据库机器,发现某些库某些表没有ibd文件只有frm文件,而ibdata1文件一共有20G+,估计是使用了共享表空间 存放在ibdata1文件里 于是写了一个脚本,检查实例下哪些库哪些表使用了共享表空间,原理是如果有frm文件而没有ibd文件就认为是使用了共享表空间 #!/bin/bash # Written by steven # Name: checktablesharespace.sh # Version: v1.0 # Function: 检查使用

求解?表空间,表,用户这三者之间的 关系与区别?

发表于: 2012-02-11 16:40:58 小弟初学oracle,但是在表空间,用户,表这三者之间的关系,有点模糊,希望大牛指导下! 更多0分享到:       对我有用[0] 丢个板砖[0] 引用 | 举报| 管理 回复次数:21 关注 dengnanyi 一棵老松树 本版等级: #1 得分:0回复于: 2012-02-11 16:55:59 表空间:一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(TABLESPACE).一个表空间可将相关的逻辑结构组合在一起.表:表(tabl

Oracle创建表空间和表

创建表空间和表ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的oracle中的表就是一张存储数据的表.表空间是逻辑上的划分.方便管理的.数据表空间 (Tablespace)         存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据.当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件数据表         在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层. 我们在数据库中存放数据,最