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. fuel 9.0完全离线配置+升级fule 9.1+bootstrap制作

    2017-08-23 fuel 完全离线配置 完全离线适用于部署在内网,无Internet的环境当中,且需要升级fuel版本的情况.理论上,我的办法适用所有版本. 以下所有操作全部在fuel节点上. ...

  2. Shell基本语法---shell的变量以及常见符号

    变量 1.  不同于其它语言需要先声明变量 2 .等号的两边不能有空格 3. 调用变量: $a 或者 ${a} a=; echo $a; echo ${a} 变量 变量意思 $? 判断上一条命令执行的 ...

  3. CMD开放3389端口

    REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t R ...

  4. 整理用Java实现数字转化成字符串左边自动补零方法

    Java 中给数字左边补0 (1)方法一 import java.text.NumberFormat; public class NumberFormatTest { public static vo ...

  5. 数字麦克风PDM信号采集与STM32 I2S接口应用

    数字麦克风采用MEMS技术,将声波信号转换为数字采样信号,由单芯片实现采样量化编码,一般而言数字麦克风的输出有PDM麦克风和PCM麦克风,由于PDM麦克风结构.工艺简单而大量应用,在使用中要注意这二者 ...

  6. spring学习笔记之---bean管理

    bean管理(xml) (一)spring的工厂类 FileSystemXmlApplicationContext 读取磁盘配置文件 (二)bean实例化的三种方式 (1)使用类构造器实例化(默认无参 ...

  7. Qt实现表格树控件-自绘树节点虚线

    目录 一.开心一刻 二.自绘树节点? 三.效果展示 四.实现思路 1.可扩展接口 2.函数重写 3.同步左侧表头 五.相关文章 原文链接:Qt实现表格树控件-自绘树节点虚线 一.开心一刻 一程序员第一 ...

  8. Flink+Druid构建实时OLAP的探索

    场景 k12在线教育公司的业务场景中,有一些业务场景需要实时统计和分析,如分析在线上课老师数量.学生数量,实时销售额,课堂崩溃率等,需要实时反应上课的质量问题,以便于对整个公司的业务情况有大致的了解. ...

  9. Hadoop单机、伪分布式、分布式集群搭建

    JDK安装 设置hostname [root@bigdata111 ~]# vi /etc/hostname 设置机器hosts [root@bigdata111 ~]# vi /etc/hosts ...

  10. vue+element搭建后台管理界面(支持table条件搜索)

    代码地址(如果有帮助,请点个Star) vue:https://github.com/wwt729/ElementUIAdmin-master.git springboot后端:https://git ...