文章结构如下:

从MYSQL5.6版本开始,引入了传输表空间这个功能,可以把一张表从一个数据库移到另一个数据库或者机器上。迁移的时候很方便,尤其是大表。

由于本次达到测试使用版本5.6.38传到5.7.20。

1、数据库详情

传输和被传输数据库条件:

1、mysql版本必须是5.6及以上的版本。

2、使用独立表空间方式,现在版本默认开启innodb_file_per_table。

3、源库和目标库之间的page size必须一致。

4、当表做导出操作时,该表只能进行只读操作。

5、查看innodb_file_format参数(建表结构注意这个参数)

IP

数据库

类型

操作系统

数据库版本

172.16.20.30

erp (t表)

传输库

Linux 6.7

5.6.38

172.16.20.32

test(t表)

被传输库

Linux 6.7

5.7.20

注意:

从MySQL5.7.7版本中innodb_file_format参数(该参数表示innodb文件格式)的默认值发生了变化,在MySQL5.7.7以前innodb_file_format参数默认是Antelope而默认的行格式是(ROW_FORMAT)是COMPACT从MySQL5.7.7以后版本innodb_file_format默认值为Barracuda默认的行格式是(ROW_FORMAT)是DYNAMIC所以需要在创建表结构时指定row_format=compact从MySQL5.7.7版本中innodb_file_format参数(该参数表示innodb文件格式)的默认值发生了变化,在MySQL5.7.7以前innodb_file_format参数默认是Antelope,而默认的行格式是(ROW_FORMAT)是COMPACT,从MySQL5.7.7以后版本innodb_file_format默认值为Barracuda,默认的行格式是(ROW_FORMAT)是DYNAMIC,所以需要在创建表结构时指定row_format=compact;5.7.7以后版本到5.6经测试未通过;

2、传输条件检查

1、传输数据库条件检查

版本:5.6.38(满足要求)

innodb_file_per_table参数

mysql> show global variables like 'innodb_file_per_table';

+-----------------------+-------+

| Variable_name         | Value |

+-----------------------+-------+

| innodb_file_per_table | ON    |

+-----------------------+-------+

1 row in set (0.00 sec)

查看传输page size(满足要求)

page size 16k

MySQL5.7.7以前innodb_file_format参数默认是Antelope,而默认的行格式是(ROW_FORMAT)是COMPACT,从MySQL5.7.7以后版本innodb_file_format默认值为Barracuda,默认的行格式是(ROW_FORMAT)是DYNAMIC,所以需要在创建表结构时指定row_format=compact;

2、被传输数据库条件检查

版本:5.7.20(满足要求)

innodb_file_per_table参数(满足)

查看传输page size

page size(16K)

查看innodb_file_format参数:

MySQL5.7.7以前innodb_file_format参数默认是Antelope,而默认的行格式是(ROW_FORMAT)是COMPACT,从MySQL5.7.7以后版本innodb_file_format默认值为Barracuda,默认的行格式是(ROW_FORMAT)是DYNAMIC,所以需要在创建表结构时指定row_format=compact;

3、传输演练

1、被传送库建表(表结构,名称一样)

查看传送端建表语句:

CREATE TABLE `t` (

`id` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

注意:

如果此处(向高版本传送表空间)row_format不一样,建表不设置row_format;报错如下:

ERROR 1808 (HY000): Schema mismatch (Table flags don't match, server table has 0x4 and the meta-data file has 0x21)

test库建一张t表:

CREATE TABLE `t` (

`id` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 row_format=compact;

2、卸载被传送端表空间数据文件

注意,这个不能用操作系统删除。

查看生成的数据文件:

卸载表空间数据文件

alter table t discard tablespace;

查看数据文件是否卸载:

无t.idb文件,已卸载。

3、在传送端执行表空间导出操作

在传送端(erp库执行)

flush table t for export;

多了一个t.cfg文件。

将t.cfg,t.ibd文件复制到erp库指定路径并修改权限。

4、被传送端执行导入操作

传送端test数据库执行解锁操作(因为目前处于只读操作,需要解锁操作)

unlock tables;

被传送端执行导入操作:

alter table t import tablespace;

select count(*) from t;

成功把5.6.38 erp.t数据传输到5.7.20 test.t。

mysql表空间传输(ERROR 1808) row_format设置的更多相关文章

  1. MySQL 表空间传输

    聊到MySQL数据迁移的话题,表空间传输时一个很实用的方法. 在MySQL 5.6 Oracle引入了一个可移动表空间的特征(复制的表空间到另一个服务器)和Percona Server采用部分备份,这 ...

  2. Innodb 表空间传输迁移数据

    在mysql5.5之前,mysql实例中innodb引擎表的迁移是个头疼的问题,要么使用mysqldump导出,要么使用物理备份的方法,但是在mysql5.6之后的版本中,可以使用一个新特性,方便地迁 ...

  3. MySQL表空间集

    --MySQL表空间集 ----------------------2014-09-20 1. 收缩ibdata的方法,目前MySQL依然没有提供收缩ibdata的方法,只能重构,下面是5.7的步骤. ...

  4. Oracle11gR2导入导出实战之表空间传输

    Oracle11gR2导入导出实战之使用Datapump进行表空间传输 表空间检查 [oracle@localhost database]$ ps -ef|grep smon oracle 8981 ...

  5. Oracle表空间传输测试

    源数据库平台:window 7 64bit Oracle 11g 64bit目标数据库平台:RHEL6 64bit Oracle 11g 64bit 1.查看数据集 select * from nls ...

  6. mysql之 表空间传输

    说明:MySQL(5.6.6及以上),innodb_file_per_table开启. 1.1. 操作步骤: 0. 目标服务器创建相同表结构1. 目的服务器: ALTER TABLE t DISCAR ...

  7. MySQL 5.6表空间传输

    在MySQL 5.6 Oracle引入了一个可移动表空间的特征(复制的表空间到另一个服务器)和Percona Server采用部分备份,这意味着你现在可以备份单个数据库或表:由于Percona Ser ...

  8. mysql 表空间

    开启了Innodb的innodb_file_per_table这个参数之后[innodb_file_per_table = 1],也就是启用InnoDB的独立表空间模式,便于管理.此时,在新建的inn ...

  9. innodb和myisam数据库文件存储详解以及mysql表空间

    数据库常用的两种引擎有Innodb和Myisam,关于二者的区别参考:https://www.cnblogs.com/qlqwjy/p/7965460.html 1.关于数据库的存储在两种引擎的存储是 ...

随机推荐

  1. mysqli数据库操作简单实例

    mysqli数据库操作简单实例 代码 结果

  2. ROS集成开发环境RoboWare Studio安装教程

    前言:很多人说vim是最快的,所以我选择用roboware. ROS 自带的编辑器vim增加插件,效果如下: RoboWare Studio,效果如下: 下面开始安装. 一.安装 去官网 http:/ ...

  3. 开发辅助 | 前端开发工程师必懂的 UI 知识

           移动 UI 设计的世界 ... 1.屏幕尺寸 屏幕大小,指屏幕对角线的长度,而不是屏幕的宽度或高度: 单位为英寸 如 iPhone 7 屏幕尺寸为 4.7 英寸:三星 S6 屏幕尺寸为 ...

  4. RecyclerView的刷新和加载更多

    1.RecyclerView :出现也不知道多久了,没怎么使用过,上次写的笔记乱七八糟的,再次仔细的整理下.   使用需加入依赖  compile 'com.android.support:recyc ...

  5. Xcode 下“ did not have any applicable content ”分析及解决

    问题的产生 a.新建项目时选的iPhone b.为了做成图片启动,按照惯例去掉了LaunchStoryboard的引用,建了个LaunchImage的资源,属性里随便勾了一个,找了张匹配的图拖了过去 ...

  6. day09-2 字典,集合的内置方法

    目录 字典的内置方法 作用 定义方式 方法 优先掌握 需要掌握 存储一个值or多个值 有序or无序 可变or不可变 集合的内置方法 作用 定义方式 方法 存储一个值or多个值 有序or无序 可变or不 ...

  7. EntityFramework 二

    特性 用来具体的设置数据库属性   [Table("表名")]//设置表名 public class User { [Key] //设置主键 [Column("列名&qu ...

  8. WebAssembly学习(二):Windows10下WebAssembly C/C++编译环境的搭建与Hello World尝试

    首先,不论是在Windows.Linux还是Mac上,Webassembly的编译都是主要依赖于Emscripten SDK这个工具的.但是,在这里必须要吐槽一下,不论是WebAssembly官网.W ...

  9. 通过rpm安装jdk

    通过rpm安装,安装在/usr/local 1 .编辑系统环境变量 vi /etc/profile 输入i 加入内容如下: export JAVA_HOME=/usr/local/jdk1.7.0_7 ...

  10. HDU3001 Traveling (状压dp+三进制+Tsp问题总结)

    (1)这道题最多可以走两次,所以有0, 1, 2三种状态,所以我们要用三进制 如果要用三进制,就要自己初始化两个数组, 一个是3的n次方,一个是三进制数的第几位的数字是什么 void init() { ...