关于数据库:使用Amazon-Redshift-Simple-Replay实用程序简化Amazon-Redshift-RA3迁移评估

39次阅读

共计 9678 个字符,预计需要花费 25 分钟才能阅读完成。

Amazon Redshift 是疾速、广受欢迎的齐全托管式云数据仓库,容许您应用规范 Amazon SQL 解决数据仓库、经营数据库和数据湖中的 EB 级数据。它提供不同的节点类型以适应各种工作负载;您能够依据需要从 Amazon Redshift RA3、Amazon Redshift DC2 和 Amazon Redshift DS2 中抉择。Amazon Redshift RA3 是最新的实例类型,它容许您独立扩大计算和存储并领取其费用,还反对跨集群数据共享和跨可用区集群从新定位等高级性能。无关降级时节点计数和类型倡议的更多信息,请参阅 降级到 Amazon Redshift RA3 节点类型

  • Amazon Redshift
    http://aws.amazon.com/redshift
  • 降级到 Amazon Redshift RA3 节点类型
    https://docs.aws.amazon.com/r…

📢 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注 2021 亚马逊云科技中国峰会!点击图片报名吧~

博文 借助带托管存储的新型 Amazon Redshift RA3 节点扩大云数据仓库和降低成本与 Amazon Redshift 基准测试:比拟 Amazon Redshift RA3 与 Amazon Redshift DS2 实例类型 具体介绍了从 Amazon Redshift DS2 迁徙到 Amazon Redshift RA3 的劣势。在理解了 Amazon Redshift RA3 的劣势之后,咱们的许多现有 Amazon Redshift DC2 客户在胜利评估其性能后已迁徙到 Amazon Redshift RA3。然而,此评估次要通过手动实现,这须要您复制工作负载以评估在新节点上的性能。

  • 借助带托管存储的新型 Amazon Redshift RA3 节点扩大云数据仓库和降低成本
    https://aws.amazon.com/blogs/…
  • Amazon Redshift 基准测试:比拟 Amazon Redshift RA3 与 Amazon Redshift DS2 实例类型
    https://aws.amazon.com/blogs/…

您能够应用 Amazon Redshift Simple Replay 工具进行假如剖析并评估工作负载在不同场景中的性能。例如,您能够应用该工具在 Amazon Redshift RA3 等新实例类型上对理论工作负载进行基准测试、评估新性能或评估不同的集群配置。它还包含加强了对应用 COPY 和 UNLOAD 语句重放数据摄入和导出管道的反对。要开始和 重放您的工作负载,请从 Amazon Redshift GitHub 存储库 下载该工具。

  • Amazon Redshift GitHub 存储库
    https://github.com/awslabs/am…

在本文中,咱们将介绍无关通过 Amazon Redshift Simple Replay 实用程序主动评估 Amazon Redshift RA3 实例的步骤。如果您应用旧一代 Amazon Redshift DS2 和 Amazon Redshift DC2 节点类型在 Amazon Redshift 中运行生产工作负载,则能够应用此解决方案主动从源生产集群中提取工作负载日志并在隔离的环境中 重放这些日志,以便您间接无缝地比照这两个 Amazon Redshift 集群。

先决条件

此解决方案应用 Amazon CloudFormation 主动预置您亚马逊云科技账户中的所有必须资源。无关详情,请参阅 Amazon CloudFormation 应用入门

  • Amazon CloudFormation
    http://aws.amazon.com/cloudfo…
  • Amazon CloudFormation 应用入门
    https://docs.aws.amazon.com/A…

作为此解决方案的先决条件,您须要实现以下步骤。您可能须要领有亚马逊云科技账户的管理员拜访权限,能力执行这些步骤以及随后部署此解决方案。

  1. 在 Amazon Redshift 控制台的源 Amazon Redshift 集群中启用审计日志记录,而后指定 Amazon Simple Storage Service (Amazon S3) 存储桶地位以保留日志文件。无关详情,请参阅数据库审计日志记录。
  2. 将参数组 enable_user_activity_logging 更改为 true。无关详情,请参阅应用控制台治理参数组。
  3. 重新启动集群。
  4. 在打算部署 Amazon CloudFormation 模板的亚马逊云科技账户中创立 Amazon Elastic Compute Cloud (Amazon EC2) 密钥对。无关详情,请参阅应用 Amazon EC2 创立密钥对。
  • Amazon Simple Storage Service
    http://aws.amazon.com/s3
  • 数据库审计日志记录
    https://docs.aws.amazon.com/r…
  • 应用控制台治理参数组
    https://docs.aws.amazon.com/r…
  • Amazon Elastic Compute Cloud
    http://aws.amazon.com/ec2
  • 应用 Amazon EC2 创立密钥对
    https://docs.aws.amazon.com/A…

解决方案概览

该解决方案包含两个 Amazon CloudFormation 模板,用于执行工作负载的提取和重放。您能够在托管 Amazon Redshift 集群的同一账户中部署这两个模板,这是咱们举荐的办法。或者,您也能够在生产账户运行提取模板,在独立的开发账户运行重放模板来执行此评估,如下图所示。

  • 提取
    https://github.com/awslabs/am…
  • 重放

https://github.com/awslabs/am…

该流程应用 Amazon Step Functions 

和 Amazon Lambda 来编排端到端工作流以进行提取和 重放。第一个模板在源账户中部署提取应用程序。这将从 Amazon S3 存储桶中提取审计日志以进行 Amazon Redshift 审计日志记录。它将其存储在为重放 - 提取流程创立的新 Amazon S3 存储桶中。它还会创立您集群的手动快照,并受权重放账户复原快照。

  • Amazon Step Functions
    http://aws.amazon.com/step-fu…
  • Amazon Lambda
    http://aws.amazon.com/lambda 

第二个模板将重放应用程序部署在开发账户中(如果您抉择不在源账户中运行重放)。它应用来自提取应用程序的 Amazon S3 文件,并生成重放的主动评估摘要。

端到端工作流:提取流程

提取流程在您输出要运行此流程的工夫距离时开始。它主动从源集群中提取审计日志,并将这些日志存储在该账户的新 Amazon S3 存储桶中。它还会部署大小为 m5.large 的 Amazon EC2 实例(装置有 Simple Replay 实用程序)。下图展现了该解决方案架构。

下图显示了用于提取流程的 Amazon Step Functions 状态机。

状态机执行以下步骤,将源集群元数据提取到提取 Amazon S3 存储桶中:

  1. 期待源集群处于可用状态。
  2. 应用与集群标识符字符串连贯的标识符 ra3-migration-evaluation-snapshot-,创立源集群的手动快照。
  3. 快照受权给您打算运行 重放流程的指标账户。
  4. 将源集群配置参数上传到提取 Amazon S3 存储桶。
  5. 运行提取流程以从源集群获取日志并将其放入提取 Amazon S3 存储桶中。

提取 Amazon CloudFormation 模板主动启动提取流程的第一次迭代,但您能够提交带有 start_time 和 end_time 输出参数的状态机来随时从新运行该流程,如以下代码所示:

{“input”: {“start_time”:“<<Extract_Start_Time>>”,“end_time”:“<<Extract_End_Time>>”}}

将 start_date 和 end_date 的值替换为 ISO-8601 格局的理论日期(例如,2021-03-05T12:30:00+00:00)。以下屏幕截图显示了状态机运行输出。

您须要在托管源集群的同一账户中为提取流程部署 Amazon CloudFormation 模板。此模板要求您提供以下参数:

  • SourceRedshiftClusterEndpoint — 非 Amazon Redshift RA3 源集群端点,包含端口号和数据库名称。
  • AccountIdForReplay — 如果您打算在其余账户中运行 重放流程,请在此参数中输出 12 位亚马逊云科技账户 ID。如果您在同一账户中运行提取和 重放流程,请输出 N/A。
  • SimpleReplayStartTime — 您想从源集群运行提取流程的第一次迭代的开始日期,采纳 ISO-8601 格局(例如,2021-01-20T21:41:16+00:00)。您能够稍后在提取状态机的输出 JSON 中更改它。
  • SimpleReplayEndTime — 您心愿从源集群中提取并在指标 Amazon Redshift RA3 集群中重放的完结日期和工夫,采纳 ISO-8601 格局。您能够稍后在提取状态机的输出 JSON 中更改它。请确保开始工夫和完结工夫之间相差不超过 24 小时。
  • ExtractSystemTables — 这是可选步骤(前提是您要提取源集群零碎表以供参考)。咱们倡议将此参数设置为 No,因为它会将 Amazon Identity and Access Management (IAM) 角色增加到源集群中,以便从源集群卸载零碎表。
  • EndUserIamRoleName — 可能在运行提取 - 重放评估的最终用户的现有 Amazon IAM 角色名称。您能够应用此参数,容许非管理员用户在没有对亚马逊云科技资源的任何其余权限状况下运行提取 - 重放状态机。如果您不想提供任何最终用户权限,请输出 N/A。
  • EC2InstanceAMI — 基于 Amazon Linux 2 的 Amazon EC2 实例的 Amazon AMI。咱们倡议保留此参数的默认 Amazon AMI,除非合规性要求须要它。
  • Amazon Identity and Access Management
    http://aws.amazon.com/iam

部署模板后,导航到模板的输入选项卡,其中列出了重放流程部署所需的一些相干参数。

端到端工作流:重放流程

此解决方案的第二局部是,应用 Amazon CloudFormation 模板在运行提取流程的同一账户或同一区域的其余账户中部署重放流程

此流程预置两个 Amazon Redshift 集群:一个为正本集群(配置与源集群完全相同),另一个为具备 Amazon Redshift RA3 配置的指标集群。它将部署装置了 Simple Replay 实用程序的 M5 系列的两个 Amazon EC2 实例,并在这些集群中同时 重放提取的工作负载。因为重放流程会保留查问和事务之间的工夫距离,以模仿来自源集群的确切工作负载,因而,此流程所破费的工夫与您在运行提取流程时提供的 start_time 与 end_time 之间的持续时间大致相同。下图展现了该解决方案的架构。

下图显示了用于重放流程的 Amazon Step Functions 状态机。

状态机执行以下步骤,重放从提取 Amazon S3 存储桶中提取的工作负载:

  1. 将 Amazon Redshift 参数组更新为与源集群参数组雷同的配置,该参数组作为提取流程的一部分保留在提取 Amazon S3 存储桶中。
  2. 如果正本和指标集群不存在,则并行启动其创立集群流程。正本集群将通过与源集群完全相同的配置创立,而指标集群将通过 Amazon Redshift RA3 配置创立(如果源集群与您在部署 Amazon CloudFormation 模板时指定的 Amazon Redshift RA3 配置的弹性调整兼容)。如果指标 Amazon Redshift RA3 配置与弹性调整不兼容,则它会通过与正本集群雷同的配置创立指标集群。
  3. 如果上一步因为与弹性调整不兼容而应用非 Amazon Redshift RA3 配置创立了指标集群,则当该集群可用时,它将针对该集群执行经典的调整。
  4. 如果指标集群或正本集群处于暂停状态,它将复原该集群。
  5. 如果指标集群或正本集群处于可用状态,且针对该集群的任何复原操作(如果实用)已实现,则它会运行 Amazon SQL 脚本,在集群的公共架构中设置一些 Amazon Redshift 对象,以便在集群之间执行主动性能比拟。
  6. 指标集群和正本集群的设置流程实现后,它会同时在两个集群中运行重放流程,从而运行从源集群中提取的所有 Amazon SQL,同时放弃与源集群雷同的事务程序和工夫距离。
  7. 重放流程实现后,它将从正本集群中卸载查问统计数据并将其加载到指标 Amazon Redshift RA3 集群,从而实现 Amazon Redshift RA3 集群内各环境之间的间接性能比拟。
  • 弹性调整
    https://docs.aws.amazon.com/r…

重放流程的 Amazon CloudFormation 模板主动启动重放流程的第一次迭代,但您能够通过提交不带任何参数的状态机,随时从新运行该流程。此模板要求您提供以下参数:

  • SourceAccountNumber — 运行提取流程的源账号。您能够在提取堆栈的输入选项卡上找到它。
  • SourceAccountSimpleReplayS3Bucket — 提取 Amazon S3 存储桶,由提取模板创立(可在堆栈输入选项卡上找到)。
  • SourceRedshiftClusterEndpoint — 非 Amazon Redshift RA3 源集群端点,包含端口号和数据库名称(可在堆栈输入选项卡上找到)。
  • SourceRedshiftClusterKMSKeyARN — Amazon Key Management Service (KMS) 密钥 Amazon ARN (Amazon Resource Name)(如果您的源 Amazon Redshift 集群通过加密)(可在堆栈输入选项卡上找到)。如果源集群通过加密,则您须要在同一账户中运行提取和重放。
  • SourceRedshiftClusterMasterUsername — 与源集群的主用户账户关联的用户名(可在堆栈输入选项卡上找到)。
  • SourceRedshiftClusterPrimaryDatabase — 源集群中您要 重放工作负载的主数据库名称。Amazon Redshift 会主动创立名为 dev 的默认数据库,该数据库可能不是您的主数据库。依据您的部署输出正确的值。如果您有多个数据库,则须要一次对一个数据库运行提取和重放。
  • TargetRedshiftClusterNodeType — 要预置的 Amazon Redshift RA3 节点类型。咱们倡议依照降级到 Amazon Redshift RA3 节点类型中的倡议应用节点类型和节点计数。
  • TargetRedshiftClusterNumberOfNodes — 集群中计算节点的数量。
  • EndUserIamRoleName — 可能在运行提取 - 重放评估的最终用户的现有 Amazon IAM 角色名称。您能够应用此参数,容许非管理员用户在没有对亚马逊云科技资源的任何其余权限状况下运行提取 - 重放状态机。如果您不想提供任何最终用户权限,请输出 N/A
  • GrantS3ReadOnlyAccessToRedshift — 如果您在同一账户中部署提取和 重放流程,则能够为此参数输出 Yes,该参数将 AmazonS3ReadOnlyAccess 授予给 Amazon Redshift 指标和正本集群,以在账户中重放 Amazon Redshift 的正本语句。否则,您须要手动复制文件,并调整提取 Amazon S3 存储桶最新提取文件夹中的 copy_replacement.csv 文件,还需在重放 Amazon S3 存储桶的 config/replay.yaml 文件中将正本语句的参数设置为 true。
  • VPC — 您心愿部署集群和 Amazon EC2 实例的现有 Amazon Virtual Private Cloud (Amazon VPC)。
  • SubnetId — Amazon VPC 内您部署集群和 Amazon EC2 实例的现有子网。
  • KeyPairName — 容许 SSH 连贯到重放 Amazon EC2 实例的现有密钥对。
  • OnPremisesCIDR — 用于从 Amazon SQL 客户端拜访指标集群和正本集群的现有基础设施的 IP 范畴(CIDR 表示法)。如果不确定,请输出公司桌面的 CIDR 地址。例如,如果桌面的 IP 地址是 10.156.87.45,请输出 10.156.87.45/32。
  • EC2InstanceType — 托管 Simple Replay 实用程序代码库的 Amazon EC2 实例类型。如果集群中的数据大小小于 1 TB,则您能够应用大型实例类型。咱们倡议针对较大工作负载应用较大的实例类型,以避免 Amazon EC2 实例在从集群获取查问后果时成为瓶颈。
  • EC2InstanceVolumeGiB — 以 GiB 为单位的 Amazon EC2 实例卷大小。咱们倡议将其放弃 30 GiB 或更多。
  • EC2InstanceAMI — 基于 Amazon Linux 2 的 Amazon EC2 实例的 Amazon AMI。除非您须要合乎合规性要求,否则不要更改此参数。
  • Amazon Key Management Service (KMS)
    https://aws.amazon.com/kms/
  • 降级到 RA3 节点类型
    https://docs.aws.amazon.com/r…
  • Amazon Virtual Private Cloud
    http://aws.amazon.com/vpc

拜访权限和安全性

要应用 Amazon CloudFormation 部署此解决方案,您须要对打算部署提取和重放流程的亚马逊云科技账户领有管理员拜访权限。两个模板都提供有输出参数 EndUserIamRoleName,您能够应用该参数,容许非管理员用户在没有对系统资源的任何宽泛权限状况下运行流程。

Amazon CloudFormation 模板基于最低权限准则应用平安最佳实际来预置所有必须的资源,并在账户 VPC 中托管所有资源。Amazon EC2 实例和 Amazon Redshift 集群共享雷同的平安组,不容许对 Amazon EC2 实例进行 SSH 拜访。对 Amazon Redshift 指标集群和正本集群的拜访权限由 Amazon CloudFormation 模板参数 OnPremisesCIDR 进行管制,您须要提供该参数能力容许本地用户在 Amazon Redshift 端口上应用 Amazon SQL 客户端连贯到新集群。

所有资源的拜访权限均应用 Amazon IAM 角色管制,此类角色向 Amazon Redshift、Amazon Lambda、Amazon Step Functions 和 Amazon EC2 授予适当权限。将提取流程创立的 Amazon S3 存储桶的读写访问权限授予给用于重放流程的亚马逊云科技账户,以便它从该存储桶中读取和更新配置。

  • Amazon IAM 角色
    https://docs.aws.amazon.com/I…

评估 RA3 性能

实现重放状态机的首次运行后,您应该可能在部署了 重放模板的亚马逊云科技账户的 Amazon Redshift 管制台上查看 Amazon Redshift RA3 指标和非 Amazon Redshift RA3 正本集群。重放的每次迭代都会主动填充指标 Amazon Redshift RA3 集群公共架构中的以下表和视图,便于您间接比拟集群之间的性能:

  • source_target_comparison — 提供两个集群 重放工作负载所用工夫的比拟摘要。它提供按 Amazon Redshift 队列和用户名分组的 total_query_time_saved_seconds 列,这在您的最终评估中可能十分有用。
  • source_target_comparison_raw — 提供两个集群对每个查问所用工夫的具体比拟。
  • replica_cluster_query_stats — 存储在正本集群上运行的 重放的查问级别指标。
  • target_cluster_query_stats — 存储在 Amazon Redshift RA3 集群上运行的重放的查问级别指标。
  • source_cluster_query_stats — 存储源集群中的查问级别指标。此表可能为空,因为它依赖于源集群中的 STL 日志视图,这些视图仅保留 2-5 天。无关详情,请参阅用于日志记录的 STL 视图。
  • detailed_query_stats — 填充 query_stats 表并提供咱们用于从 STL 日志视图填充这些统计数据的逻辑。
  • 用于日志记录的 STL 视图
    https://docs.amazonaws.cn/en_…

老本和时间表思考因素

在您的亚马逊云科技账户中运行此模板会带来一些老本影响,因为它会预置新的 Amazon Redshift 集群和三个 Amazon EC2 实例,如果您没有 预留实例,这些实例可能会作为按需实例免费。实现评估后,咱们倡议删除 Amazon CloudFormation 堆栈。这将删除除用于提取和重放的两个 Amazon S3 存储桶之外的所有关联资源。咱们还倡议在不应用集群时将其暂停。无关详情,请参阅 Amazon Redshift 定价 和 Amazon EC2 定价。

  • 预留实例
    https://aws.amazon.com/ec2/pr…
  • Amazon Redshift 定价
    https://aws.amazon.com/redshi…
  • Amazon EC2 定价
    https://aws.amazon.com/ec2/pr…

限度

Simple Replay 和此自动化流程存在一些已知限度:

  • 如果将审计日志传送到 Amazon S3 存在滞后,则提取流程可能会失败。在这种状况下,您须要抉择与过来不同的工夫距离来从新运行提取状态机。
  • 不能保障跨连贯的相干 Amazon SQL 查问以原始程序运行。
  • 如果指标集群无权拜访内部表,则不会重放 Amazon Redshift Spectrum 查问。
  • 不会重放具备 BIND 变量的查问。
  • 不反对应用 JDBC 进行重放。
  • 并发的大量获取可能会给 Amazon EC2 客户端造成压力。对于这些状况,可能须要更大的 Amazon EC2 实例。
  • 审计日志可能蕴含未提交到生产集群的 Amazon SQL。将重放这些 Amazon SQL。

您能够应用正本和指标集群进行比拟(而不是与生产 Amazon Redshift 集群进行间接比拟),最大限度地缩小这些限度的影响。

论断

与之前的实例相比,Amazon Redshift RA3 实例提供许多额定的劣势。如果您尝试迁徙到 Amazon Redshift RA3 实例类型,但放心评估工作,则借助 Amazon Redshift Simple Replay 实用程序,您能够轻松无缝地执行此评估并胜利迁徙到 Amazon Redshift RA3 节点。

如果您对 Amazon Redshift RA3 实例类型的性能感到称心,能够针对生产集群执行调整操作,将其移到 Amazon Redshift RA3 平台。调整生产集群所花的工夫与创立测试 Amazon Redshift RA3 集群所花的工夫相近,具体取决于应用的是弹性调整还是传统调整。咱们倡议在对生产集群执行调整操作之前创立手动快照。

本篇作者

Manash Deb

亚马逊云科技

高级剖析专家解决方案构架师

超过 15 年以来,始终致力于采纳不同的数据库和数据仓库技术构建端到端数据驱动型解决方案。喜爱学习新技术,通过亚马逊云科技上易于应用的云数据解决方案解决、自动化和简化客户问题。

Sinath Madabushi

Amazon Redshift

高级数据库工程师

在各种数据仓库、商业智能和数据库技术畛域工作了超过 16 年。是一位狂热的大数据爱好者,与寰球客户单干,以满足他们的数据仓库需要。

正文完
 0