本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将大规模 Db2 z/OS 数据以文件形式传输到 Amazon S3 CSV
由 Bruno Sahinoglu (AWS)、Ivan Schuster () 和 Abhijit Kshirsagar (AWS) 创作 AWS
摘要
在许多企业中,大型机仍然是一个记录系统,它包含大量数据,包括含有当前和历史业务交易记录的主数据实体。它通常是孤立的,不容易从同一企业中的分布式系统访问。随着云技术的出现和大数据的民主化,企业有兴趣利用隐藏在大型机数据中的见解来开发新的业务能力。
为了实现这一目标,企业希望将其大型机 Db2 数据开放到他们的 Amazon Web Services (AWS) 云环境。业务原因有几个,传输方法因案例而异。您可能更喜欢将应用程序直接连接到大型机,或者您可能更喜欢近乎实时地复制数据。如果用例是为数据仓库或数据湖提供数据,那么拥有 up-to-date副本就不再是一个问题,此模式中描述的过程可能就足够了,尤其是在您想避免任何第三方产品许可成本的情况下。另一个用例可能是迁移项目的大型机数据传输。在迁移场景中,执行功能等效性测试需要数据。本文中描述的方法是将 Db2 数据传输到AWS云环境的一种经济实惠的方法。
由于亚马逊简单存储服务 (Amazon S3) Simple S3 是AWS集成度最高的服务之一,因此您可以使用AWS其他服务(例如亚马逊 Athena、Lambda 函数AWS或亚马逊)直接从那里访问数据并收集见解。 QuickSight 您也可以使用 AWS Glue 或数据库迁移AWS服务 () 将数据加载到亚马逊 Aurora 或亚马逊 DynamoDB。AWS DMS考虑到这一目标,本文描述了如何在大型机上以文件ASCII格式卸载 Db2 数据,然后将CSV文件传输到 Amazon S3。
为此,开发了大型机脚本
先决条件和限制
先决条件
有权运行重构扩展执行器 () REXX 和脚本的 IBM z/OS 操作系统用户。JCL
访问 z/OS Unix 系统服务 (USS) 以生成SSH(安全外壳)私钥和公钥。
一个可写的 S3 存储桶。有关更多信息,请参阅 Amazon S3 文档中的创建第一个 S3 存储桶。
支持 Tran AWS sfer SSH Family 文件传输协议 (SFTP) 的服务器,使用托管服务作为身份提供者,将 Amazon S3 用作AWS存储服务。有关更多信息,请参阅 SFTPTransfer Family 文档中的创建启用了AWS功能的服务器。
限制
这种方法不适用于近实时或实时的数据同步。
只能将数据从 Db2 z/OS 移动到 Amazon S3,反之则不然。
架构
源技术堆栈
在 z/OS 上运行 Db2 的大型机
目标技术堆栈
AWS Transfer Family
Amazon S3
Amazon Athena
Amazon QuickSight
AWS Glue
亚马逊 Relational Database Service(亚马逊RDS)
Amazon Aurora
Amazon Redshift
源架构和目标架构
下图显示了生成、提取ASCIICSV格式的 Db2 z/OS 数据并将其传输到 S3 存储桶的过程。
从 Db2 目录中选择用于数据迁移的表列表。
该列表用于驱动具有外部格式的数字列和数据列的卸载作业的生成。
然后,使用 Transfer Family 将数据AWS传输到 Amazon S3。
AWSGlue 提取、转换和 load (ETL) 任务可以转换数据并将其以指定格式加载到已处理的存储桶中,或者 AWS Glue 可以将数据直接输入数据库。
Amazon Athena 和 A QuickSight mazon 可用于查询和呈现数据以推动分析。
下图是整个过程的逻辑流程。
第一个名为 JCLTABNAME,它将使用 Db2 实用程序提取DSNTIAUL并生成您计划从 Db2 卸载的表的列表。要选择表,必须手动调整SQL输入以选择并添加筛选条件以包含一个或多个 Db2 架构。
第二个名为 JCLREXXEXEC,将使用JCL骨架和提供的REXX程序来处理由创建的表列表JCLTABNAME并为JCL每个表名生成一个。每个步骤都包含一个卸载表的步骤和另一个使用SFTP协议JCL将文件发送到 S3 存储桶的步骤。
最后一步包括运行卸载表并将文件传输到。JCL AWS可以在本地或内部使用调度程序实现整个过程的自动化。AWS
工具
AWS 服务
Amazon Athena 是一项交互式查询服务,可帮助您使用标准直接分析亚马逊简单存储服务 (Amazon S3) 中的数据。SQL
Amazon Aurora 是一款完全托管的关系数据库引擎,专为云而构建,与 My SQL 和 Postgre SQL 兼容。
AWSGlu e 是一项完全托管的提取、转换和加载 (ETL) 服务。它可以帮助您在数据存储和数据流之间对数据进行可靠地分类、清理、扩充和移动。
Amazon QuickSight 是一项云规模的商业智能 (BI) 服务,可帮助您在单个控制面板中可视化、分析和报告数据。
Amazon Redshift 是一项托管的 PB 级云端数据仓库服务。AWS
Amazon Relational Database Service (AmazonRDS) 可帮助您在AWS云中设置、操作和扩展关系数据库。
Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
AWSTransfer F@@ amil y 是一项安全的传输服务,使您能够将文件传输到存储服务中或从AWS存储服务中传出。
大型机工具
SSH文件传输协议 (SFTP)
是一种安全的文件传输协议,允许远程登录服务器并在服务器之间传输文件。 SSH通过加密所有流量来提供安全性。 DSNTIAUL
是提供的IBM用于卸载数据的示例程序。 DSNUTILB
是提供的实用程序批处理程序IBM,用于卸载具有不同选项的数据DSNTIAUL。 z/OS Op SSH en
是在操作系统 z/OS 下的 Unix 系统服务上SSHIBM运行的开源软件端口。 SSH是在 TCP /IP 网络上运行的两台计算机之间的安全、加密的连接程序。它提供了多种实用程序,包括 ssh-keygen。 REXX(重构后的扩展执行器)
脚本用于通过 Db2 卸载和步骤自动JCL生成。SFTP
代码
此模式的代码可在 GitHub unloadd
最佳实践
对于第一次卸载,生成的JCLs应该卸载整个表数据。
第一次完全卸载后,执行增量卸载以提高性能并节省成本。更新模板中的SQL查询以适应对卸JCL载过程的任何更改。
您可以手动转换架构,也可以在 Lambda 上使用脚本将 Db2 SYSPUNCH 作为输入。对于工业流程,AWSSchema Conversion Tool (SCT) 是首选选项。
最后,使用基于大型机的调度程序或在大型机上安装代理AWS的调度程序来帮助管理和自动化整个过程。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
创建 S3 存储桶。 | 有关说明,请参阅创建第一个 S3 存储桶。 | 将军 AWS |
任务 | 描述 | 所需技能 |
---|---|---|
创建SFTP启用了的服务器。 | 要在 Transfer F amily AWS 控制台
| 将军 AWS |
为 Trans IAM fer Family 创建一个角色。 | 要为 Transfer Family 创建AWS身份和访问管理 (IAM) 角色以访问 Amazon S3,请按照创建IAM角色和策略中的说明进行操作。 | AWS 管理员 |
添加 Amazon S3 服务托管用户。 | 要添加 Amazon S3 服务托管用户,请按照AWS文档中的说明进行操作,并使用您的大型机用户 ID。 | 将军 AWS |
任务 | 描述 | 所需技能 |
---|---|---|
创建密SSH钥。 | 在您的大型机USS环境下,运行以下命令。
注意当提示输入密码时,请将其留空。 | 大型机开发人员 |
为SSH文件夹和密钥文件提供正确的授权级别。 | 默认情况下,公有密钥和私有密钥将存储在用户目录 您必须为密钥文件授权 644,对文件夹授权 700。
| 大型机开发人员 |
将公有密钥内容复制到 Amazon S3 服务托管用户。 | 要复制USS生成的公钥内容,请打开 Transfer F amil AWS y 控制台
| 大型机开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
生成范围内 Db2 表列表。 | 提供输入SQL以创建限定数据迁移范围的表的列表。此步骤要求您指定查询 Db2 目录表的选择标准。SYSIBM SYSTABLES使用 wher SQL e 子句。可以对过滤器进行自定义,使其包含以特定前缀开头或基于增量卸载的时间戳开头的特定架构或表名。输出是在大型机上的物理序列 (PS) 数据集中捕获的。该数据集将作为下一JCL生成阶段的输入。 在使用 JCLTABNAME(如有必要,可以对其进行重命名)之前,请进行以下更改:
Db2 表列表提取作业
| 大型机开发人员 |
修改JCL模板。 | 此模式提供的JCL模板包含通用作业卡和库名称。但是,对于数据集名称、库名称和作业卡,大多数大型机站点都有自己的命名标准。例如,可能需要特定的作业类才能运行 Db2 作业。Job Entry Subsystem 实现JES2并JES3可以施加其他更改。标准加载库的第一个限定符可能与IBM默认值不同。 在骨架中进行以下更改 JCLUNLDSKEL:
卸载和骨架 SFTP JCL
| 大型机开发人员 |
生成批量卸载JCL。 | 此步骤涉及使用在ISPF环境下运行REXX脚本JCL。提供在第一步中创建的范围内表的列表,作为对照 在中进行以下更改 JCLREXXEXEC(您可以更改名称):
大众JCL生成工作
在使用REXX脚本之前,请进行以下更改:
ZSTEPSREXX脚本
| 大型机开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
执行 Db2 卸载步骤。 | JCL生成后,将有JCLs尽可能多的表需要卸载。 这个故事使用生JCL成的示例来解释结构和最重要的步骤。 您无需执行任何操作。以下信息仅供参考。如果您打算提交在上JCLs一步中生成的内容,请跳至提交LODnnnnnJCLs任务。 使用JCL带有IBM提供的 Db2 实用程序卸载 DSNUTILB Db2 数据时,必须确保卸载的数据不包含压缩的数字数据。为此,请使用DSNUTILB 该 以下示例使用逗号字符作为分隔符,显示了生成的卸载步骤的JCL样子。
| 大型机开发人员、系统工程师 |
执行该SFTP步骤。 | 要使用来自的SFTP协议JCL,请使用该BPXBATCH实用程序。 该SFTP实用程序无法直接访问MVS数据集。你可以使用 copy 命令 ( 使用私钥 (
| 大型机开发人员、系统工程师 |
提交 LODnnnnnJCLs. | 之前的JCL版本生成了所有需要卸载、转换为 S3 存储桶并传输到 S3 存储桶的LODnnnnnJCL表。CSV 对所有已生成的内容运行JCLs该 | 大型机开发人员、系统工程师 |
相关资源
有关本文档中使用的不同工具和解决方案的更多信息,请参阅以下内容:
其他信息
在 Amazon S3 上获得 Db2 数据后,您可以通过多种方式获得新的见解。由于 Amazon S3 与AWS数据分析服务集成,因此您可以在分布式端自由使用或公开这些数据。例如,您可以执行以下操作:
在 Amazon S3 上构建数据湖
,无需移动数据 query-in-place,即可使用分析和机器学习工具提取宝贵的见解。 通过设置与 Trans fer Famil AWS y 集成的上传后处理工作流程来启动 Lambda 函数
。 使用 AWSG
lue 开发新的微服务,用于访问 Amazon S3 或完全托管数据库 中的数据。Glue 是一种无服务器数据集成服务,可轻松发现、准备和合并用于分析、机器学习和应用程序开发的数据。
在迁移用例中,由于您可以将任何数据从大型机传输到 S3,因此您可以执行以下操作:
停用物理基础设施,使用 Amazon S3 Glacier 和 S3 Glacier Deep Archive 创建经济实惠的数据存档策略。
使用 Amazon S3 和其他AWS服务(例如 S3 Glacier 和 Amazon Elastic File System (AmazonEFS))构建可扩展、耐用、安全的备份和还原解决方案,以增强或取代现有的本地功能。