使用 Connect from Precisely 将 VSAM 文件迁移和复制到 Amazon RDS 或 Amazon MSK
Prachi Khanna 和 Boopathy GOPALSAMY,Amazon Web Services
摘要
此模式向您展示了如何使用 Connect
先决条件和限制
先决条件
IBM z/OS V2R1
或更高版本 CICS Transaction Server for z/OS (CICS TS) V5.1
或更高版本(CICS/VSAM 数据捕获) IBM MQ 8.0
或更高版本 符合 z/OS 安全要求
(例如:SQData 加载库的 APF 授权) VSAM 恢复日志已开启
(可选)CICS VSAM Recovery Version (CICS VR)
用于自动捕获 CDC 日志 一个有效的 Amazon Web Services account
具有可由您的旧平台访问的子网的 Amazon 虚拟私有云(VPC)
来自 Precisely 的 VSAM Connect 许可证
限制
Connect 不支持基于源 VSAM 架构或副本自动创建目标表。您必须首次定义目标表的结构。
对于非流媒体目标(例如 Amazon RDS),您必须在 Apply Engine 配置脚本中指定目标映射的转换源。
日志记录、监控和警报功能通过 API 实现,需要外部组件(例如 Amazon CloudWatch)才能完全运行。
产品版本
SQData 40134 for z/OS
适用于 Amazon Elastic Compute Cloud (Amazon EC2) 上 Amazon Linux 亚马逊机器映像(AMI)的 SQData 4.0.43
架构
源技术堆栈
作业控制语言 (JCL)
z/OS Unix Shell 和 Interactive System Productivity Facility (ISPF)
VSAM 实用程序 (IDCAMS)
目标技术堆栈
Amazon EC2
Amazon MSK
Amazon RDS
Amazon VPC
目标架构
将 VSAM 文件迁移到 Amazon RDS
下图显示了如何通过在源环境(本地大型机)中使用 CDC 代理/Publisher,在目标环境 (AWS Cloud) 中使用 Apply Engine

图表显示了以下批处理工作流:
Connect 通过比较备份文件中的 VSAM 文件来捕获文件更改以识别更改,然后将更改发送到日志流。
Publisher 使用系统日志流中的数据。
Publisher 通过 TCP/IP 将捕获的数据更改传达至目标引擎。控制器进程守护程序对源环境和目标环境之间的通信进行身份验证。
目标环境中的 Apply Engine 从 Publisher 代理接收更改并将它们应用到关系或非关系数据库。
图表显示了以下在线工作流:
Connect 使用日志副本捕获联机文件更改,然后将捕获的更改流式传输到日志流。
Publisher 使用系统日志流中的数据。
Publisher 通过 TCP/IP 将捕获的数据更改传达至目标引擎。控制器进程守护程序对源环境和目标环境之间的通信进行身份验证。
目标环境中的 Apply Engine 从 Publisher 代理接收更改,然后将它们应用到关系或非关系数据库。
将 VSAM 文件迁移到 Amazon MSK
下图显示了如何在高性能模式下将 VSAM 数据结构从大型机流式传输到 Amazon MSK,并自动生成与 Amazon MSK 集成的 JSON 或 AVRO 架构转换。

图表显示了以下批处理工作流:
Connect 通过使用 CICS VR 或通过比较备份文件中的 VSAM 文件,以捕获和识别文件更改。捕获的更改将发送至日志流。
Publisher 使用系统日志流中的数据。
Publisher 通过 TCP/IP 将捕获的数据更改传达至目标引擎。控制器进程守护程序对源环境和目标环境之间的通信进行身份验证。
在并行处理模式下运行的 Replicator Engine 将数据拆分为工作缓存单元。
Worker 线程从缓存中捕获数据。
数据从 Worker 线程发布到 Amazon MSK 主题。
用户使用连接器将 Amazon MSK 的更改应用到 Amazon DynamoDB、Amazon Simple Storage Service (Amazon S3) 或 Amazon OpenSearch Service 等目标。
图表显示了以下在线工作流:
在线文件中的更改是通过使用日志复制来捕获的。捕获的更改将传输到日志流。
Publisher 使用系统日志流中的数据。
Publisher 通过 TCP/IP 将捕获的数据更改传达至目标引擎。控制器进程守护程序对源环境和目标环境之间的通信进行身份验证。
在并行处理模式下运行的 Replicator Engine 将数据拆分为工作缓存单元。
Worker 线程从缓存中捕获数据。
数据从 Worker 线程发布到 Amazon MSK 主题。
用户通过使用连接器将 Amazon MSK 的更改应用到 DynamoDB、Amazon S3 或 OpenSearch Service 等目标。
工具
Amazon Managed Streaming for Apache Kafka (Amazon MSK) 是一项完全托管式服务,可帮助您构建并运行使用 Apache Kafka 来处理流数据的应用程序。
Amazon Relational Database Service (Amazon RDS) 可帮助您在 Amazon Web Services Cloud 中设置、操作和扩展关系数据库。
操作说明
| 任务 | 描述 | 所需技能 |
|---|---|---|
安装 Connect CDC 4.1。 |
| IBM 大型机开发人员/管理员 |
设置 zFS 目录。 | 要设置 zfS 目录,请按照 Preclist 文档中 zfS 变量目录 注意控制器进程守护程序和 Capture/Publisher 代理配置存储在 z/OS UNIX Systems Services(称为 zFS)中。控制器进程守护程序、Capture、Storage 和 Publisher 代理需要预定义 zFS 目录结构以存储少量文件。 | IBM 大型机开发人员/管理员 |
配置 TCP/IP 端口。 | 要配置 TCP/IP 端口,请按照 Precisely 文档中的 TCP/IP 端口 注意控制器进程守护程序需要源系统上的 TCP/IP 端口。这些端口由目标系统上的引擎引用(在那里处理捕获的更改数据)。 | IBM 大型机开发人员/管理员 |
创建 z/OS 日志流。 | 要创建 z/OS 日志流 注意Connect 使用日志流在迁移期间在源环境和目标环境之间捕获和流式传输数据。 有关创建 z/OS 日志流 JCL 示例,请参阅 Precisely 文档中的创建 z/OS 系统日志流 | IBM 大型机开发人员 |
识别和授权 zFS 用户和已启动任务的 ID。 | 使用 RACF 授予对 OMVS zFS 文件系统的访问权限。有关示例 JCL,请参阅 Precisely 文档中的识别和授权 zFS 用户和已启动任务的 ID | IBM 大型机开发人员/管理员 |
生成 z/OS 公有密钥/私有密钥以及授权密钥文件。 | 运行 JCL,以生成密钥对。有关示例,请参阅此模式的其他信息部分中的密钥对示例。 有关说明,请参阅 Precisely 文档中的生成 z/OS 公有密钥和私有密钥以及授权密钥文件 | IBM 大型机开发人员/管理员 |
激活 CICS VSAM 日志复制并将其附加至日志流。 | 运行以下 JCL 脚本:
| IBM 大型机开发人员/管理员 |
通过 FCT 激活 VSAM File Recovery 日志。 | 修改 File Control Table (FCT) 以反映以下参数更改:
| IBM 大型机开发人员/管理员 |
为 Publisher 代理设置 CDCzLog。 |
| IBM 大型机开发人员/管理员 |
激活控制器进程守护程序。 |
| IBM 大型机开发人员/管理员 |
激活 Publisher。 |
| IBM 大型机开发人员/管理员 |
激活日志流。 |
| IBM 大型机开发人员/管理员 |
| 任务 | 描述 | 所需技能 |
|---|---|---|
在 EC2 实例上安装 Precisely。 | 要在 Amazon Linux AMI for Amazon EC2 上安装 Connect from Precisely,请按照 Precisely 文档中的在 UNIX 上安装 Connect CDC (SQData) | 常规 AWS |
打开 TCP/IP 端口。 | 要修改安全组以包含用于入站和出站访问的控制器进程守护程序端口,请按照 Precisely 文档中的 TCP/IP | 常规 AWS |
创建文件目录。 | 要创建文件目录,请按照 Precisely 文档中的准备目标应用环境 | 常规 AWS |
创建 Aply Engine 配置文件。 | 在 Apply Engine 的工作目录中创建 Apply Engine 配置文件。以下示例配置文件显示 Apache Kafka 作为目标:
注意有关更多信息,请参阅 Apache Kafka 文档中的安全性 | 常规 AWS |
为 Apply Engine 处理创建脚本。 | 为 Apply Engine 创建脚本以处理源数据并将源数据复制到目标。有关更多信息,请参阅 Precisely 文档中的创建应用引擎脚本 | 常规 AWS |
运行脚本。 | 使用 | 常规 AWS |
| 任务 | 描述 | 所需技能 |
|---|---|---|
验证用于 CDC 处理的 VSAM 文件与目标列表。 |
| 常规 AWS、大型机 |
验证 Connect CDC SQData 产品是否已链接。 | 运行测试作业并验证此作业的返回码是否为 0(成功)。 注意Connect CDC SQData Apply Engine 状态消息应显示活动连接消息。 | 常规 AWS、大型机 |
| 任务 | 描述 | 所需技能 |
|---|---|---|
在大型机中运行批处理作业。 | 使用修改后的 JCL 运行批处理应用程序作业。在修改后的 JCL 中包括以下操作步骤:
| 常规 AWS、大型机 |
检查日志流。 | 检查日志流,确认您可看到已完成的大型机批处理作业的更改数据。 | 常规 AWS、大型机 |
验证源增量更改和目标表的计数。 | 要确认记录已计数,请执行以下操作:
| 常规 AWS、大型机 |
| 任务 | 描述 | 所需技能 |
|---|---|---|
在 CICS 区域运行在线事务。 |
| IBM 大型机开发人员 |
检查日志流。 | 确认日志流中填充了特定记录级别更改。 | AWS 大型机开发人员 |
验证目标数据库计数。 | 监视 Apply Engine 以获取记录级别计数。 | Precisely、Linux |
验证目标数据库中的记录计数与数据记录。 | 查询目标数据库以验证记录计数与数据记录。 | 常规 AWS |
相关资源
VSAM z/OS
(Precisely 文档) Apply Engine
(Precisely 文档) 复制器引擎
(Precisely 文档) 日志流
(IBM 文档)
其他信息
配置文件示例
以下日志流的示例配置文件,其中源环境为大型机,目标环境是 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