mysql表空间传输(ERROR 1808) row_format设置
文章结构如下:
从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设置的更多相关文章
- MySQL 表空间传输
聊到MySQL数据迁移的话题,表空间传输时一个很实用的方法. 在MySQL 5.6 Oracle引入了一个可移动表空间的特征(复制的表空间到另一个服务器)和Percona Server采用部分备份,这 ...
- Innodb 表空间传输迁移数据
在mysql5.5之前,mysql实例中innodb引擎表的迁移是个头疼的问题,要么使用mysqldump导出,要么使用物理备份的方法,但是在mysql5.6之后的版本中,可以使用一个新特性,方便地迁 ...
- MySQL表空间集
--MySQL表空间集 ----------------------2014-09-20 1. 收缩ibdata的方法,目前MySQL依然没有提供收缩ibdata的方法,只能重构,下面是5.7的步骤. ...
- Oracle11gR2导入导出实战之表空间传输
Oracle11gR2导入导出实战之使用Datapump进行表空间传输 表空间检查 [oracle@localhost database]$ ps -ef|grep smon oracle 8981 ...
- Oracle表空间传输测试
源数据库平台:window 7 64bit Oracle 11g 64bit目标数据库平台:RHEL6 64bit Oracle 11g 64bit 1.查看数据集 select * from nls ...
- mysql之 表空间传输
说明:MySQL(5.6.6及以上),innodb_file_per_table开启. 1.1. 操作步骤: 0. 目标服务器创建相同表结构1. 目的服务器: ALTER TABLE t DISCAR ...
- MySQL 5.6表空间传输
在MySQL 5.6 Oracle引入了一个可移动表空间的特征(复制的表空间到另一个服务器)和Percona Server采用部分备份,这意味着你现在可以备份单个数据库或表:由于Percona Ser ...
- mysql 表空间
开启了Innodb的innodb_file_per_table这个参数之后[innodb_file_per_table = 1],也就是启用InnoDB的独立表空间模式,便于管理.此时,在新建的inn ...
- innodb和myisam数据库文件存储详解以及mysql表空间
数据库常用的两种引擎有Innodb和Myisam,关于二者的区别参考:https://www.cnblogs.com/qlqwjy/p/7965460.html 1.关于数据库的存储在两种引擎的存储是 ...
随机推荐
- swift-判断是否已获得相机、相册权限
// 相机权限 func isRightCamera() -> Bool { let authStatus = AVCaptureDevice.authorizationStatus(forMe ...
- angular4父组件向子组件传值,子组件向父组件传值的方法
父组件向子组件传值 @Input 文件目录 父组件: father.template.html <h1>父组件</h1> <cmt-child [data]='dat ...
- roscore不能启动
通过VNC 在VNC窗口上出入 roscore 得到下面错误信息 ----------------------------------------------------------- proces ...
- 【转】SQL Server 2008 数据库同步的两种方式 (发布、订阅)
上篇中说了通过SQL JOB的方式对数据库的同步,这一节作为上一节的延续介绍通过发布订阅的方式实现数据库之间的同步操作.发布订阅份为两个步骤:1.发布.2.订阅.首先在数据源数据库服务器上对需要同步的 ...
- windows phone 页面主题设计
达到如图这个效果: 1.保证状态栏背景色与主题栏颜色相同需设置状态栏的透明度,代码如下: shell:SystemTray.IsVisible="True" shell:Syste ...
- Win7 disk.sys无法加载的问题
Win7突然无法启动,应该说是启动中卡死,没有别的问题,用安全模式,显示加载disk.sys时卡死.搜索发现很多人遇到这个问题. 实际解决方法是查看数据线,重新插拔,换口,换线. 数据线出现故障往往表 ...
- 火狐浏览器下载文件中文乱码,文件名中的空格变加号("+")的问题
解决一下问题: 1.火狐浏览器下载文件,中文变乱码 2.IE浏览器下载文件,丢失文件扩展名或强制扩展名为".txt" 3.浏览器下载文件,文件名中的空格变成加号("+&q ...
- 移动互联网iOS工程师必须知道的三点
如果十年磨一剑,那么现在起作为一名iOS工程师,以下三点你必须要知道: 1.现在开始学swift正是时候,永远不要怕晚 因为…新时代的程序语言Swift有很多优势,长江后浪推前浪,Swift上手快,开 ...
- RocketMQ学习笔记(10)----RocketMQ的Producer 事务消息使用
1. 事务消息原理图 RocketMQ除了支持普通消息,顺序消息之外,还支持了事务消息. 1. 什么是分布式事务? 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同 ...
- CentOS 7.5安装pycharm
环境 安装环境: windows 10 Pro CentOS Linux release 7.6.1810 (Core) VMWare Workstation 15 Pro 安装图形化界面包 首先更新 ...