mysql是mpp数据库_mysql迁移mpp数据库Greenplum
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相关推荐
- mppdb 查看建表语句_mysql迁移mpp数据库Greenplum
1. 场景描述 因兄弟项目中mysql有点扛不住了,要做sql优化,但是业务有点小复杂,优化起来有点麻烦(sql嵌套有点多),便想着用Mpp数据库Greenplum测试下,看性能和复杂度怎么样,趟趟水 ...
- mysql 定期清理表数据_mysql 定期清理表数据库
zabbix数据库备份整理 zabbix数据库备份整理 zabbix数据库备份整理 zabbix的所有操作都是存在数据库里,在数据库里都会有对应的表,所以对zabbix备份,只需备份数据库就行了. 采 ...
- mysql还原某个数据库_mysql还原某个数据库
MySQL数据库备份和还原的常用命令 其实很多情况下mysql备份就是采用了这些命令,例如: mysql导入和导出数据 linux自动定时备份web程序和mysql数据库 备份MySQL数据库的命令 ...
- mysql 创建 utf8 的数据库_mysql创建utf8数据库
CentOS6.5下通过Shell创建.备份.还原MySQL数据库 CentOS6.5下通过Shell创建.备份.还原MySQL数据库 创建数据库: mysql -uroot -p123456 -e ...
- mysql添加自团_Mysql入门基础 数据库创建篇
1.创建数据表---基础(高手跳过) 正统方法:create [TEMPORARY] table 表名 [if not exists] (创建的列项定义) [表的选项] [分区的选项];#正统的创建方 ...
- mysql备份表恢复数据库_mysql备份恢复数据库据/表
备份单个数据库,只备份表,如要恢复,必须先创建一个数据库 [root@s]# mysqldump -u root -p dbname1 > dbname1.sql [root@s]# mysql ...
- mysql配置主从数据库_mysql配置主从数据库
1.目的 1.1 实现数据备份 1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度 2.背景 这次的主从配置主要实现主库数据的改变可以实现同步到从库中: 此次试验的主库为liunx 下mys ...
- 阿里云 mysql自动备份数据库_MySQL定时备份数据库(全库备份)
一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...
- 如何用mysql创建股票数据库_mysql如何创建数据库
数据库可以看作是一个专门存储数据对象的容器,这里的数据对象包括表.视图.触发器.存储过程等,其中表是最基本的数据对象.在 MySQL 数据库中创建数据对象之前,先要创建好数据库. 推荐课程:MySQL ...
最新文章
- 宇宙飞行器的几种飞行原理设计
- 从一生的角度看程序员的学习和发展
- 奇安信为什么大量招人_券商招人鄙视链:985学历vs美本学历,究竟谁垫底?
- 公平锁的lock()方法走读
- 工作140:封装写法
- 解决: Failed to execute ... maven-deploy-plugin... Return code is: 401, ReasonPhrase: Unauthorized.
- 为什么python工程师掌握这些就够了_Python工程师薪资飙升,Python这些技能你掌握了吗...
- java违反唯一约束异常_Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868)...
- [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 【二】
- python 中的运算符重载
- [非原创] 获取CPUID;
- 软件设计与体系结构实验——图书馆管理系统
- 一、Photoshop新版本(2019以后)常用快捷键总结、归纳
- BIOS修改mbr为gpt的步骤
- html里获得农历时间,获取阴历(农历)和当前日期的js代码_javascript技巧
- 10月最新720全景云系统,可生成小程序+带PC端+安装教程
- 校招——2021多益网络软件开发笔试和面试
- 怎样快速实现两台电脑硬盘文件共享?
- 新手应该如何学习SEO优化
- AirDroid免root操作步骤