mysql迁移mpp数据库Greenplum

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

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秒就能导入完成;三是,新建外部表的时候,跟原表稍微有点差异,也的注意下。
原文地址https://www.cnblogs.com/ruanjianlaowang/p/11451891.html

相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
6天前
|
SQL 关系型数据库 MySQL
TiDB亿级数据亚秒响应查询将MySql数据全量迁移到TiDB
TiDB亿级数据亚秒响应查询将MySql数据全量迁移到TiDB
11 0
|
18天前
|
SQL 关系型数据库 MySQL
flask中生成迁移脚本并将orm模型映射至MySQL
flask中生成迁移脚本并将orm模型映射至MySQL
|
22天前
|
NoSQL 关系型数据库 MySQL
MySQL篇(三)MySQL数据实时增量迁移方案
MySQL数据实时增量迁移方案。
32 0
|
24天前
|
数据采集 运维 关系型数据库
1小时迁移500GB 的MySQL数据
NineData 提供的数据复制同时包含了数据迁移和数据同步的能力,在不影响业务的前提下,提供了高效、稳定、可运维的大数据量迁移能力。经实测,在源及目标实例同城情况下,500GB的MySQL数据的迁移,只需 1 个小时,平均迁移速度 142MB/s。
124 0
1小时迁移500GB 的MySQL数据
|
1月前
|
存储 运维 容灾
使用NineData实现亿级别MySQL大表迁移
NineData提供了高效、稳定的MySQL大表迁移能力,解决了传统迁移方案的问题。通过智能分片、行级并发和动态攒批等核心技术,NineData保证了迁移性能。同时,NineData具备完善的容灾能力,提高了大表迁移的成功率。通过数据和结构的对比功能,保障了数据的一致性。使用NineData进行迁移任务的配置简单快捷,只需一分钟即可完成。NineData还提供了丰富的检查项和观测、干预能力,帮助用户追踪迁移进展并处理异常情况。
540 0
使用NineData实现亿级别MySQL大表迁移
|
2月前
|
SQL 关系型数据库 MySQL
【迁移】Mysql数据库备份 迁移
备份数据,新建库,导入数据,恢复备份
19 0
【迁移】Mysql数据库备份 迁移
|
2月前
|
数据可视化 关系型数据库 MySQL
将 PostgreSQL 迁移到 MySQL 数据库
将 PostgreSQL 迁移到 MySQL 数据库
283 2
|
4月前
|
Oracle 关系型数据库 MySQL
迁移MariaDB审计插件(Audit Plugin)到MySQL 5.7---发表到爱可生开源社区
Oracle的MySQL社区版本不带审计插件(Audit Plugin),要想使用审计功能,你可以用Enterprise的版本,不过这需要银子。业界还有一些GPL协议的审计插件,这里我们选择MariaDB的审计插件。
|
4月前
|
关系型数据库 MySQL
迁移mysql的data目录
通过apt-get或yum安装的mysql的目录通常的位置不时候存放大量的数据,我们很多时候需要把mysql的数据文件放在另外一个目录下,这个时候需要整体迁移,步骤如下:
|
4月前
|
存储 SQL 运维
MySQL 迁移到 OceanBase 数据库
MySQL 迁移到 OceanBase 数据库
296 0
推荐文章
更多