最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

如何在不停机的情况下将大型数据仓库从 IBM Netezza 迁移到 Amazon Redshift 中(二)

  • 2020-01-02
  • 本文字数:3009 字

    阅读完需:约 10 分钟

如何在不停机的情况下将大型数据仓库从 IBM Netezza 迁移到 Amazon Redshift 中(二)

运行迁移

完整的数据迁移

最初的数据迁移是该项目的第一个里程碑。此阶段的主要要求包括:(1) 尽量减少对数据源的影响;以及 (2) 尽快传输数据。为执行此操作,AWS 提供了多个选项,具体取决于数据库大小、网络性能(AWS Direct ConnectAWS Snowball),迁移是否为异构型(AWS Database Migration ServiceAWS Schema Conversion Tool)。


在此异构迁移中,客户使用了 AWS Schema Conversion Tool (SCT)。SCT 使它们能够运行数据迁移,从而在 IBM Netezza 安装所在的相同数据中心预置多个虚拟机,每个虚拟机运行一个 AWS SCT Data Extractor 代理。这些数据提取器是指与源数据库直接连接且批量迁移数据到目标数据库的 Java 进程。

调整数据提取代理的大小

要估计迁移所需的数据提取器代理数量,请考虑此经验法则:源上每 1 TB 压缩数据一个数据提取器代理。另一项建议是在各个计算机上安装提取代理。


对于每个代理,请考虑下面的硬件一般要求:


col 1col 2col 3
CPU4要在数据迁移期间处理的大量转换和大量数据包
RAM16数据块在转储到磁盘之前保留在内存中。
磁盘100 GB / ~500 IOPS中间结果存储在磁盘上。
网络至少 1 Gbit(建议 10 Gbit)预置资源时,建议减少从源到 AWS SCT 数据提取代理的网络跃点数。


请遵照本文档以完成数据提取代理的安装步骤。


根据要迁移的数据大小和网络速度,您还可以在 EC2 上运行数据提取器代理。对于大型数据仓库,为了最大限度减少停机时间和优化数据传输,建议将数据提取器代理部署到尽可能靠近源的地方。例如,在此迁移项目中,本地数据中心中安装了 24 个单独的 SCT 提取器代理,以进行并发数据提取和加速过程。由于这些操作对数据源产生的压力,每个提取阶段都在周末和非工作时间运行。


下图描述了在数据迁移阶段部署的迁移架构:


创建数据提取任务

源表使用部署的 SCT 提取代理逐个表地并行迁移。这些提取代理使用数据源上的有效用户进行身份验证,以允许在提取期间调整该用户可用的资源。数据由 SCT 代理在本地处理,并且通过网络(通过 AWS Direct Connect)上传到 S3 中。请注意,其他迁移场景可能需要使用 AWS Snowball 设备。请查看 Snowball 文档以确定哪种传输方法更适合您的场景。


作为在计划迁移时执行的分析的一部分,客户标识出大型表,例如行数超过 2000 万或大小超过 1TB 的表。为了从这些表中提取数据,他们在 AWS SCT 上使用虚拟分区功能,以创建多个子任务和并行化此表的数据提取过程。我们建议为迁移的每个架构创建两组任务;一个用于小型表,另一个用于使用虚拟分区的大型表。


这些任务可以在运行前定义和创建,因此,迁移窗口的一切已准备就绪。访问以下文档以创建、运行和监控 AWS SCT 数据提取任务

技术验证

当最初提取的数据加载到 Amazon Redshift 后,立即使用迁移中所涉及的合作伙伴团队开发的验证脚本来并行执行数据验证测试。此阶段的目标在于验证生产工作负载,以将来自相同输入的 IBM Netezza 和 Amazon Redshift 输出进行比较。


此阶段涵盖的典型活动如下:


  • 每个表上的对象和行计数。

  • 比较迁移的所有表在 IBM Netezza 和 Amazon Redshift 中的相同随机数据子集,以逐行验证该数据完全相同。

  • 检查不正确的列编码。

  • 识别不均匀的表数据。

  • 标注没有从排序键中受益的查询。

  • 识别不恰当的连接笛卡尔积。

  • 处理包含大型 VARCHAR 列的表。

  • 确认连接目标环境时进程没有崩溃。

  • 验证每日批作业运行(作业持续时间、处理的行数)。


您将发现执行 Amazon Redshift 前十大性能优化技术中的大多数活动的适当技术。

数据同步

在此阶段,客户再次迁移了在技术验证阶段中与源失去同步的表和架构。通过使用“第一次完整数据迁移”部分中描述的相同机制,在生成数据集市的 ETL 进程已在未来系统上运行时,数据将在此同步阶段后保持更新。

业务验证

成功执行第二次数据迁移并对数据移动进行技术验证后,剩下的最后一项任务是让数据仓库用户参与到最终验证中。来自公司不同业务部门的这些用户使用各种工具和方法访问数据仓库:JDBC/ODBC 客户端、Python 代码、PL/SQL 程序、自定义应用程序等。 在执行最终切换_之前_确保每位最终用户都验证并调整了自己的流程,以便与 Amazon Redshift 无缝协作,这是迁移的核心。


此阶段大约需要三个月,由以下几项任务组成:


  • 调整业务用户的工具、应用程序和脚本,以连接到 Amazon Redshift 终端节点。

  • 修改用户的数据加载和转储程序,将通过 ODBC / JDBC 从分区存储中来回移动数据替换为在 S3 中来回进行的 COPY / UNLOAD 操作。

  • 修改任何不兼容的查询,将 Amazon Redshift PostgreSQL 实施细微差别纳入考虑中。

  • 针对 IBM Netezza 和 Amazon Redshift 运行业务流程,并比较结果和执行时间,确保将任何问题或意外结果告知负责迁移的团队,以便可以详细分析此案例。

  • 优化查询性能,将表排序键考虑在内并广泛利用 EXPLAIN 命令,以了解 Amazon Redshift 是如何计划和执行查询的。


要让所有最终用户保持一致并为最终切换做好准备,此业务验证阶段是关键。遵照 Amazon Redshift 最佳实践可使最终用户利用其新数据仓库的功能。

软切换

执行完所有的迁移和验证任务后,每个 ETL、业务流程、外部系统和用户工具均已成功连接,并针对 Amazon Redshift 进行了测试。


此时,可以将每个流程与旧版数据仓库断开连接,然后可以安全地关闭和弃用旧版数据仓库。

小结

在此博文中,我们描述了成功地将大规模数据仓库从本地 IBM Netezza 迁移到 Amazon Redshift 的时所采取的步骤。这些步骤可以外推到任何其他源数据仓库。


虽然本文描述了纯粹的直接迁移,但这只是向全能的企业数据湖转型过程的开端。为了充分利用 AWS 提供的强大分析工具和服务,还需要采取一系列后续步骤:


  • 在交互式查询队列中激活 Amazon Redshift 的并发扩展功能,以使集群可以在高使用期间无缝扩展,无需为峰值容量预置集群。

  • 在 S3 中创建数据湖并卸载访问较少的数据,以将预热和经常被访问的数据保留在 Amazon Redshift 集群中以获得更高性能。

  • 利用 Amazon Redshift Spectrum,以便能够在业务需求需要时结合分析查询中的不常访问数据和常访问数据。

  • 使用 Amazon Athena,以便能够在不影响数据仓库性能的情况下查询不常访问的数据。


有几个要点值得指出,我们认为它们对于实现向 Amazon Redshift 的成功大规模迁移是关键:


  • 从 PoC 开始,以对 Amazon Redshift 集群进行准确的初始大小调整。

  • 创建详细的迁移计划,其中包括对每个受影响系统的明确程序。

  • 使最终用户与迁移过程完全保持一致,并确保在执行最终切换前对其所有过程进行验证。

  • 遵照 Amazon Redshift 最佳实践和方法来利用其全部功能和性能。

  • 从早期阶段开始,在整个过程中与 AWS 客户团队保持联系。他们是 AWS 专家、专业服务和合作伙伴的联络人,以便能够使迁移项目成功完成。


我们希望此博文对您有用。请尽管留言或提问。


作者介绍:


Guillermo Menendez Corral 是 Amazon Web Services 的解决方案架构师。他拥有超过 12 年的软件应用程序设计和构建经验,目前为 AWS 客户提供架构指导,重点关注领域是 Analytics 和 Machine Learning。


Arturo Bayo 是 Amazon Web Services 的一名大数据顾问。他在欧洲、中东和非洲 (EMEA) 的企业客户中推广数据导向型文化,为业务智能和数据湖项目提供专业指导,同时与 AWS 客户和合作伙伴合作以围绕数据和分析构建创新解决方案。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/how-to-migrate-from-ibm-netezza-to-amazon-redshift-with-no-downtime/


2020-01-02 14:41591

评论

发布
暂无评论
发现更多内容

“人类高质量数据”如何训练计算机视觉模型?

澳鹏Appen

计算机视觉

从 0 到 1 开发一个聊天通讯 服务 复盘总结分享

程序员海军

Vue 大前端 websocket 实时通讯 引航计划

三年开发经验,从抖音组离职后,一口气拿到15家公司Offer

Java架构师迁哥

垃圾弹窗广告,如何清除互联网世界的牛皮癣

石头IT视角

玩转anyRTC用户控制台

anyRTC开发者

音视频 WebRTC 语音通话 视频通话 用户后台

普通二本的辛酸Java面试之路,34岁Java程序员裸辞

Java 程序员 后端

每个程序员都必须掌握的8种数据结构,2021Java开发面试解答

Java 程序员 后端

每个程序员都必须掌握的8种数据结构,springmvc源码流程总结

Java 程序员 后端

没想到专科的我也能拿到年薪30W的offer,仅凭阿里这份JDK源码笔记

Java架构师迁哥

ShardingSphere 分片利器 AutoTable:为用户带来「管家式」分片配置体验

SphereEx

数据库 开源

Android音频API

轻口味

android 音视频 引航计划 9月日更

一期投资30亿!“中国—东盟星动云算力中心项目”将落地广西巴马

旺链科技

数字经济 产业区块链 一带一路

来一份全面的面试宝典练练手,6年老Java面经总结

Java 程序员 后端

Python——绑定与方法调用

在即

9月日更

图计算的应用

6979阿强

通过线路输入功能快速创建吉他谱

懒得勤快

DBA:介里有你没有用过的“CHUAN”新社区版本Redis6.0

华为云开发者联盟

redis 开源 多线程 Redis 6.0 华为云DCS

鲲鹏BoostKit虚拟化使能套件,让数据加密更安全

华为云开发者联盟

鲲鹏

主机监控用什么软件好?监控机制是怎样的?

行云管家

运维 IT运维 主机监控

来自阿里巴巴佛系Java程序员的指南,惊喜

Java 程序员 后端

作业八:设计消息队列存储消息数据的 MySQL 表格

燕燕 yen yen

#架构实战营

某大厂开发者对于Java多线程的总结,Java排序算法面试

Java 程序员 后端

译介:《电动滑板车的崛起》

姬翔

Apache ShenYu源码阅读系列-基于WebSocket的数据同步

子夜2104

Java 开源 网关 shenyu

【Vuex 源码学习】第三篇 - Vuex 中 State 状态的实现

Brave

源码 vuex 9月日更

【预告】网络研讨会|下一代汽车操作系统微内核seL4:seL4基金会主席谈物理系统安全工程实践

鉴释

自动驾驶 操作系统 微内核

普通二本的辛酸Java面试之路,Java程序员架构之路该如何继续学习

Java 程序员 后端

我用MRS-ClickHouse构建的用户画像系统,让老板拍手称赞

华为云开发者联盟

数据库 标签 用户画像 MRS ClickHouse 列式存储

在外包做开发3年,为了进大厂,耗时半年,整合出25W字Java全栈面试题,这就是我的决心

Java架构师迁哥

60w“跳”进腾讯!你知道我经历了什么吗?

Java架构师迁哥

闲鱼消息发展回顾

OpenIM

如何在不停机的情况下将大型数据仓库从 IBM Netezza 迁移到 Amazon Redshift 中(二)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章