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数据库_mysql迁移mpp数据库Greenplum相关推荐

  1. mppdb 查看建表语句_mysql迁移mpp数据库Greenplum

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

  2. mysql 定期清理表数据_mysql 定期清理表数据库

    zabbix数据库备份整理 zabbix数据库备份整理 zabbix数据库备份整理 zabbix的所有操作都是存在数据库里,在数据库里都会有对应的表,所以对zabbix备份,只需备份数据库就行了. 采 ...

  3. mysql还原某个数据库_mysql还原某个数据库

    MySQL数据库备份和还原的常用命令 其实很多情况下mysql备份就是采用了这些命令,例如: mysql导入和导出数据 linux自动定时备份web程序和mysql数据库 备份MySQL数据库的命令 ...

  4. mysql 创建 utf8 的数据库_mysql创建utf8数据库

    CentOS6.5下通过Shell创建.备份.还原MySQL数据库 CentOS6.5下通过Shell创建.备份.还原MySQL数据库 创建数据库: mysql -uroot -p123456 -e ...

  5. mysql添加自团_Mysql入门基础 数据库创建篇

    1.创建数据表---基础(高手跳过) 正统方法:create [TEMPORARY] table 表名 [if not exists] (创建的列项定义) [表的选项] [分区的选项];#正统的创建方 ...

  6. mysql备份表恢复数据库_mysql备份恢复数据库据/表

    备份单个数据库,只备份表,如要恢复,必须先创建一个数据库 [root@s]# mysqldump -u root -p dbname1 > dbname1.sql [root@s]# mysql ...

  7. mysql配置主从数据库_mysql配置主从数据库

    1.目的 1.1 实现数据备份 1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度 2.背景 这次的主从配置主要实现主库数据的改变可以实现同步到从库中: 此次试验的主库为liunx 下mys ...

  8. 阿里云 mysql自动备份数据库_MySQL定时备份数据库(全库备份)

    一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...

  9. 如何用mysql创建股票数据库_mysql如何创建数据库

    数据库可以看作是一个专门存储数据对象的容器,这里的数据对象包括表.视图.触发器.存储过程等,其中表是最基本的数据对象.在 MySQL 数据库中创建数据对象之前,先要创建好数据库. 推荐课程:MySQL ...

最新文章

  1. 宇宙飞行器的几种飞行原理设计
  2. 从一生的角度看程序员的学习和发展
  3. 奇安信为什么大量招人_券商招人鄙视链:985学历vs美本学历,究竟谁垫底?
  4. 公平锁的lock()方法走读
  5. 工作140:封装写法
  6. 解决: Failed to execute ... maven-deploy-plugin... Return code is: 401, ReasonPhrase: Unauthorized.
  7. 为什么python工程师掌握这些就够了_Python工程师薪资飙升,Python这些技能你掌握了吗...
  8. java违反唯一约束异常_Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868)...
  9. [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 【二】
  10. python 中的运算符重载
  11. [非原创] 获取CPUID;
  12. 软件设计与体系结构实验——图书馆管理系统
  13. 一、Photoshop新版本(2019以后)常用快捷键总结、归纳
  14. BIOS修改mbr为gpt的步骤
  15. html里获得农历时间,获取阴历(农历)和当前日期的js代码_javascript技巧
  16. 10月最新720全景云系统,可生成小程序+带PC端+安装教程
  17. 校招——2021多益网络软件开发笔试和面试
  18. 怎样快速实现两台电脑硬盘文件共享?
  19. 新手应该如何学习SEO优化
  20. AirDroid免root操作步骤

热门文章

  1. Centos7中已有java1.8,再安装java1.4
  2. Java Bean详解
  3. linux4.9编译内核,centos6编译linux-4.9内核启用bbr
  4. 【西安电子科技大学】CSDN高校俱乐部第一次讲座——微信后台开发
  5. js中搜索栏中的搜索图标(以及其他各种图标)怎么写?Fontawesome
  6. bootstrap 幻灯片的实现
  7. 华硕拆机之后解决无法进入windows7但能进入linux系统的办法
  8. 用CSS实现类似信纸一样的虚线
  9. 无线路由器-功放和LNA
  10. oracle的exists用法总结