使用 Precission Connect 将大型机数据库复制到AWS其中 - AWS Prescriptive Guidance

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

使用 Precission Connect 将大型机数据库复制到AWS其中

由 Lucio Pereira (AWS)、Balaji Mohan () 和 Sayantan Giri (AWS) 创作 AWS

环境:生产

来源:本地大型机

目标:AWS数据库

R 类型:重构

工作负载:所有其他工作负载

技术:数据库;大型机 CloudNative;现代化

AWS服务:亚马逊 DynamoDB;亚马逊 Keyspaces;亚马逊;MSK亚马逊;亚马逊 RDS ElastiCache

Summary

此模式概述了使用 Precission Connect 近乎实时地将数据从大型机数据库复制到 Amazon 数据存储的步骤。它通过适用于 Apache Kafka 的 Amazon Managed Streaming(MSK亚马逊)和云中的自定义数据库连接器实现了基于事件的架构,以提高可扩展性、弹性和性能。

Precisely Connect 是一种复制工具,可从遗留大型机系统捕获数据并将其集成到云环境中。AWS通过使用具有低延迟和高吞吐量的异构数据管道的近乎实时的消息流,将数据从大型机复制到变更数据捕获 (CDC)。 

该模式还涵盖了具有多区域数据复制和失效转移路由功能的弹性数据管道的灾难恢复策略。

先决条件和限制

先决条件

架构

源技术堆栈

至少包含以下数据库之一的大型机环境:

  • IBMIMS数据库

  • IBMDB2数据库

  • VSAM文件

目标技术堆栈

  • 亚马逊 MSK

  • 亚马逊 Elastic Kubernetes Service(亚马逊)和 Amazon Anywhere EKS EKS

  • Docker

  • AWS关系数据库或 “无” SQL 数据库,如下所示:

    • Amazon DynamoDB

    • 适用于 Oracle 的亚马逊关系数据库服务(亚马逊RDS)、适用于 Postg SQL re RDS 的亚马逊或亚马逊 Aurora

    • ElastiCache 适用于 Redis 的亚马逊

    • Amazon Keyspaces(Apache Cassandra 兼容)

目标架构

将大型机数据复制到数据库 AWS

下图说明了将大型机数据复制到 DynamoDB、Amazon、Amazon 或 A RDS mazon Keyspaces 等AWS数据库 ElastiCache的情况。通过在本地大型机环境中使用 Precist Capture 和 Publisher,在本地分布式环境中使用 Amazon EKS Anywhere 上的 Precist Dispatcher,在云中使用 Precist Apply Engine 和数据库连接器,在云中使用 Precist AWS 

将大型机数据复制到数据库 AWS

图表显示了以下工作流:

  1. Precist Capture 从CDC日志中获取大型机数据,并将这些数据保存在内部瞬态存储器中。

  2. Publisher 精确地监听内部数据存储的变化,并通过 TCP /IP 连接将CDC记录发送到 Precist Dispatcher。

  3. 确切地说,Dispatcher 从出版商那里接收CDC记录并将其发送到亚马逊MSK。调度程序根据用户配置和多个工作任务创建 Kafka 键以并行推送数据。记录存储在亚马逊后,调度员会向出版商发送确认信息。MSK

  4. 亚马逊将CDC记录MSK保存在云环境中。主题的分区大小取决于您的事务处理系统 (TPS) 对吞吐量的要求。Kafka 密钥对于进一步的转换和事务排序是必需的。

  5. Precissily Apply Engine 监听来自亚马逊的CDC记录,MSK并根据目标数据库要求转换数据(例如,通过筛选或映射)。您可以将自定义逻辑添加到 Preclisy SQD 脚本中。(SQD是 Precist 的专有语言。) Precissily Apply Engine 将每CDC条记录转换为 Apache Avro 或JSON格式,然后根据你的要求将其分发到不同的主题。

  6. 目标 Kafka 主题根据目标数据库保存多个主题的CDC记录,而 Kafka 便于根据定义的 Kafka 密钥进行事务排序。分区键与相应的分区对齐以支持顺序过程。 

  7. 数据库连接器(自定义 Java 应用程序)监听来自 Amazon 的CDC记录MSK并将其存储在目标数据库中。

  8. 可根据您的要求选择目标数据库。此模式同时支持 “否” SQL 和关系数据库。

灾难恢复

业务连续性是组织成功的关键。AWS云提供高可用性 (HA) 和灾难恢复 (DR) 功能,并支持贵组织的故障转移和备用计划。此模式遵循主动/被动灾难恢复策略,为实施符合您RTO和RPO要求的灾难恢复策略提供了高级指导。

下图说明了 DR 的工作流。

用于在上复制大型机数据的灾难恢复工作流程 AWS

此图显示以下内容:

  1. 如果AWS区域 1 中发生任何故障,则需要半自动故障转移。如果区域 1 出现故障,系统必须启动路由更改,才能将 Precisly Dispatcher 连接至区域 2。 

  2. Amazon 通过区域间镜像来MSK复制数据,因此,在故障转移期间,必须将区域 2 中的 Amazon MSK 集群提升为主要领导者。 

  3. Precisely Apply Engine 和数据库连接器是无状态应用程序,可以在任何区域中工作。 

  4. 数据库同步取决于目标数据库。例如,DynamoDB 可以使用全局表,也可以使用全局数据 ElastiCache 存储。

通过数据库连接器执行低延迟和高吞吐量处理

数据库连接器是此模式中的关键组件。连接器采用基于侦听器的方法从 Amazon 收集数据,MSK并通过任务关键型应用程序(第 0 层和第 1 层)的高吞吐量和低延迟处理将事务发送到数据库。下图阐明了此过程。

使用数据库连接器在上复制大型机数据 AWS

该模式支持通过多线程处理引擎开发具有单线程消耗的定制应用程序。

  1. 连接器主线程使用来自 Amazon 的CDC记录MSK并将其发送到线程池进行处理。

  2. 线程池中的线程处理CDC记录并将其发送到目标数据库。

  3. 如果所有线程都很忙,则线程队列会保留CDC记录。

  4. 主线程等待从线程队列中清除所有记录,并将偏移量提交到 Amazon。MSK

  5. 子线程处理故障。如果在处理过程中发生故障,则失败的消息将发送到DLQ(死信队列)主题。

  6. 子线程根据大型机时间戳启动条件更新(参见 DynamoDB 文档中的条件表达式),以避免数据库中出现任何重复 out-of-order或更新。

有关如何实现具有多线程功能的 Kafka 消费者应用程序的信息,请参阅 Confluent 网站上的博客文章 Apache Kafka 消费者使用多线程消息消费

工具

AWS服务

其他工具

  • Precission Connect 将来自传统大型机系统(例如VSAM数据集或IBM大型机数据库)的数据集成到下一代云和数据平台中。

最佳实践

  • 找到 Kafka 分区和多线程连接器的最佳组合,从而平衡最佳性能和成本。由于消耗量更高MIPS(每秒百万条指令),多个 Precissy Capture 和 Dispatcher 实例可能会增加成本。

  • 避免向数据库连接器添加数据操作和转换逻辑。为此,请使用 Precisely Apply Engine,它提供以微秒为单位的处理时间。

  • 在数据库连接器中创建对数据库的定期请求或运行状况检查调用(检测信号),以频繁预热连接并减少延迟。

  • 实现线程池验证逻辑,以了解线程队列中的待处理任务,并在下一次 Kafka 轮询之前等待所有线程完成。这有助于避免节点、容器或进程崩溃时数据丢失。

  • 通过运行状况端点公开延迟指标,通过控制面板和跟踪机制增强可观测性。

操作说明

任务描述所需技能

设置大型机进程(批处理或联机实用程序),以从大型机数据库启动该CDC进程。

  1. 确定大型机环境。

  2. 确定CDC流程中将涉及的主机数据库。

  3. 在大型机环境中,开发一个启动该CDC工具的流程,以捕获源数据库中的更改。有关说明,请参阅大型机文档。

  4. 记录CDC流程,包括配置。

  5. 在测试和生产环境部署该过程。 

大型机工程师

激活大型机数据库日志流。

  1. 在大型机环境中配置日志流以捕获CDC日志。有关说明,请参阅大型机文档。

  2. 测试日志流以确保捕获了必要的数据。

  3. 在测试和生产环境部署日志流。

大型机数据库专家

使用捕获组件来捕获CDC记录。

  1. 在大型机环境中安装与配置 Precision Capture 组件。有关说明,请参阅 Precisely 文档

  2. 测试配置以确保 Capture 组件正常运行。

  3. 设置复制过程以通过 Capture 组件复制捕获的CDC记录。

  4. 记录每个源数据库的捕获配置。

  5. 开发监控系统以确保 Capture 组件随着时间的推移正确收集日志。

  6. 在测试和生产环境中部署安装与配置。

大型机工程师,精确连接 SME

配置 Publisher 组件以侦听 Capture 组件。

  1. 在大型机环境中安装并配置 Precisely Publisher 组件。有关说明,请参阅 Precisely 文档

  2. 测试配置以确保 Publisher 组件正常工作。

  3. 设置复制流程,将CDC记录从 Publisher 发布到 Precist Dispatcher 组件。

  4. 记录 Publisher 配置。

  5. 开发一个监控系统以确保 Publisher 组件随着时间的推移正常工作。

  6. 在测试和生产环境中部署安装与配置。

大型机工程师,精确连接 SME

在本地分布式环境中配置 Amazon EKS Anywhere。

  1. 在本地基础设施上安装 Amazon EKS Anywhere,并确保其配置正确。有关说明,请参阅 Amazon EKS Anywhere 文档。

  2. 为 Kubernetes 集群设置安全的网络环境,包括防火墙。

  3. 实施并测试部署到 Amazon EKS Anywhere 集群的示例应用程序。

  4. 实现集群的自动伸缩功能。

  5. 制定并实施备份和灾难恢复程序。 

DevOps 工程师

在分布式环境中部署和配置 Dispatcher 组件,以便在AWS云端发布主题。

  1. 配置和容器化 Precisely Dispatcher 组件。有关说明,请参阅 Precisely 文档

  2. 将 Dispatcher Docker 镜像部署到本地 Amazon EKS Anywhere 环境中。

  3. 在AWS云端和调度程序之间建立安全连接。

  4. 开发监控系统以确保 Dispatcher 组件随着时间的推移正常工作。

  5. 在测试和生产环境中部署安装与配置。 

DevOps 工程师,精确连接 SME
任务描述所需技能

在指定AWS区域配置一个 Amazon EKS 集群。

  1. 登录您的AWS账户并对其进行配置,确保拥有创建和管理 Amazon EKS 集群所需的权限。

  2. 在所选AWS区域创建虚拟私有云 (VPC) 和子网。有关说明,请参阅 Amazon EKS 文档

  3. 创建并配置必要的网络安全组,以允许 Amazon EKS 集群与中的其他资源进行通信VPC。有关更多信息,请参阅 Amazon EKS 文档

  4. 创建 Amazon EKS 集群并使用正确的节点组大小和实例类型对其进行配置。

  5. 通过部署示例应用程序来验证 Amazon EKS 集群。

DevOps 工程师、网络管理员

配置集MSK群并配置适用的 Kafka 主题。

  1. 配置您的AWS账户,确保拥有创建和管理MSK集群所需的权限。

  2. 创建和配置必要的网络安全组,以允许MSK集群与中的其他资源进行通信VPC。有关更多信息,请参阅 Amazon VPC 文档

  3. 创建集MSK群并将其配置为包含应用程序将使用的 Kafka 主题。有关更多信息,请参阅 Amazon MSK 文档

DevOps 工程师、网络管理员

配置 Apply Engine 组件,以侦听复制的 Kafka 主题。

  1. 配置和容器化 Precisely Apply Engine 组件

  2. 将 Apply Engine Docker 镜像部署到您AWS账户中的亚马逊EKS集群中。

  3. 设置应用引擎以收听MSK主题。

  4. 在 Apply Engine 中开发和配置SQD脚本来处理筛选和转换。有关更多信息,请参阅 Precisely 文档

  5. 在测试与生产环境中部署应用引擎。

精确连接 SME

在AWS云中配置数据库实例。

  1. 配置您的AWS账户,确保拥有创建和管理数据库集群和表所需的权限。有关说明,请参阅要使用的AWS数据库服务的AWS文档。(有关链接,请参阅资源部分。)

  2. 在所选AWS区域中创建VPC和子网。

  3. 创建和配置必要的网络安全组,以允许数据库实例与中的其他资源进行通信VPC。

  4. 创建数据库,并将其配置为包含应用程序将使用的表。

  5. 设计和验证数据库架构。 

数据工程师、 DevOps 工程师

配置和部署数据库连接器以侦听 Apply Engine 发布的主题。

  1. 设计数据库连接器,将 Kafka 主题与您在前面步骤中创建的AWS数据库连接起来。

  2. 根据目标数据库开发连接器。

  3. 配置连接器以侦听 Apply Engine 发布的 Kafka 主题。

  4. 将连接器部署到 Amazon EKS 集群中。

应用程序开发人员、云架构师、数据工程师
任务描述所需技能

为您的业务应用程序定义灾难恢复目标。

  1. 根据您的业务需求RPO和影响分析,为CDC管道定义和RTO目标。

  2. 定义沟通和通知程序,以确保所有利益相关者都了解灾难恢复计划。

  3. 确定实施灾难恢复计划所需预算以及资源。

  4. 记录灾难恢复目标,包括RPO和RTO目标。

云架构师、数据工程师、应用程序所有者

根据定义的 RTO /设计灾难恢复策略RPO。

  1. 根据您的关键程度和恢复要求,确定最适合CDC管道的灾难恢复策略。

  2. 定义灾难恢复架构和拓扑。

  3. 定义CDC管道的故障转移和故障恢复程序,以确保它们可以快速、无缝地切换到备份区域。

  4. 记录灾难恢复策略和程序,并确保所有利益相关者对设计有清晰的了解。

云架构师、数据工程师

配置灾难恢复集群和配置。

  1. 为灾难恢复配置辅助AWS区域。

  2. 在辅助AWS区域中,创建与主AWS区域相同的环境。

  3. 在主区域和辅助区域 MirrorMaker 之间配置 Apache Kafka。有关更多信息,请参阅 Amazon MSK 文档

  4. 在辅助区域中配置备用应用程序。

  5. 配置主区域和辅助区域之间的数据库复制。

DevOps 工程师、网络管理员、云架构师

测试灾难恢复CDC管道。

  1. 定义CDC管道灾难恢复测试的范围和目标,包括RTO要实现的测试场景。

  2. 确定用于进行灾难恢复测试的测试环境和基础设施。

  3. 准备测试数据集和脚本来模拟故障场景。

  4. 验证数据的完整性和一致性,确保数据不丢失。

应用程序所有者、数据工程师、云架构师

相关资源

AWS资源

Precisely Connect 资源

Confluent 资源