1. 场景描述

因兄弟项目中mysql有点扛不住了,要做sql优化,但是业务有点小复杂,优化起来有点麻烦(sql嵌套有点多),便想着用Mpp数据库Greenplum测试下,看性能和复杂度怎么样,趟趟水。

2.解决方案

初步的想法是:因为mysql和postgresql(Greenplum建立在postgresql之上,i'm 软件老王)都是使用的标准sql,直接把mysql的建表语句在Greenplum建一边,把数据导入过来测试一下就行了,应该半天内就能搞定。

2.1 Greenplum建表

将mysql的表结构通过navicat for mysql导出(navivat中只导出表结构,如下图),但是发现导出的结构在

Greenplum中执行不了,mysql中的ddl语句:

 `CONFIG_ID` varchar(36) COLLATE utf8_unicode_ci NOT NULL COMMENT '软件老王'

解决办法

(1)网上找了mysql转postgresql的java代码,写的不是太全面,改了几次还是有点问题,放弃。

(2)问了下dba,用的Navicat Premium 12 可以转,网址:https://www.navicat.com.cn/

Navicat Premium可以同时操作多个数据库,包括:mysql和greenplum(postgresql),以前使用navicat for mysql只能操作mysql数据库,navicat for postgresql只能操作postgresql。

2.2 导出数据结构

使用Navicat Premium,如下图:

左边选择mysql,右边选择greenplum,同时去掉选项中的创建记录,就能在Greenplum中创建表了。(先创建所有表,数据量太大,我们只导几张表的数据进行测试)

2.3 导入数据。

2.3.1 初步想法

初步想法是通过Navicat 直接导入,使用上面的Navicat Premium12就能直接从mysql导入Greenplum数据,但是导入了几张小表后,碰到的一张30多万的表,导了20多分钟还不到40%,看了下greenplum的master节点cpu有点高,后面还有好几张百万级的数据,这样的效率要导到猴年马月了。

2.3.2 外部表方式

(1)首先需要在master节点启动外部表程序fdisk,新建个目录,存放从mysql中导出的文件,我导出的是csv格式。

[gpadmin@软件老王 ~]$ mkdir script
[gpadmin@软件老王 ~]$ nohup gpfdist -d /home/gpadmin/script/ -p 8081 -l /home/gpadmin/script/ruanjianlaowang.log &

(2)创建外部表

------------------------
CREATE EXTERNAL TABLE "public"."t_laowang_ex" (
"laowang_type" numeric(3),
"laowang_id" varchar(36)
)
location ('gpfdist://10.192.0.168:8081/laowang.csv') format 'csv' (DELIMITER ',') encoding 'utf8';

说明:

(a)可以直接将原表的ddl语句拿出来,名称增加个_ex(新建外部表的时候,发现not null用不了要替换成空)

(b)其中ip地址是greenplum的master地址,laowang是csv文件名称,csv文件是通过navicat右键导出的,i‘m 软件老王。

gpfdist://10.192.0.168:8081/laowang.csv

(3)数据装载到greenplum表中

insert into t_laowang select * from t_laowang_ex;
i'm 软件老王

这样就完成了数据从mysql迁移到了greenplum中,具体测试结果对比就不在这里多说了。

2.4 总体结论

方案执行比想象的复杂,一是两个数据库建表sql不一样,后通过最新的Navicat Premium 12 解决;二是直接通过navicat导入,在效率上有问题,走不通,通过外部表的方式解决,外部表方式2-3秒就能导入完成;三是,新建外部表的时候,跟原表稍微有点差异,也的注意下。


I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

mysql迁移mpp数据库Greenplum的更多相关文章

  1. python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)

    1. 场景描述 一直做java,因项目原因,需要封装一些经典的算法到平台上去,就一边学习python,一边网上寻找经典算法代码,今天介绍下经典的K-means聚类算法,算法原理就不介绍了,只从代码层面 ...

  2. 数据库 SQL Server 到 MySQL 迁移方法总结

    最近接手一起老项目数据库 SQL Server 到 MySQL 的迁移.因此迁移前进行了一些调查和总结.下面是一些 SQL Server 到 MySQL 的迁移方法. 1. 使用 SQLyog 迁移 ...

  3. 迁移应用数据库到MySQL Database on Azure

    by Rong Yu 有用户问怎么把他们应用的数据库迁移到MySQL Database on Azure上,有哪些方式,有没有需要注意的地方.今天我们来概括介绍一下迁移应用数据库到MySQL Data ...

  4. 使用Oracle SQL Developer迁移MySQL至Oracle数据库

    Oracle SQL Developer是Oracle官方出品的数据库管理工具.本文使用Oracle SQL Developer执行从MySQL迁移至Oracle数据库的操作. 2017年3月6日 操 ...

  5. 怎样将数据库MySQL 迁移到 MariaDB 上

    自从甲骨文收购 MySQL 后,由于甲骨文对 MySQL 的开发和维护更多倾向于闭门的立场,很多 MySQL 的开发者和用户放弃了它.在社区驱动下,促使更多人移到 MySQL 的另一个叫 MariaD ...

  6. Pivotal开源基于PostgreSQL的数据库Greenplum

    http://www.infoq.com/cn/news/2015/11/PostgreSQL-Pivotal 近日,Pivotal宣布开源大规模并行处理(MPP)数据库Greenplum,其架构是针 ...

  7. 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析

    对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...

  8. 将数据从MySQL迁移到Oracle的注意事项

    将数据从MySQL迁移到Oracle的注意事项1.自动增长的数据类型处理MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动 ...

  9. Linux 上从 MySQL 迁移到 MariaDB 的简单步骤

    大家好!这是一篇介绍如何在服务器或个人电脑上从MySQL迁移到MariaDB的教程.也许你会问为什么我们要将数据库管理从MySQL迁移到MariaDB.往下看我们告诉你为什么这样做.为什么要用Mari ...

随机推荐

  1. PHP与ECMAScript_4_常用数学相关函数

    PHP ECMAScript 向上取整 ceil($number) Math.ceil( number ) 向下取整 floor($number) Math.floor( number ) 绝对值 a ...

  2. oracle查询截至到当前日期月份所在年份的所有月份

    SELECT to_number(TO_CHAR(add_months(trunc(sysdate, 'yy'), ROWNUM - 1), 'MM')) as month FROM DUALCONN ...

  3. linuk挂载命令

    1 Linuk挂在命令如下(将一个目录下面的东西挂在到另一个目录上面) mount -bind -o rw /data/vsftpd/原目录   /data/vsftpd/目标目录 2 查看所有的挂载 ...

  4. 【转】解决eclipse连接不到genymotion的问题

    (1)很多朋友在使用genymotion开发安卓应用程序的时候,会遇见完全正确的安装但是在运行的时候仍然找不到,genymotion上的设备,在打开的devices上找不到如下图所示: (2)解决的方 ...

  5. vue 移动端/PC常见问题及解决方法

    一.判断手机/PC浏览器语言 navigator.language // 返回语言代码 语言代码文档: http://www.lingoes.cn/zh/translator/langcode.htm ...

  6. Spring浅入浅出——不吹牛逼不装逼

    Spring浅入浅出——不吹牛逼不装逼 前言: 今天决定要开始总结框架了,虽然以前总结过两篇,但是思维是变化的,而且也没有什么规定说总结过的东西就不能再总结了,是吧.这次总结我命名为浅入浅出,主要在于 ...

  7. macOS 安装配置yaf框架 生成yaf项目

    macOS 安装配置yaf框架 Yaf只支持PHP5.2及以上的版本. 并支持最新的PHP5.3.3 Yaf需要SPL的支持. SPL在PHP5中是默认启用的扩展模块 Yaf需要PCRE的支持. PC ...

  8. Linux学习之自动配置部署——初用expect

    主机A连接主机B 免密登陆 + 自动部署 expect实现自动的交互式任务 ——— send 向进程发送字符串(输入) ——— expect 从进程接受字符串 ——— spawn 启动新进程 ——— ...

  9. Mybatis学习笔记之---环境搭建与入门

    Mybatis环境搭建与入门 (一)环境搭建 (1)第一步:创建maven工程并导入jar包 <dependencies> <dependency> <groupId&g ...

  10. 一文速览Vue全栈

    一文速览Vue全栈 原创: 新哥Lewis 天道酬勤Lewis 7月7日 Vue 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用,专注于声明式渲染视图 ...