1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

MySQL跨大版本的大表迁移

介绍

作为一名本际云服务器推荐网的小编,我们近来有需求需要将生产环境数据库的某个库的几张大表剥离出来,放到新的环境(高版本)中去。这里我们将介绍大表的迁移,具体方案如下。

MySQL跨大版本的大表迁移

方案描述

1.适用范围 MySQL 5.6.6 以上平台:Linux。2.迁移前提要求 mysql 版本 5.6.6 及以上;表存储引擎为 innodb 并且开启独立表空间 innodb_file_per_table;处于导出状态的表只允许读也即是 “read_only” 状态;DISCARD TABLESPACE 不支持分区表[5.6.17 才支持]并且当表上具有外键关系的时候需要将 foreign_key_check 设置为 0;源和目标实例的 pagesize 必须大小一致;ALTER TABLE…IMPORT TABLESPACE 不强制进行外键约束检查,所以需要将主表和子表都导出,然后在目标实例导入。

3.优点不需要消耗太多的资源;很方便的将表从一个实例迁移到另一个实例;相对于 mysqldump 来说你无须导出然后导入同时还的维护索引。4.导入的过程 mysql 内部会做如下事情检查表空间每个 page 的一致性;更新每个 page 的 spaceid 和 lsn 的信息;启用头部页标记和更新 LSN 到头部页;page 状态信息设置为 dirty,这样 page 将很快会被刷新到磁盘。

操作步骤

1.目标数据库创建相同表结构:use zdh; DROP TABLE `user_basic_info`; CREATE TABLE `user_basic_info` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT 评论 登录账号, `password` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT 评论 登录密码, `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT 评论 用户姓名, `mobile` varchar(11) COLLATE utf8_unicode_ci NOT NULL DEFAULT 评论 手机号码, `email` varchar(50) COLLATE utf8_unicode_ci DEFAULT 评论 邮箱账号, `address` varchar(100) COLLATE utf8_unicode_ci DEFAULT 评论 地址信息, `level` varchar(10) COLLATE utf8_unicode_ci DEFAULT 评论 会员等级, `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 创建时间, `utime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 修改时间, PRIMARY KEY (`id`), UNIQUE KEY `index_username` (`username`) USING BTREE COMMENT 登录账号唯一索引) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=用户基本信息;若报错(低版本到高版本):ERROR 1808(HY000): Schema mismatch(Table flags dont match, server table has 0x4 and the meta-data file has 0x21) 请指定:row_format=COMPACT。

2.目标数据库卸载表空间 ALTER TABLE user_basic_info DISCARD TABLESPACE;

3.源数据执行表空间导出 use zdh FLUSH TABLES user_basic_info FOR EXPORT;

4.拷贝数据文件 scp -r user_basic_info.cfg user_basic_info.ibd mysql@XXX.XXX.XX.51:/data/mysql/data/zdh

5.释放源数据库的 metadata lock use zdh unlock table;

6.目标数据库导入表空间 alter table user_basic_info import tablespace;

至此迁移完成,查看数据。本文作者:赵栋辉(上海新炬王翦团队)本文来源:“IT那活儿”公众号

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6386.html