使用 Amazon Redshift 实现灾难恢复 大数据博客
使用 Amazon Redshift 实现灾难恢复
由 Nita Shah Agasthi Kothurkar Poulomi Dasgupta Jason Pedreza 和 Ranjan Burman 于 2024 年 6 月 27 日发布在 Amazon Redshift, Analytics, 最佳实践, 中级 (200), 技术操作指南 永久链接 评论 分享
关键要点
灾难恢复计划的目标在于通过快速恢复来减少由于系统故障导致的干扰,同时确保合规性。Amazon Redshift提供自动快照和跨区域复制等内置功能,可以提高灾难恢复能力。制定灾难恢复计划需要明确恢复目标RTO和RPO并识别恢复策略。本文将介绍重要的备份和恢复策略,适用于 Redshift 环境中的各种故障模式。Amazon Redshift 是一项完全托管的云数据仓库服务,支持 PB 级别的数据存储。用户可以从几百 GB 的数据快速扩展到 PB 级别,这样就可以利用数据为业务和客户获取新的洞察。
灾难恢复计划的目标是通过在发生导致系统故障的灾难时,能够快速恢复来减少干扰。灾难恢复计划还能够确保组织达到所有合规要求,提供清晰的恢复路线图。
本文阐明了您可以采取的主动步骤,以减轻意外中断的风险,并确保您的组织在发生灾难时更好地准备响应和恢复 Amazon Redshift 的服务。借助 Amazon Redshift 中内置的功能,如自动快照和跨区域复制,您可以增强灾难恢复能力。
灾难恢复计划
任何灾难恢复计划都包含两个关键组件:
组件描述恢复点目标RPORPO 是自上次数据恢复点以来可接受的最大时间。它决定了在最后恢复点与服务中断之间什么数据损失是可以接受的。恢复时间目标RTORTO 是服务中断和服务恢复之间的最大可接受延迟。它确定了在服务不可用时可以接受的时间窗口。要制定您的灾难恢复计划,您应该完成以下任务:
明确您在停机和数据丢失RTO 和 RPO方面的恢复目标,并确保商务利益相关者参与目标的制定。确定满足恢复目标的恢复策略。定义一个后备计划,以便将生产恢复到原始设置。在非生产环境中通过模拟故障事件来测试灾难恢复计划。制定沟通计划,以通知利益相关者停机情况及其对业务的影响。制定进度更新及恢复和可用性的沟通计划。记录整个灾难恢复过程。灾难恢复策略
Amazon Redshift 是一款云数据仓库,支持许多内置的恢复能力,以解决意外停机并将停机时间最小化。
Amazon Redshift RA3 实例类型和 Redshift Serverless 的数据存储在 Redshift 管理存储(RMS)中,由 Amazon 简单存储服务 (Amazon S3) 提供支持,默认情况下具有高可用性和耐用性。
接下来我们将讨论各种故障模式及其恢复策略。
使用备份
备份数据是数据管理的重要组成部分。备份可以防止人为错误、硬件故障、病毒攻击、断电和自然灾害的风险。
Amazon Redshift 支持两种快照:自动快照和手动快照,可以用于恢复数据。快照是 Redshift 数据仓库的瞬时备份,Amazon Redshift 通过加密的安全套接字层 (SSL) 连接在 RMS 中内部存储这些快照。
Redshift 配置集群提供自动快照,默认保留时间为 1 天,可延长至 35 天。这些快照每个节点数据更改达到 5 GB 或每 8 小时自动生成,最小时间间隔为 15 分钟。数据更改必须大于集群中总数据的输入量5 GB 乘以节点数量。您也可以设置自定义快照计划,频率为每 124 小时。
可使用 AWS 管理控制台 或 ModifyCluster API 管理自动备份保留的时间,通过修改 RetentionPeriod 参数。如果您希望完全关闭自动备份,可以将保留期设置为 0不推荐。有关详细信息,请参考 自动快照。
Amazon Redshift Serverless 自动每 30 分钟创建一次恢复点,默认保留 24 小时,之后将被自动删除。您可以选择将恢复点转换为快照,以便在超过 24 小时后保留数据。
无论是 Amazon Redshift 配置集群还是 serverless 集群,都支持手动快照,手动快照可以按需生成并无限期保留,以满足合规要求。手动快照会导致存储费用,因此在不再需要时,请务必删除它们。有关详细信息,请参阅 手动快照。
Amazon Redshift 集成了 AWS 备份,帮助您集中和自动化所有 AWS 服务的数据保护,无论是在云中还是本地。使用 AWS 备份管理 Amazon Redshift,您可以配置数据保护策略并监控不同 Redshift 配置集群的活动。这使您能够自动化和整合之前必须单独进行的备份任务,而无需手动处理。如需了解有关为 Amazon Redshift 设置 AWS 备份的更多信息,请参阅 Amazon Redshift 备份。截至目前,AWS 备份尚不支持 Redshift Serverless。
节点故障
Redshift 数据仓库 是一组称为 节点 的计算资源。Amazon Redshift 将自动检测并替换您数据仓库集群中的故障节点。Amazon Redshift 会立即提供替换节点,并优先加载从 Amazon S3 获取的最频繁访问的数据,以尽快恢复数据查询。
如果这是一个单节点集群不建议用于客户生产环境,则集群中仅有一份数据拷贝。当该节点出现故障时,AWS 需要从 Amazon S3 上最近的快照中恢复集群,这样就形成了您的 RPO。
我们建议在生产环境中至少使用两个节点。
集群故障
每个集群都有一个主节点和一个或多个计算节点。如果发生集群故障,您必须 从快照恢复集群。快照是集群的瞬时备份,包含所有正在运行的数据库数据及集群信息,包括节点数量、节点类型和管理员用户名。如果您从快照恢复集群,Amazon Redshift 将使用集群信息创建新集群,并随后从快照数据中恢复所有数据库。需要注意的是,新集群在所有数据加载完成之前就可用,因此您可以在几分钟内开始查询新集群。集群将在相同的 AWS 区域和一个随机的、系统选择的可用区中恢复,除非您在请求中指定另一个可用区。
可用区故障
区域是指全球范围内数据中心的物理位置,而可用区是一个或多个具有冗余电力、网络和连接的离散数据中心。在生产应用和数据库中,利用多个可用区的好处,能够实现更高的可用性、容错能力和可扩展性,相较于仅使用单一数据中心的解决方案。这一地区内的所有可用区之间通过高带宽、低延迟网络互联,提供高吞吐量、低延迟的网络。
要从可用区故障中恢复,您可以采取以下一种方法:
迁移能力主动被动 如果您的 Redshift 数据仓库是单可用区部署,并且集群的可用区变得不可用,Amazon Redshift 将自动将您的集群迁移到另一可用区,而不会丢失数据或更改应用程序。要激活此功能,您必须通过配置设置为您的配置集群启用 集群迁移,此功能在 Redshift Serverless 中默认启用。集群迁移是免费的,但属于最佳努力方法,受恢复相关资源的可用性影响,恢复时间目标可能会因其他问题而受到影响,默认恢复时间通常在 1060 分钟之间。有关 Amazon Redshift 迁移能力的配置,请参考 构建健壮的 Amazon Redshift 架构并启用自动恢复。亚马逊 Redshift 多可用区主动主动 多可用区部署允许您同时在多个可用区运行数据仓库,并在遇到意外故障场景时继续运行。无需更改应用程序即可保持业务连续性,因为多可用区部署作为单一数据仓库进行管理,拥有一个终端节点。多可用区部署通过自动恢复来保障容量,从而减少恢复时间,并适用于需要最高可用性和对可用区失败具有较高韧性的关键分析应用程序。这种设置还允许您实现更符合 AWS WellArchitected 框架可靠性支柱建议的解决方案。我们的预发布测试表明,在可用区域发生故障的情况下,Amazon Redshift 多可用区场景的恢复时间目标在 60 秒以内。有关配置多可用区的具体信息,请查看 为您的 Amazon Redshift 数据仓库启用多可用区部署。截至目前,Redshift Serverless 暂不支持多可用区。区域故障
当前,Amazon Redshift 支持单区域部署。不过,您可以采取几种方法来帮助处理灾难恢复或跨多个区域访问数据的情况。

使用跨区域快照
您可以配置 Amazon Redshift 将集群快照复制到另一个区域。要配置跨区域快照复制,您需要为每个数据仓库serverless 和配置启用此复制功能,并配置要将快照复制至何处以及在目标区域保留自动快照或手动快照的时间。在为数据仓库启用跨区域复制后,所有新生成的手动和自动快照将会被复制到指定区域。在发生区域故障时,您可以使用最新的跨区域快照在新区域中恢复您的 Redshift 数据仓库。
以下图示展示了这一架构:
有关如何启用跨区域快照的更多信息,请参阅:
为未加密的集群配置跨区域快照复制为 AWS KMS 加密的集群配置跨区域快照复制使用自定义域名
自定义域名比 Amazon Redshift 提供的默认终端 URL 更容易记住和使用。借助 CNAME,您可以在故障切换情况下快速将流量路由到从快照创建的新集群或工作组。当发生灾难时,可以通过中心化重新路由连接,尽量减少干扰,而不需客户端更改其配置。
为了实现高可用性,您应确保有一个温备集群或工作组可用,该集群定期接收来自主集群恢复的数据。此备份数据仓库可设置在其他可用区或单独的区域中。如果整个区域发生故障,请通过 设置自定义域名 将客户端重定向到备用 Redshift 集群。
以下部分,将讨论如何使用自定义域名处理 Amazon Redshift 中的区域故障。请确保满足以下先决条件:
您需要一个已注册的域名。可以使用 Amazon Route 53 或第三方域名注册商注册域名。您需要为 Redshift 集群或工作组 配置跨区域快照。启用集群迁移 的功能,使用 AWS 命令行界面 (AWS CLI) 为 Redshift 配置集群启用迁移。对于 Redshift Serverless,此功能自动启用。欲了解更多,请参考 迁移您的集群。记录下您的 Redshift 终端节点。可以通过 Amazon Redshift 控制台找到您的 Redshift 工作组或配置集群名称。在主区域设置自定义域名在 Route 53 创建的托管区域中,创建记录以指示 Route 53 如何路由流量到 Redshift 终端,通过执行以下步骤:
加速器ios下载在 Route 53 控制台中,选择导航面板中的 托管区域。选择您的托管区域。在 记录 选项卡中,选择 创建记录。在 记录名称 中,输入您希望的子域名。在 记录类型 中,选择 CNAME。在 值 中,输入 Redshift 终端节点名称,确保去掉冒号、端口和数据库。例如,redshiftprovisionedeabc123useast2redshiftamazonawscom。选择 创建记录。使用 CNAME 记录名称在 Amazon Redshift 中创建自定义域名。有关详细指导,请参见 使用自定义域名与 Amazon Redshift。现在,您可以使用自定义域名连接到您的集群。JDBC URL 将类似于 jdbcredshift//prefixrootdomaincom5439/devsslmode=verifyfull,其中 prefixrootdomaincom 是您的自定义域名,dev 是默认数据库。请使用您偏好的编辑器,通过用户名和密码连接此 URL。
处理区域故障的步骤在区域故障不太可能的情况下,请完成以下步骤:
使用跨区域快照 恢复 Redshift 集群或工作组 在您的备用区域中。启用集群迁移 的功能,以便在备用区域中的 Redshift 集群上启用迁移。使用 AWS CLI 启用配置集群的迁移。使用从 Route 53 托管区域设置的 CNAME 记录名称在新创建的 Redshift 集群或工作组中创建自定义域名。记录下新创建 Redshift 集群或工作组的终端节点。接下来,您需要更新 Route 53 中的 Redshift 终端节点,以实现无缝连接。
在 Route 53 控