| 背景
需求来源
MySQL越来越流行,而且存储在MySQL的数据量也越来越大,单表数据达亿行已经是非常常见的现象,而这些表里面保存了大量的历史记录,严重影响SQL执行的效率。本文是针对客户需求,迁移MySQL Innodb大表分区中部分历史归档分区到其他实例或者其他库表,而且迁移过程尽量减少对业务环境的影响。
环境介绍
-
MySQL 5.7.21
-
Centos 7.4
-
innodb_file_per_table=1
| MySQL常用的Innodb迁移方法
-
MySQL Enterprise Backup(物理备份,类似于xtrabackup)
-
Copying Data Files (冷备份)
-
逻辑导出和导入(mysqldump,mydumper,mysqlpump)
-
可传输的表空间
| 迁移方案(可传输的表空间)
准备工作
-
MySQL版本必须是5.7
-
迁移过程中存在短暂时间内业务不可写,建议提前做好准备
操作步骤
查看需要迁移表(原表)结构
root@localhost : testdba 02:03:18> use test
Database changed
root@localhost : test 08:37:50> show create table sbtest2;
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| sbtest2 | CREATE TABLE `sbtest2` (
`id` int(10) DEFAULT NULL,
`name` varchar(20) COLLATE utf8_bin DE