拷贝ibd实现MySQL的数据导入

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

官方手册介绍:

http://dev.mysql.com/doc/refman/5.7/en/tablespace-copying.html

http://dev.mysql.com/doc/refman/5.7/en/innodb-transportable-tablespace-examples.html



实验环境:

  阿里云主机(双核4G,普通云盘,2个节点都是yum安装的mysql-community-server5.6  

  db1.table1的大小(ibd文件大小 1.2GB 备份出的sql文件大小为750MB


test1节点上:

1
2
3
4
5
6
7
> use db1;
> FLUSH TABLE table1 FOR EXPORT;
 
# cd /var/lib/mysql/db1
# scp table1.ibd table1.cfg root@test2:/root/   # 因为是内网传输,因此这步花费不到1分钟的时间
 
> UNLOCK tables;



test2节点上:

1
2
3
4
5
6
7
8
9
10
> use db1;
> truncate table table1;
> alter table table1 discard tablespace;
 
# cp /root/table1.* /var/lib/mysql/db1/
# chown mysql.mysql /var/lib/mysql/db1/ -R
 
> alter table table1  import  tablespace;    # 这一步花费了45s
 
select  count(*) from table1;   可以看到数据全部导入了


上面的这种方法导数据全部过程花费了3分钟吧。

而同样的数据,测试使用sql文件导入的花费的时间:  10分钟。  二者高下立判。



附后来写的一个传输并导入远程主机的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
# Description: 简单粗暴的将表空间文件传输到其他节点,并实现导入操作,线上使用出问题后果自行承担
# Date: 2017/01/08
# Author: Lee
 
LOG= "/tmp/trans.log"
 
LOCAL_USER= 'root'
LOCAL_PASS= '123456'
 
DATADIR= "/var/lib/mysql/"
MYSQL= '/usr/bin/mysql'
 
# step1 传输*.ibd *.cfg文件到其他节点 
# 参数说明:
# $1 数据库名称
# $2 表名称
# $3 目标主机的地址
if  [ $ # -eq 3 ]; then
   $MYSQL -u$LOCAL_USER -p$LOCAL_PASS -e  "use $1; FLUSH TABLE $2 FOR EXPORT; system scp $DATADIR$1/$2.ibd $3:/root; system scp $DATADIR$1/$2.cfg $3:/root; UNLOCK TABLES;"  /dev/null  2>&1
else
   echo  -e  "\n\033[31mUsage: sh $0 数据库名 表名 远程主机IP\033[0m\n"  &&  exit  1
fi
 
if  [ $? - eq  0 ];  then
   echo  -e  "\033[32m 传输到远程主机成功  $(date +" %F %T ") \033[0m"  tee  -a $LOG
else
   echo  -e  "\033[32m 传输到远程主机失败  $(date +" %F %T ") \033[0m"  tee  -a $LOG &&  exit  10
fi
 
# step2 ssh 连接到远程节点,将拷贝的数据导入数据库
REMOTE_USER= "root"
REMOTE_PASS= "123456"
MYSQL= '/usr/bin/mysql'
 
ssh  root@$3  "$MYSQL -u$REMOTE_USER -p$REMOTE_PASS -e 'truncate table $1.$2; alter table $1.$2 discard tablespace;system cp /root/$2.* /var/lib/mysql/$1/;system chown mysql.mysql -R /var/lib/mysql;alter table $1.$2 import tablespace;'"  /dev/null  2>&1
 
if  [ $? - eq  0 ];  then
   echo  -e  "\033[32m 导入到远程主机成功  $(date +" %F %T ") \033[0m"  tee  -a $LOG
else
   echo  -e  "\033[32m 导入到远程主机失败  $(date +" %F %T ") \033[0m"  tee  -a $LOG
fi










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1890250,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
关系型数据库 MySQL 区块链
将excel表格数据导入Mysql新建表中
将excel表格数据导入Mysql新建表中
|
Prometheus 监控 Cloud Native
手把手教你Prometheus + Granafa实现mysql 性能监测部署
数据库性能监控可以说是十分重要,能否自行搭建环境实现像阿里云或是腾讯云那样直观的展示不同维度数据的功能?答案是肯定的。下面详细说明一下安装部署过程以及过程中出现的问题,希望对你有所帮助!
手把手教你Prometheus + Granafa实现mysql 性能监测部署
|
SQL 关系型数据库 MySQL
MySQL数据库的数据导入和导出操作指南
MySQL数据库的数据导入和导出操作指南
|
7月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
128 0
|
7月前
|
SQL 关系型数据库 MySQL
MySQL决战:MySQL数据导入导出
MySQL决战:MySQL数据导入导出
|
7月前
|
DataWorks 关系型数据库 调度
DataWorks产品使用合集之在DataWorks中,将ODPS数据导入到MySQL的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
106 0
|
SQL 关系型数据库 MySQL
深入解析MySQL视图、索引、数据导入导出:优化查询和提高效率
索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。否则,数据库系统将读取每条记录的所有信息进行匹配。索引可以根据一个或多个列的值进行排序和搜索,提高查询时的效率。MySQL索引(Index)是一种特殊的数据结构,建立在表的列上,旨在加快数据库查询的速度通过在索引列上创建索引,数据库可以更快地定位和访问特定值,而无需扫描整个数据表。索引可以应用于单个列或多个列的组合,可以按升序或。
|
SQL 分布式计算 分布式数据库
大数据Sqoop借助Hive将Mysql数据导入至Hbase
大数据Sqoop借助Hive将Mysql数据导入至Hbase
266 0
|
SQL 分布式计算 DataWorks
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——二、数据导入导出与同步链路搭建(上)
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——二、数据导入导出与同步链路搭建(上)
|
SQL 存储 分布式计算
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——二、数据导入导出与同步链路搭建(下)
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——二、数据导入导出与同步链路搭建(下)