首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自建Greenplum迁移到Snova云数仓

自建Greenplum迁移到Snova云数仓

原创
作者头像
lambgong
发布2019-02-27 11:44:21
9.6K1
发布2019-02-27 11:44:21
举报

Snova简介

Snova是腾讯云上的一款数仓产品,兼容Greenplum 开源数据仓库,是一种基于 MPP(大规模并行处理)架构的数仓服务。

由于Snova兼容Greenplum(以下简称GP),并且提供了很多开源GP不具备的特性和服务,因此建议自建GP用户将应用迁移到Snova,本文详细描述了自建GP用户迁移到Snova的过程和注意事项。

Snova相对自建GP的优势

  1. 快速搭建,只需控制台点击购买即可,无需关心GP搭建的过程,以及参数优化的细节。
  2. 免运维,您无需关心因机器故障等导致的复杂运维工作,只需要关注核心业务,让数据产生价值。
  3. 控制台,Snova为您提供了一个功能丰富的管理控制台,让您方便的管理和监控自己的集群。
  4. 更多特性,Snova在开源GP的基础上提供了更多的特性以方便用户使用,比如一键扩容,快照等。
  5. 云端数仓,Snova作为云数仓,与其它腾讯云产品紧密结合,方便用户组合使用多个腾讯云产品来搭建自己的数据平台,比如与COS(对象存储)和SCS(流计算)的结合使用。
  6. 技术支持,腾讯云将为Snova用户提供专业的技术支持。

迁移流程

第一步. 申请集群

首先根据自己的业务情况到申请页面选购对应的集群。

目前Snova支持2种类型的集群,具体可以参考计费概述,如果现有机型不满足需求,比如数据量特别大,也可以通过提交工单的方式描述自己的业务需求,Snova技术人员将会与您对接,尽可能满足您的业务需求。

第二步. 导出Schema

Role

role需要单独操作,并放在最前面,因为后面的schema会涉及到owner问题。所以需要在数据库中提前创建好对应的role。

查看原集群的role,可以通过如下:

select * from pg_roles

也可以通过pg_dumpall导出原集群的role信息,如下:

pg_dumpall --gp-syntax --schema-only -h {host} -p {port} -U {username} -f {filename}

其中导出的file内容里就有role相关信息,可以直接拷贝执行。

注意:由于安全考虑,Snova云数仓用户使用的最高权限用户就是创建集群的时候指定的管理账号,不能创建具有superuser权限的用户,因此原集群superuser用户将无法迁移过来。

Schema

首先需要手动在Snova创建目标数据库,语句如下:

CREATE DATABASE {databasename}

然后导出原数据库Schema,建议使用pg_dump工具,逐个数据库迁移,语句如下:

pg_dump --gp-syntax --schema-only -h {host} -p {port} -U {username} -f {filename}

最后在Snova数据库执行,语句如下:

psql -h {host} -U {username} -p {port} -f {filename}l -d {databasename}

第三步. 迁移数据

数据的迁移相对复杂一些,需要根据实际情况制定不同的策略:

  1. 首先需要考虑数据量,大于小处理的方式不同。
  2. 其次需要考虑现有业务系统是否能接受停服,以及能接受的停服时间。

这里数据迁移的一般原则如下:

  1. 对于数据量较大的表,比如数仓中的事实表,通常会是一张按时间分区的表,而分区表中时间较老的分区一般是不会变化的,基于这个前提,我们可以提前迁移这部分数据,并且由于不需要停服,因此迁移的时间比较宽松。
  2. 对于一些维度表,或者数据不变的表,可以整表提前迁移。
  3. 对于数据一直在变化的表,如果数据量较小,则在停服期间一次性迁移。如果数据量较大,则看表里数据是否有规律,比如有时间维度,则可以使用时间维度切分表数据,分批迁移。
  4. 对于数据一直在变化,并且无法切分的大表,可以联系您的客户经理,或者提交工单,Snova会有相关技术人员协助您完成迁移。

迁移工具:

上面讲到一些基本的迁移原则,下面会详细讲一下迁移数据用到的工具。

  1. pg_dump + pg_restore 这是GP自带的工具(PostgreSQL也有这个工具,不过有些区别),上面迁移schema的时候也有用到,具体语法如下: pg_dump --gp-syntax --data-only -Fc -h {host} -p {port} -U {username} -f {filename} {databasename} 以上命令会导出数据库数据到指定的文件,文件是私有格式,并且经过压缩,只能使用pg_restore进行还原,还原数据语法如下: pg_restore -h {host} -p {port} -U {username} -d {databasename} {filepath}
  2. 使用开源数据同步工具 使用同步工具可以不需要手动操作导出导入的过程。并且通常能够更好的监控和管理整个迁移的过程。 开源同步工具很多,这里推荐使用DataX,具体使用方式见Greenplum数据导入系列 -- (一)DataX
  3. 联系Snova技术人员进行支持 对于数据量非常大的场景或者用户有一些特殊需求无法满足的,可以通过您的客户经理,或者提交工单来获取支持。

第四步. 其它对象

如果原集群有使用到资源队列,可以通过Snova的控制台进行创建,具体可参见管理资源队列

如果原集群有配置pg_hba.conf文件来限制访问,可以通过Snova的控制台进行配置,具体参见管理 IP 白黑名单

第五步. 迁移业务

大多数情况,我们只需要修改业务访问的ip即可。但有些场景可能更为复杂,比如您使用了gpload和gpfdist来进行周期性的ETL工作。

对于使用gpload和gpfdist的用户可以考虑以下2种迁移方式:

  1. 将任务替换为从COS上进行导入,简单说来就是在ETL服务器上将数据上传到COS,然后通过COS外表将数据加载到Snova中,COS外表的使用方式可以参见导入外部数据。 该方法前期涉及到一定的修改量,但是目前Snova导入数据最快的一种方式。
  2. 继续使用gpload或者gpfdist任务,处于安全原因,用户自己的ETL服务器是无法与Snova集群的计算节点联通的,因此如果用户希望继续使用上述任务,需要联系您的客户经理,或者提交工单,Snova技术人员会协助处理网络问题,原任务只需要修改一下ip即可继续运行。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Snova简介
  • Snova相对自建GP的优势
  • 迁移流程
    • 第一步. 申请集群
      • 第二步. 导出Schema
        • Role
        • Schema
      • 第三步. 迁移数据
        • 第四步. 其它对象
          • 第五步. 迁移业务
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档