全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
    MySQL 中的数据是否可以放到云数据库 HybridDB 版进行分析

MySQL 中的数据是否可以放到云数据库 HybridDB 版进行分析

更新时间:2017-06-07 13:26:11

向大家提供几种经过验证的向阿里云云数据库 HybridDB 版导入大量数据的方法。

一:使用 COPY 命令导入数据

COPY语法

  1. 特点:
  2. 1. HybridDB 提供的原生数据导入方法。
  3. 2. 需要先把数据从 Mysql 导出成文本文件。
  4. 3. 适合少量数据上云,导入过程中数据会经过 HybridDB Master 节点,所以性能不会特别理想。

二: 通过阿里云开源的工具 mysql2pgsql 导入

mysql2pgsql 使用方法

  1. 特点:
  2. 1. Mysql 导入 HybridDB DB DB 不落地的导入方案,简单实用。
  3. 2. 推荐购买 ECS,和在 ECS 上使用该工具,特别适合从 RDS Mysql/ECS 自建实例导入数据。
  4. 3. 该工具已经开源了代码,各位可以定制自己的需求。
  5. 4. 该工具写入端也会走 Master 节点,所以性能不会特别理想。

三: 通过 OSS 导入大量数据

gp_oss_ext 使用方法

ossfs 使用方法

  1. 该方法的流程如下:
  2. 1. 购买和开通阿里云 ECSOSS 服务。
  3. 2. ECS 上使用 ossfs 包挂载购买的 oss 为本地文件系统。
  4. 3. ECS 上安装 mysql 二进制RPM
  5. 4. 使用 mysqldump 命令流式获取源库中对应表中的数据,并增量写入到 oss 中。
  6. 5. 使用 gp_oss_ext HybridDB 中创建 oss 外部表,并行的将数据导入到 HybridDB 中。

mysqldump 导出举例:

  1. nohup /home/mysql/bin/mysqldump -h192.168.1.1 -P3306 -utest -ptest testdb testtab | sed 's/),(/\n/g;s/NULL//g' | split -l 1000000 - /ossdata/testtab/data. 1>/home/test/testtab.out 2>&1 &

上面的举例有几个要点,大家可以根据自己的需求定制

  1. 1. 用户可以使用 mysqldump 导出数据,也可以使用 mysql 命令,如果数据量较大,建议使用 --quick 参数,避免内存不足。
  2. 2. mysqldump 跟上的 sed 命令是为了格式化导出的数据,以符合 HybridDB 导入的格式规范,大家可以根据需求定制这一项。
  3. 3. split 也是一个比较关键的点。它用于定制切割和存放文件的规则。原因有以下两点
  4. 3.1 oss 上普通文件有大小限制
  5. 3.2 gp_oss_ext 并行导入 oss 上的数据是以文件为单位并发的,推荐在 OSS 上使用虚拟文件夹存放对应一个表的所有数据。

从 OSS 装载数据的特点:

  1. 1. 这是一个应对大量数据导入到 HybridDB 的方法,可以轻松从 Mysql 导入上百G,甚至上T的数据到 HybridDB
  2. 2. 不需要很大的缓冲临时空间,数据是流式写入到 OSS 的。
  3. 3. 导出和导入时以表为单位进行的,使用者可以并发操作多个表以提高整体的性能。
  4. 4. 该方法的性能远好于前两种,导入到云上 HybridDB 规格越大,性能也会越好。
本文导读目录