如何把数据从 Mysql 导入到 Greenplum

本文涉及的产品
对象存储 OSS,20GB 3个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介:

本文介绍给大家几个把数据从 Mysql 导入到 Greenplum 的方法

自阿里云推出 Greenplum 服务以来,很多公测用户希望把自己在 Mysql 中的数据放到 Greenplum 用于进行数据分析。而且很多客户的数据量相当大。在这里我向大家提供几种经过验证的向云上 Greenplum 导入大量数据的方法。

一:使用 COPY 命令导入数据

1 COPY语法

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

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

2 mysql2pgsql 使用方法

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

三: 通过 OSS 导入大量数据

3 gp_oss_ext 使用方法

4 ossfs 使用方法

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

mysqldump 导出举例:

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 &
AI 代码解读

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

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

从 OSS 装载数据的特点:

1. 这是一个应对大量数据导入到 Greenplum 的方法,可以轻松从 Mysql 导入上百G,甚至上T的数据到 Greenplum。
2. 不需要很大的缓冲临时空间,数据是流式写入到 OSS 的。
3. 导出和导入时以表为单位进行的,使用者可以并发操作多个表以提高整体的性能。
4. 该方法的性能远好于前两种,导入到云上 Greenplum 规格越大,性能也会越好。
AI 代码解读
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
9647
分享
相关文章
【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题
**简介**:在MySQL迁移到崖山环境时,若字段类型为char(2),而应用存储的数据仅为'0'或'1',查询时崖山会自动补空格。原因是mysql的sql_mode可能启用了PAD_CHAR_TO_FULL_LENGTH模式,导致保留CHAR类型尾随空格。解决方法是与应用确认数据需求,可将崖山环境中的char类型改为varchar类型以规避补空格问题,适用于所有版本。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
本文探讨了在使用YMP 23.2.1.3迁移MySQL Server字符集为latin1的中文数据至YashanDB时出现乱码的问题。问题根源在于MySQL latin1字符集存放的是实际utf8编码的数据,而YMP尚未支持此类场景。文章提供了两种解决方法:一是通过DBeaver直接迁移表数据;二是将MySQL表数据转换为Insert语句后手动插入YashanDB。同时指出,这两种方法适合单张表迁移,多表迁移可能存在兼容性问题,建议对问题表单独处理。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,
SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动
通过详细的步骤和示例代码,您可以在 SpringBoot 项目中成功集成 Flink CDC,并实时追踪 MySQL 数据库的变动。
257 43
MySQL底层概述—4.InnoDB数据文件
本文介绍了InnoDB表空间文件结构及其组成部分,包括表空间、段、区、页和行。表空间是最高逻辑层,包含多个段;段由若干个区组成,每个区包含64个连续的页,页用于存储多条行记录。文章还详细解析了Page结构,分为通用部分(文件头与文件尾)、数据记录部分和页目录部分。此外,文中探讨了行记录格式,包括四种行格式(Redundant、Compact、Dynamic和Compressed),重点介绍了Compact行记录格式及其溢出机制。最后,文章解释了不同行格式的特点及应用场景,帮助理解InnoDB存储引擎的工作原理。
MySQL底层概述—4.InnoDB数据文件
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
50 9
MySQL和SQLSugar百万条数据查询分页优化
在面对百万条数据的查询时,优化MySQL和SQLSugar的分页性能是非常重要的。通过合理使用索引、调整查询语句、使用缓存以及采用高效的分页策略,可以显著提高查询效率。本文介绍的技巧和方法,可以为开发人员在数据处理和查询优化中提供有效的指导,提升系统的性能和用户体验。掌握这些技巧后,您可以在处理海量数据时更加游刃有余。
108 9
MySQL进阶突击系列(09)数据磁盘存储模型 | 一行数据怎么存?
文中详细介绍了MySQL数据库中一行数据在磁盘上的存储机制,包括表空间、段、区、页和行的具体结构,以及如何设计和优化行数据存储以提高性能。
【YashanDB 知识库】MySQL 迁移至崖山 char 类型数据自动补空格问题
问题分类】功能使用 【关键字】char,char(1) 【问题描述】MySQL 迁移至崖山环境,字段类型源端和目标端都为 char(2),但应用存储的数据为'0'、'1',此时崖山查询该表字段时会自动补充空格 【问题原因分析】mysql 有 sql_mode 控制,检查是否启用了 PAD_CHAR_TO_FULL_LENGTH SQL 模式。如果启用了这个模式,MySQL 才会保留 CHAR 类型字段的尾随空格,默认没有启动。 #查看sql_mode mysql> SHOW VARIABLES LIKE 'sql_mode'; 【解决/规避方法】与应用确认存储的数据,正确定义数据
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
177 8