MSK使用 Precission 中的 Connect 将VSAM文件迁移和复制到亚马逊RDS或亚马逊 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

MSK使用 Precission 中的 Connect 将VSAM文件迁移和复制到亚马逊RDS或亚马逊

由 Prachi Khanna (AWS) 和 Boo GOPALSAMY pathy () 创作 AWS

环境:PoC 或试点

来源:VSAM

目标:数据库

R 类型:重构

工作量:IBM

技术:大型机;现代化

AWS服务:亚马逊MSK;亚马逊RDS;AWS大型机现代化

Summary

此模式向您展示如何使用 C onnec t from Precission 将虚拟存储访问方法 (VSAM) 文件从大型机迁移和复制到AWS云中的目标环境。此模式中涵盖的目标环境包括亚马逊关系数据库服务(亚马逊RDS)和适用于 Apache Kafka 的亚马逊托管流媒体 Kafka(MSK亚马逊)。Connect 使用更改数据捕获 (CDC) 来持续监控源VSAM文件的更新,然后将这些更新传输到您的一个或多个AWS目标环境。您可使用这种模式来实现应用程序现代化或数据分析目标。例如,您可以使用 Connect 以低延迟将VSAM应用程序文件迁移到AWS云端,或者将VSAM数据迁移到AWS数据仓库或数据湖进行分析,这样可以容忍高于应用程序现代化所需的同步延迟。

先决条件和限制

先决条件

限制

  • Connect 不支持基于源VSAM架构或副本自动创建目标表。您必须首次定义目标表的结构。

  • 对于非流媒体目标(例如 Amazon)RDS,您必须在 Apply Engine 配置脚本中指定目标映射的转换源。

  • 记录、监控和警报功能通过外部组件(例如 Amazon)实现,APIs并且需要外部组件(例如 Amazon CloudWatch)才能完全运行。

产品版本

  • SQData40134 适用于 z/OS

  • SQData4.0.43 适用于亚马逊弹性计算云(亚马逊AMI)上的亚马逊 Linux 亚马逊机器映像 () EC2

架构

源技术堆栈

  • Job 控制语言 (JCL)

  • z/OS Unix 外壳和交互式系统生产力工具 () ISPF

  • VSAM公用事业 (IDCAMS)

目标技术堆栈

  • Amazon EC2

  • Amazon MSK

  • Amazon RDS

  • Amazon VPC

目标架构

将VSAM文件迁移到亚马逊 RDS

下图显示了如何使用源环境(本地大型机)中的CDC代理/发布者以及目标环境(云)中的应用引擎,将VSAM文件实时或近乎实时地迁移到关系数据库(例如 AmazonRDS)。AWS

Diagram showing data flow from on-premises mainframe to AWS Cloud, including VSAM files and Amazon RDS.

图表显示了以下批处理工作流:

  1. Connect 通过比较备份文件VSAM中的文件来识别更改,从而捕获对文件的更改,然后将更改发送到日志流。

  2. Publisher 使用系统日志流中的数据。

  3. 发布者通过 TCP /IP 将捕获的数据更改传达给目标引擎。 控制器守护程序对源环境和目标环境之间的通信进行身份验证。

  4. 目标环境中的 Apply Engine 从 Publisher 代理接收更改并将它们应用到关系或非关系数据库。

图表显示了以下在线工作流:

  1. Connect 使用日志副本捕获联机文件更改,然后将捕获的更改流式传输到日志流。

  2. Publisher 使用系统日志流中的数据。

  3. 发布者通过 TCP /IP 将捕获的数据更改传达给目标引擎。控制器进程守护程序对源环境和目标环境之间的通信进行身份验证。

  4. 目标环境中的 Apply Engine 从 Publisher 代理接收更改,然后将它们应用到关系或非关系数据库。

将VSAM文件迁移到亚马逊 MSK

下图显示了如何以高性能模式将VSAM数据结构从大型机流式传输到 AmazonMSK,以及如何自动生成JSON或AVRO架构与 Amazon MSK 集成的转换。

Diagram showing data flow between on-premises mainframe and AWS Cloud services.

图表显示了以下批处理工作流:

  1. Connect 通过使用 CICS VR 或比较备份VSAM文件中的文件来捕获文件更改以识别更改。捕获的更改将发送至日志流。

  2. Publisher 使用系统日志流中的数据。

  3. 发布者通过 TCP /IP 将捕获的数据更改传达给目标引擎。控制器进程守护程序对源环境和目标环境之间的通信进行身份验证。

  4. 在并行处理模式下运行的 Replicator Engine 将数据拆分为工作缓存单元。

  5. Worker 线程从缓存中捕获数据。

  6. 数据通过工作线程发布到 Amazon MSK 主题。

  7. 用户使用连接器将来自亚马逊的更改应用MSK到目标,例如亚马逊 DynamoDB、亚马逊简单存储服务 (Amazon S3) Service 或 OpenSearch 亚马逊服务。

图表显示了以下在线工作流:

  1. 在线文件中的更改是通过使用日志复制来捕获的。捕获的更改将传输到日志流。

  2. Publisher 使用系统日志流中的数据。

  3. 发布者通过 TCP /IP 将捕获的数据更改传达给目标引擎。控制器进程守护程序对源环境和目标环境之间的通信进行身份验证。

  4. 在并行处理模式下运行的 Replicator Engine 将数据拆分为工作缓存单元。

  5. Worker 线程从缓存中捕获数据。

  6. 数据通过工作线程发布到 Amazon MSK 主题。

  7. 用户使用连接器将来自亚马逊MSK的更改应用于 DynamoDB、Amazon S3 OpenSearch 或服务等目标。

工具

操作说明

任务描述所需技能

安装 Connect CDC 4.1。

  1. 请联系 Precission Support 团队获取许可证和安装包。

  2. 使用示例JCLs安装 Connect CDC 4.1。有关说明,请参阅 Precist 文档JCL中的使用安装 Connect CDC (SQData)

  3. 运行SETPROG APF命令授权 Connect 加载库 SQDATA .v4nnn。 LOADLIB。

IBM大型机开发人员/管理员

设置 zFS 目录。

要设置 zfS 目录,请按照 Preclist 文档中 zfS 变量目录中的说明进行操作。

注意:Controller Daemon 和 Capture/Publisher 代理配置存储在 z/OS S UNIX ystems Services 文件系统(称为 zFS)中。控制器进程守护程序、Capture、Storage 和 Publisher 代理需要预定义 zFS 目录结构以存储少量文件。

IBM大型机开发人员/管理员

配置 TCP /IP 端口。

要配置 TCP /IP 端口,请按照 Preclist 文档中 TCP/IP 端口中的说明进行操作。

注意:控制器守护程序需要源系统上TCP的 /IP 端口。这些端口由目标系统上的引擎引用(在那里处理捕获的更改数据)。

IBM大型机开发人员/管理员

创建 z/OS 日志流。

要创建 z/OS 日志流,请按照 Precist 文档中创建 z/OS 系统logStreams中的说明进行操作。

注意:Connect 使用日志流在迁移期间在源环境和目标环境之间捕获和流式传输数据。

有关创建 z/OS JCL 的示例 LogStream,请参阅 Precist 文档logStreams中的创建 z/OS 系统

IBM大型机开发人员

IDs为 ZFS 用户和已启动的任务进行识别和授权。

用于授RACF予对 OMVS zFS 文件系统的访问权限。有关示例JCL,请参阅 Precist 文档IDs中的识别和授权 zfS 用户并启动任务

IBM大型机开发人员/管理员

生成 z/OS 公有密钥/私有密钥以及授权密钥文件。

运行JCL生成密钥对。有关示例,请参阅此模式的其他信息部分中的密钥对示例

有关说明,请参阅 Precisely 文档中的生成 z/OS 公有密钥和私有密钥以及授权密钥文件

IBM大型机开发人员/管理员

激活CICSVSAM日志复制并将其附加到日志流。

运行以下JCL脚本:

//STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * ALTER SQDATA.CICS.FILEA - LOGSTREAMID(SQDATA.VSAMCDC.LOG1) - LOGREPLICATE
IBM大型机开发人员/管理员

通过激活VSAM文件恢复日志FCT。

修改文件控制表 (FCT) 以反映以下参数更改:

Configure FCT Parms CEDA ALT FILE(name) GROUP(groupname) DSNAME(data set name) RECOVERY(NONE|BACKOUTONLY|ALL) FWDRECOVLOG(NO|1–99) BACKUPTYPE(STATIC|DYNAMIC) RECOVERY PARAMETERS RECOVery : None | Backoutonly | All Fwdrecovlog : No | 1-99 BAckuptype : Static | Dynamic
IBM大型机开发人员/管理员

为发布商代理CDCzLog进行设置。

  1. 创建CDCzLog发布者CAB文件。

  2. 加密已发布数据。

  3. 准备CDCzLog发布器运行时JCL。

IBM大型机开发人员/管理员

激活控制器进程守护程序。

  1. 打开ISPF面板并运行以下命令以打开 “精确” 菜单:EXEC 'SQDATA.V4nnnnn.ISPFLIB(SQDC$STA)' 'SQDATA.V4nnnnn'

  2. 要设置控制器进程守护程序,请从菜单中选择选项 2。

IBM大型机开发人员/管理员

激活 Publisher。

  1. 打开ISPF面板并运行以下命令以打开 “精确” 菜单:EXEC 'SQDATA.V4nnnnn.ISPFLIB(SQDC$STA)' 'SQDATA.V4nnnnn'

  2. 要设置 Publisher,请从菜单中选择选项 3,然后选择 I 插入。

IBM大型机开发人员/管理员

激活日志流。

  1. 打开ISPF面板并运行以下命令以打开 “精确” 菜单:EXEC 'SQDATA.V4nnnnn.ISPFLIB(SQDC$STA)' 'SQDATA.V4nnnnn'

  2. 要设置日志流,请从菜单中选择选项 4,选择 I 插入。然后,输入前述步骤中创建的日志流名称。

IBM大型机开发人员/管理员
任务描述所需技能

精确地安装在EC2实例上。

要在AMI适用于亚马逊的亚马逊 Linux 上安装 Precission 的 ConnectEC2,请按照 Precist 文档中安装Connect CDC (SQData) UNIX 中的说明进行操作。

将军 AWS

打开 TCP /IP 端口。

要修改安全组以包含用于入站和出站访问的 Controller Daemon 端口,请按照 Precist 文档中 TCP/IP 中的说明进行操作。

将军 AWS

创建文件目录。

要创建文件目录,请按照 Precisely 文档中的准备目标应用环境中的说明进行操作。

将军 AWS

创建 Aply Engine 配置文件。

在 Apply Engine 的工作目录中创建 Apply Engine 配置文件。以下示例配置文件显示 Apache Kafka 作为目标:

builtin.features=SASL_SCRAM security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-512 sasl.username= sasl.password= metadata.broker.list=

注意:有关更多信息,请参阅 Apache Kafka 文档中的安全性

将军 AWS

为 Apply Engine 处理创建脚本。

为 Apply Engine 创建脚本以处理源数据并将源数据复制到目标。有关更多信息,请参阅 Precisely 文档中的创建应用引擎脚本

将军 AWS

运行脚本。

使用 SQDPARSESQDENG 命令运行脚本。有关更多信息,请参阅 Precisely 文档中的解析 zOS 脚本

将军 AWS
任务描述所需技能

验证要CDC处理VSAM的文件和目标表的列表。

  1. 验证VSAM文件,包括复制日志、恢复日志、FCT参数和日志流。

  2. 验证目标数据库表,包括是否根据所需架构定义、表访问和其他条件创建表。

常规AWS,大型机

验证 Connect CDC SQData 产品是否已链接。

运行测试作业并验证此作业的返回码是否为 0(成功)。

注意:Connect A CDC SQData pply Engine 状态消息应显示活动连接消息。

常规AWS,大型机
任务描述所需技能

在大型机中运行批处理作业。

使用修改过的运行批处理应用程序作业JCL。在修改JCL后包含执行以下操作的步骤:

  1. 备份数据文件。

  2. 将备份文件与修改后的数据文件进行比较,生成增量文件,然后记下消息中的增量记录计数。

  3. 将增量文件推送至 z/OS 日志流。

  4. 运行JCL. 有关示例JCL,请参阅 Precissial 文档JCL中的准备文件比较捕获

常规AWS,大型机

检查日志流。

检查日志流,确认您可看到已完成的大型机批处理作业的更改数据。

常规AWS,大型机

验证源增量更改和目标表的计数。

要确认记录已计数,请执行以下操作:

  1. 从批处理JCL消息中收集源增量计数。

  2. 监视 Apply Engine 以了解VSAM文件中插入、更新或删除的记录数量的记录级别计数。

  3. 在目标表查询记录数。

  4. 比较并统计所有不同记录数。

常规AWS,大型机
任务描述所需技能

在某个CICS地区运行在线交易。

  1. 运行在线事务,以验证测试用例。

  2. 验证事务执行代码(RC=0 - 成功)。

IBM大型机开发人员

检查日志流。

确认日志流中填充了特定记录级别更改。

AWS大型机开发人员

验证目标数据库计数。

监视 Apply Engine 以获取记录级别计数。

Precisely、Linux

验证目标数据库中的记录计数与数据记录。

查询目标数据库以验证记录计数与数据记录。

将军 AWS

相关资源

其他信息

配置文件示例

这是日志流的示例配置文件,其中源环境是大型机,目标环境是 Amazon:MSK

-- JOBNAME -- PASS THE SUBSCRIBER NAME -- REPORT  progress report will be produced after "n" (number) of Source records processed. JOBNAME VSMTOKFK; --REPORT EVERY 100; -- Change Op has been ‘I’ for insert, ‘D’ for delete , and ‘R’ for Replace. For RDS it is 'U' for update -- Character Encoding on z/OS is Code Page 1047, on Linux and UNIX it is Code Page 819 and on Windows, Code Page 1252 OPTIONS CDCOP('I', 'U', 'D'), PSEUDO NULL = NO, USE AVRO COMPATIBLE NAMES, APPLICATION ENCODING SCHEME = 1208; --       SOURCE DESCRIPTIONS BEGIN GROUP VSAM_SRC; DESCRIPTION COBOL ../copybk/ACCOUNT AS account_file; END GROUP; --       TARGET DESCRIPTIONS BEGIN GROUP VSAM_TGT; DESCRIPTION COBOL ../copybk/ACCOUNT AS account_file; END GROUP; --       SOURCE DATASTORE (IP & Publisher name) DATASTORE cdc://10.81.148.4:2626/vsmcdct/VSMTOKFK OF VSAMCDC AS CDCIN DESCRIBED BY GROUP VSAM_SRC ACCEPT ALL; --       TARGET DATASTORE(s) - Kafka and topic name DATASTORE 'kafka:///MSKTutorialTopic/key' OF JSON AS CDCOUT DESCRIBED BY GROUP VSAM_TGT FOR INSERT; --       MAIN SECTION PROCESS INTO CDCOUT SELECT { SETURL(CDCOUT, 'kafka:///MSKTutorialTopic/key') REMAP(CDCIN, account_file, GET_RAW_RECORD(CDCIN, AFTER), GET_RAW_RECORD(CDCIN, BEFORE)) REPLICATE(CDCOUT, account_file) } FROM CDCIN;

密钥对示例

以下是如何运行生成密钥对的示例:JCL

//SQDUTIL EXEC PGM=SQDUTIL //SQDPUBL DD DSN=&USER..NACL.PUBLIC, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=21200), // DISP=(,CATLG,DELETE),UNIT=SYSDA, // SPACE=(TRK,(1,1)) //SQDPKEY DD DSN=&USER..NACL.PRIVATE, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=21200), // DISP=(,CATLG,DELETE),UNIT=SYSDA, // SPACE=(TRK,(1,1)) //SQDPARMS DD keygen //SYSPRINT DD SYSOUT= //SYSOUT DD SYSOUT=* //SQDLOG DD SYSOUT=* //*SQDLOG8 DD DUMMY