将 Redis 工作负载迁移至 Redis Enterprise Cloud on AWS - AWS Prescriptive Guidance

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

将 Redis 工作负载迁移至 Redis Enterprise Cloud on AWS

由 Antony Prasad Thevaraj(AWS) 和 Srinivas Pendyala(Redis) 编写

环境:生产

来源:本地(Redis 或其他)数据库

目标:Redis Enterprise Cloud on AWS

R 类型:更换平台

工作负载:开源

技术:迁移;数据库

Amazon Web Services:AWS DMS;Amazon S3

Summary

此模式介绍了在 Amazon Web Services (AWS) 上将 Redis 工作负载迁移至 Redis Enterprise Cloud 的高级流程。它描述了迁移步骤,提供了有关可用工具选择的信息,并介绍了使用每种工具的优缺点和步骤。或者,如果您在从 Redis 迁移工作负载时需要其他帮助,可使用 Redis 专业服务。

如果您在本地运行 Redis OSS 或 Redis Enterprise Software,您就能熟悉在数据中心维护 Redis 数据库所带来的巨大管理开销和操作复杂性。通过将工作负载迁移到云端,您可显著减轻运营负担,并充分利用 Redis Enterprise Cloud,这是一款完全托管的数据库即服务 (数据库管理员aS) 产品。这种迁移有助于提高业务灵活性、提高应用程序可靠性并降低总体成本,同时您可访问最新的 Redis Enterprise Cloud on AWS 功能,例如 99.999% 的可用性、架构简洁性和可扩展性。

Redis Enterprise Cloud 在金融服务、零售、医疗保健和游戏领域以及需要欺诈检测、实时库存、索赔处理和会话管理解决方案的用例中都有潜在应用。您可使用 Redis Enterprise Cloud 连接到您的 AWS 资源,例如,连接到在Amazon Elastic Compute Cloud (Amazon EC2)实例上运行的应用程序服务器,或者连接到部署为 AWS Lambda 服务的微服务。

先决条件和限制

假设

  • 您当前正在操作要迁移至云端的本地数据库系统。

  • 您已经确定了工作负载迁移要求,包括:

    • 数据一致性要求。

    • 基础设施和系统环境要求

    • 数据映射与转换要求

    • 功能测试要求

    • 性能测试要求

    • 验证要求

    • 定义的割接策略

  • 您已经评测迁移所需的时间表和成本估算。

  • 您的要求会考虑工作范围以及确定为迁移一部分的系统和数据库。

  • 您已经在负责任、负责、咨询、知情 (RACI) 矩阵中确定了利益相关者及其角色和责任。

  • 您已获得所有利益相关者的必要同意与批准。

成本

根据现有源数据库的技术规格(例如内存大小、吞吐量和总数据大小),Redis 解决方案架构师可以在 Redis Enterprise Cloud 上调整目标系统的大小。 有关一般定价信息,请参阅 Redis 网站上的 Redis 定价

人员与技能

迁移过程涉及以下角色与职责。

角色

描述

所需技能

迁移解决方案架构师

在定义、规划和实施迁移策略方面具有专长的技术架构师

对源系统和目标系统的技术和应用程序级理解;具有将工作负载迁移至云端的经验

数据架构师

技术架构师,在为各种数据库定义、实施和提供数据解决方案方面拥有丰富的经验

结构化和非结构化数据建模,在为企业实施数据库方面有深刻的理解和经验

Redis 解决方案架构师

技术架构师,可以根据适当的用例帮助架构大小最优的 Redis 集群

在为各种用例设计和部署 Redis 解决方案方面有专长

云解决方案架构师

对云解决方案 (尤其是 AWS 上的解决方案) 有更深入了解的技术架构师

云解决方案架构方面的专长;工作负载迁移和应用程序现代化经验

企业架构师

技术架构师,对组织的技术格局有全面的了解,对未来的路线图有共同的愿景,并且在组织中的所有团队中实践和建立标准化架构最佳实践

软件架构认证,如 TOGAF、基础软件工程技能、解决方案架构和企业架构专长

IT 或 DevOps 工程师

负责创建和维护基础设施的工程师,职责包括监控基础设施是否存在问题、执行维护任务以及根据需要进行更新。

对各种技术有深刻了解,包括操作系统、网络和云计算;熟悉 Python、Bash 和 Ruby 等编程语言以及 Docker、Kubernetes 和 Ansible 等工具

架构

迁移选项  

下图显示了将您的本地 (基于 Redis 或其他) 数据来源迁移至 AWS 的选项。它显示了几种可供选择的迁移工具,例如使用 Redis 复制功能或使用 AWS DMS,将 Redis 数据库 (RDB) 文件导出到 Amazon Simple Storage Service (Amazon S3)。

将本地数据来源迁移至 Redis Enterprise Cloud on AWS 的选项
  1. 本地数据来源:不基于 Redis 数据库,例如 MySQL、PostgreSQL、Oracle、SQL Server 或 MariaDB。 

  2. 本地数据来源:基于 Redis 协议数据库,例如 Redis OSS 和 Redis 企业软件。

  3. 从基于 Redis 的数据库迁移数据的最简单方法是导出 RDB 文件、并将其导入 AWS 上的目标 Redis Enterprise Cloud。

  4. 或者,您可使用 Redis 中的复制功能 (ReplicaOf) 将数据从源迁移到目标。

  5. 如果您的数据迁移要求包含数据转换,则可使用 Redis Input/Output Tools (RIOT) 迁移数据。

  6. 或者,您还可使用 AWS Data Migration Service (AWS DMS) 从基于 SQL 的数据库中迁移数据。 

  7. 您必须使用 AWS DMS 的虚拟私有云(VPC)对等连接才能将数据成功迁移到 AWS 上的目标 Redis Enterprise Cloud中。

目标架构

下图显示了 Redis Enterprise Cloud on AWS 的典型部署架构,并说明了如何将其用于关键 Amazon Web Services。

在 AWS 上部署 Redis Enterprise Cloud 的架构,并与 Amazon Web Services 配合使用
  1. 您可在 AWS 上连接由 Redis Enterprise Cloud 支持的业务应用程序。

  2. 您可在自己的 Amazon Web Services account 中运行业务应用程序,也可以在该账户的 VPC 中运行业务应用程序。

  3. 您可使用 Redis Enterprise Cloud 数据库端点连接到您的应用程序。示例包括:在 EC2 实例上运行的应用程序服务器、部署为 AWS Lambda 服务的微服务、Amazon Elastic Container Service (Amazon ECS) 应用程序或 Amazon Elastic Kubernetes Service (Amazon EKS)。

  4. 在您的 VPC 运行业务应用程序需要与 Redis Enterprise Cloud VPC 建立 VPC 对等连接。这使业务应用程序能够通过私有端点安全连接。

  5. Redis Enterprise Cloud on AWS 是一个内存中 NoSQL 数据库平台,作为 数据库管理员aS 部署在 AWS 上,完全由 Redis 管理。

  6. Redis Enterprise Cloud 部署在 VPC 内的 Redis 创建的标准 Amazon Web Services account 中。

  7. 出于安全考虑,Redis Enterprise Cloud 部署至私有子网中,私有和公有端点均可访问该子网。我们建议您将客户端应用程序连接到私有端点上的 Redis。如果您计划使用公共端点,我们强烈建议您启用 TLS 来加密您的客户端应用程序和 Redis Enterprise Cloud 之间的数据。

Redis 迁移方法与 AWS 迁移方法一致,AWS Prescriptive Guidance 网站上的 动员您的组织以加快大规模迁移对此进行了说明。

自动化和扩展

迁移的环境设置任务可以通过 AWS 登录区和基础设施即代码(IaC)模板自动完成,以实现自动化和扩展。这些将在此模式的操作说明部分中介绍。

工具

根据您的数据迁移要求,可从一系列技术选项中进行选择,将您的数据迁移至 Redis Enterprise Cloud on AWS。下表对这些工具进行了描述和比较。

工具

描述

优点

劣势

RDB 导出导入

您可以 RDB 文件的形式从源 (例如 Redis OSS 或 Redis Enterprise Software) 数据库中导出数据。如果您的数据库是通过 Redis OSS 集群提供,则可以将每个主分片导出到 RDB。

然后,您可一步导入所有 RDB 文件。如果您的源数据库基于 OSS 集群,但目标数据库未使用 OSS 集群 API,则必须更改应用程序源代码,以使用标准 Redis 客户端库。

数据转换要求或逻辑数据库合并需要更复杂的过程,本表后面的逻辑数据库合并部分对此进行说明。

  • 简便。

  • 适用于任何可以 RDB 格式导出数据作为源的基于 Redis 的解决方案(包括 Redis OSS 和 Redis Enterprise Software)。

  • 通过简单流程实现数据一致性。

  • 不满足数据转换要求或者不支持逻辑数据库合并。

  • 对于较大数据集非常耗时。

  • 不支持 delta 迁移,可能会导致更长的停机时间。

Redis 复制功能(主动-被动)

您可将数据从 Redis OSS、Enterprise Software 或 Enterprise Cloud 数据库持续复制到 Redis Enterprise Cloud数据库。初始同步后,Redis 复制功能 (ReplicaOf) 会执行增量迁移,这就意味着几乎没有观察到应用程序停机时间。

Redis 复制功能旨在以主动-被动方式采用。假定目标处于被动状态,并且已完全重新同步(从源数据库刷新和同步)。因此,在源和目标之间割接更复杂。

通过将 OSS 集群的所有主分片指定为源,可从 Redis OSS 集群复制到标准集群 Redis Enterprise Cloud 数据库。但是,Redis 复制功能最多可允许 32 个源数据库。

  • 支持连续复制(初始数据加载后是增量)。

  • 几乎没有停机时间(取决于复制延迟)。

  • 实现数据一致性。

  • 只有一个站点打算处于活动状态,因此在站点之间割接更为复杂。

  • 从 OSS 集群迁移时最多支持 32 项主分片。

AWS DMS

您可使用 AWS DMS 将数据从任何支持的源数据库迁移到目标 Redis 数据存储,最大限度地减少停机时间。有关最新信息,请参阅 AWS DMS 文档中的使用 Redis 作为 AWS DMS 的目标

  • 支持 NoSQL 和 SQL 数据来源迁移。

  • 与其他 Amazon Web Services 良好地协同工作。

  • 支持实时迁移和更改数据捕获 (CDC) 用例。

  • Redis 键值不能包含特殊字符,如 %。

  • 不支持迁移行或字段名中包含特殊字符。

  • 不支持完整大型二进制对象 (LOB) 模式。

逻辑数据库合并

特殊数据库合并要求可能需要自定义的数据迁移解决方案。例如,您在 Redis OSS 中可能有四个逻辑数据库 (SELECT 0..3),但您可能希望使用单个数据库端点,而非将数据移动至多个 Redis Enterprise Cloud 数据库。Redis Enterprise 不支持可选逻辑数据库,因此您必须转换源数据库的物理数据模型。例如,您可将每个数据库索引映射到前缀(0usr1cmp等),然后使用迁移脚本或提取、转换、加载(ETL)工具输出 RDB 文件,然后可以将其导入目标数据库。

  • 在迁移到目标系统的进程中,使用自定义脚本对数据进行精细控制。

 

  • 如果您决定不完成迁移,则回退可能非常困难,尤其是在必须将较新的数据回退到源系统时。

  • 如果目标是为一次性迁移构建一次性解决方案,则构建成本可能较高。

  • 如果迁移要求频繁变化,则代码、基础设施、开发时间和其他方面维护成本可能会很高。

 

此外,您还可使用 AWS 提供的以下工具和服务。

评测和发现工具:

应用程序和服务器迁移工具:

数据库迁移工具

数据迁移工具

迁移管理:

AWS 合作伙伴解决方案:

操作说明

任务描述所需技能

识别工作负载。

确定要迁移的适当候选工作负载。选择迁移工作负载前,请注意以下各项:

  • 迁移/不迁移此工作负载的业务价值是什么?

  • 如果此工作负载未成功迁移至目标系统,是否有应急计划?

理想情况下,选择对业务影响最大、且风险最小的工作负载。保持整个流程的迭代性,并以较小增量进行迁移。

数据架构师、商业支持者、迁移项目发起人

确定数据来源和需求、设计数据模型。

Redis 举办了研讨会,以加快发现并定义项目的迁移计划。本次研讨会期间,Redis 团队将确定数据来源和源数据模型要求,并分析如何在 Redis Enterprise Cloud 中对其进行改造。

Redis 迁移团队 (Professional Services) 与您的组织一起执行详细的数据模型设计练习。在本次练习中,Redis 团队:

  • 识别目标 Redis 数据结构。

  • 定义数据映射策略。

  • 记录迁移方法与建议。

  • 与利益相关者一起审查并最终确定数据模型。

Redis 解决方案架构师

确定源数据库特点。

确定源环境和目标环境中的 Redis 产品。例如:

  • 源数据库是 OSS 集群数据库、独立的 Redis 数据库、还是 Redis 企业级数据库?

  • 目标数据库是 Redis Enterprise 标准数据库还是 OSS 集群兼容数据库?

  • 应用程序源代码有何影响?

数据架构师

收集当前的系统 SLA 与其他规模调整指标。

确定以吞吐量(每秒操作数)、延迟、每个数据库的总内存大小和高可用性 (HA) 要求表示的当前服务水平协议(SLA)。

数据架构师

确定目标系统特点。

确定以下回答答案:

  • 必须迁移的数据量?

  • 迁移指定数据量需要的时间?

  • 迁移的停机时间要求? 您的服务或应用程序在特定时间段内不可用。这是否可以接受? 如果是,则持续多长时间?

  • 迁移的数据应保持何种一致性? 目标数据库能否处于稍微不一致(过时)的状态?

  • 在将数据加载至目标数据库之前,是否必须对其进行转换? (例如,您可能希望在迁移之前将可选数据库索引转换为前缀。)

  • 是否可以从目标数据库的主机 (例如从对等 VPC 或使用加密的公共端点) 访问源数据库?

  • 与 Redis 技术架构师一起完成数据大小调整以及 Redis 集群规模调整练习。

  • 确定网络需求、基础设施要求、软件版本以及软件许可,并在迁移之前购买任何组件。

  • 传输此类数据是否存在任何安全问题?

数据架构师、Redis 解决方案架构师(可选)

确定依赖项。

确定要迁移的当前系统上游和下游依赖项。确保迁移工作与其他依赖系统迁移是否保持一致。例如,如果您计划将其他业务应用程序从本地迁移至 AWS Cloud,请识别这些应用程序并根据项目目标、时间表和利益相关者进行调整。

数据架构师、企业架构师

确定迁移工具。

根据您的数据迁移要求(例如源数据或停机时间要求),您可使用前面工具部分描述的任何工具。此外,您还可使用:

  • 使用 CRDB 部署进行双向 (主动-主动) 复制。

  • 自定义导出/导入脚本 (例如使用DUMP/RESTORE命令)。

  • 其他导出/导入工具和辅助工具,例如 RIOTECstats2 或 ETL 工具。

  • IaC 工具,例如 Terraform 或 AWS 模板。 CloudFormation

迁移解决方案架构师、Redis 解决方案架构师

制定应急计划。

制定应急计划进行回退,以防在迁移过程中遇到问题。

项目管理、技术团队,包含架构师
任务描述所需技能

保护 Redis 管理控制台。

要保护管理控制台,请按 Redis 文档中的说明进行操作。

IT 基础设施管理员

保护 Redis 数据库。

有关操作,请参阅 Redis 文档中的以下页面:

安全 Redis Cloud API。

启用 API 后,您可对所有 Redis Cloud 账户拥有者管理 API 密钥。有关 API 安全功能的概述,请参阅 Redis 网站的 API 身份验证文档

IT 基础设施管理员
任务描述所需技能

在 AWS 设置新环境。

此任务包括:

  • AWS 登录区设置活动。登录区支持:

    • 多账户部署

    • 最低安全基准

    • 自动为新账户配置安全基准和 ISV 先决条件(网络、安全配置等)

    • 通知、集中日志记录和监控

  • ISV 软件配置活动。这包含迁移中所需的配置,例如产品和工作负载的设置和更改。

  • IaC 活动,例如配置或自定义 AWS CloudFormation 或 Terraform 模板。

IT 或 DevOps 工程师

部署迁移架构。

  1. 安装 Redis Enterprise Cloud on AWS

  2. 安装迁移工具,例如 RIOT 或 AWS DMS。有关可用工具列表,请参阅工具部分。

  3. 在应用程序、迁移和数据库层间建立连接。

  4. 创建可流经每一层的示例工作负载,迁移一小部分样本数据。

现在,您可运行实际数据迁移管道并对其进行测试了。

IT 或 DevOps 工程师
任务描述所需技能

建立连接。

在本地基础设施和 Amazon Web Services Cloud 资源之间建立连接。使用安全组、AWS Direct Connect 等资源来实现此功能。有关更多信息,请参阅 AWS 网站上的将您的数据中心连接到 AWS

IT 或 DevOps 工程师

设置 VPC 对等连接。

在运行业务应用程序的 VPC (或运行迁移工具的 EC2 实例或 AWS DMS 复制服务器) 和运行 Redis Enterprise Cloud 的 VPC 之间建立 VPC 对等关系。有关说明,请参阅 Amazon VPC 文档中的Amazon VPC 入门和 Redis 文档中的 启用 VPC 对等

IT 或 DevOps 工程师
任务描述所需技能

选择数据迁移工具。

查看工具部分的表格,查看这些工具的描述、优点和缺点:

  • RDS 导出和导入

  • Redis 复制功能 (ReplicaOf)

  • AWS DMS

  • 逻辑数据库合并

以下各行描述了与各种工具相关的数据迁移任务。

迁移解决方案架构师

选项 1:使用 RDB 导出与导入。

  1. 断开源连接:停止源数据库上的流量(例如,断开业务应用程序的连接)。

  2. 导出:将源数据库数据导出为 RDB 文件。

  3. 阶段:将数据上传至 Redis Enterprise Cloud on AWS 实例可以访问的位置(例如,您可将其上传到 S3 存储桶或 FTP 服务器)。

  4. 导入:将 RDB 文件(通过在一个导入步骤中列出所有文件)导入 Redis Enterprise Cloud 目标数据库。

  5. 割接:移至目标数据库(例如,通过将应用程序连接到目标数据库)。

有关更多信息,请参阅 Redis 文档

迁移解决方案架构师、Redis 解决方案架构师

选项 2:使用 Redis 复制功能(主动-被动)。

  1. 连接数据库:在源数据库和目标数据库之间建立ReplicaOf链接。

  2. 运行初始同步:等源数据库和目标数据库之间的初始同步完成。

  3. 断开源连接:停止源数据库的流量(例如,断开应用程序的连接)。

  4. 运行增量复制:等待 delta 复制至目标数据库。

  5. 割接:移至目标数据库(例如,通过将应用程序连接到目标数据库)。

  6. 删除:移除源数据库和目标数据库之间的 ReplicaOf链接。

有关更多信息,请参阅 Redis 文档

迁移解决方案架构师、Redis 解决方案架构师

选项 3:使用 AWS DMS。

  1. 设置 AWS DMS 复制实例:以此实例执行所有迁移过程。有关说明,请参阅 AWS DMS 文档中的使用 AWS DMS 复制实例

  2. 定义源数据库:定义源端点。测试源端点与 AWS DMS 复制服务器间的连接。有关说明,请参阅 AWS DMS 文档中的创建源和目标端点

  3. 设置目标数据库:在 AWS 上设置 Redis Enterprise Cloud 并设置要迁移到的数据库。

  4. 定义目标数据库:定义目标端点。确保在运行 AWS DMS 的 VPC 和托管 Redis Enterprise Cloud on AWS 的 VPC 之间建立 VPC 对等关系。测试 AWS DMS 复制服务器和目标服务器间的连接。

  5. 创建 AWS DMS 任务:创建一项或一组任务,定义要用于迁移数据的表和复制过程。有关说明:在 AWS DMS 文档中处理 AWS DMS 任务

  6. 迁移:通过运行 AWS DMS 任务迁移数据。

  7. 割接:移至目标数据库(例如,通过将应用程序连接到目标数据库)。

迁移解决方案架构师、Redis 解决方案架构师

选项 4:采用逻辑数据库合并。

此选项包括使用可以转换源数据库物理数据模型、以及生成 RDB 文件的迁移脚本或 ETL 工具。如有必要,Redis Professional Services 可以帮助完成此步骤。

迁移解决方案架构师、Redis 解决方案架构师
任务描述所需技能

调整项目管理时间表与目标。

将应用程序层迁移项目目标、里程碑和时间表与 Redis 数据迁移项目的目标、里程碑和时间表保持一致。

项目管理

调整测试活动。

在 Amazon Web Services Cloud 中对应用程序层进行迁移与现代化改造后,将应用程序层指向 AWS 上新迁移的 Redis Enterprise Cloud 进行测试。

测试
任务描述所需技能

实施测试计划。

根据测试要求,在您站点的测试环境中运行在实施阶段开发的数据迁移例程和脚本。

测试

测试数据质量。

迁移数据后,测试数据质量。

测试

测试功能。

测试数据查询与应用程序层,确保应用程序的性能与源系统中的性能相同。

测试
任务描述所需技能

做出割接决定。

在所有应用程序级和数据库级测试完成后,执行领导团队和利益相关者将根据测试团队确认的最终结果,就是否割接到 AWS 上的新环境做出最终决定。

项目管理,商业拥护者

割接至 Amazon Web Services Cloud 中。

确认一切准备就绪后,将应用程序层指向新迁移的数据,将客户端指向新 Redis Enterprise Cloud system on AWS 系统运行的新应用程序层。

IT 或 DevOps 工程师、数据架构师、迁移解决方案架构师、Redis 解决方案架构师

相关资源

Redis 资源

AWS 资源

其他信息

有关将 Redis 工作负载迁移到 AWS 云的标准安全要求,请参阅 AWS 网站上的安全、身份和合规最佳实践,以及 Redis 网站上的 Redis 信任中心