如何调整 Amazon Redshift 集群的大小?

2 分钟阅读
0

我想调整 Amazon Redshift 集群的大小,想知道会对性能和账单产生的影响。

解决方案

有四种方法可以调整 Amazon Redshift 集群的大小:

  • 弹性大小调整: 如果选项中有弹性大小调整,可以使用弹性大小调整来更改节点类型和/或节点数量。如果您只更改节点数量,会暂停查询,连接会保持打开状态。弹性大小调整需要 10-15 分钟。在调整大小操作期间,集群处于只读状态。
  • 经典大小调整: 当弹性大小调整无法更改集群大小或节点时,请使用经典大小调整。经典大小调整会创建一个目标集群,然后将您的数据和元数据从源集群迁移到目标集群。如果您使用目标节点类型 RA3,则源集群将重启并且会停用几分钟。重启后,集群就可以进行读写操作。系统会在后台继续调整大小。如果您使用其他类型的目标节点,那么在重启后,在数据迁移到目标集群期间,集群将处于只读状态。迁移完成后,目标集群将使用端点进行更新,并可以执行读写任务。有关要使用的目标节点类型的更多信息,请参阅经典大小调整
  • 快照、恢复和调整大小: 要确保集群在经典大小调整操作期间可用,请先复制现有集群。然后,调整新集群的大小。如果数据是在快照生成后写入源集群的,必须手动复制这些数据。向新创建的目标集群手动复制数据必须在迁移完成之后再进行。

有关更多信息,请参阅在 Amazon Redshift 中管理集群概述

调整大小的先决条件

要验证您的集群是否有符合进行弹性大小调整的要求,请运行以下 AWS CLIAWS CloudShell 命令:

aws redshift describe-node-configuration-options --cluster-identifier <cluster-id> --action-type resize-cluster

**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。如果集群符合弹性大小调整的要求,则 AWS CLI 中会输出类似于以下示例的信息:

{
  "NodeConfigurationOptionList": [
    {
      "NodeType": "dc2.large",
      "NumberOfNodes": 2,
      "EstimatedDiskUtilizationPercent": 0.01
    },
    {
      "NodeType": "ra3.16xlarge",
      "NumberOfNodes": 2,
      "EstimatedDiskUtilizationPercent": 0.01
    }
  ]
}

如果集群不符合弹性大小调整的要求,则 AWS CLI 中会输出类似于以下示例的信息:

{
  "NodeConfigurationOptionList": []
}

性能基准

为了帮助您决定调整大小,请对现有集群工作负载和目标集群工作负载进行基准测试

调整操作速度

如果使用弹性大小调整来调整具有相同节点类型的集群的大小,则该操作不会创建新集群。因此,操作很快就会完成。完成经典大小调整或快照和恢复操作所需的时间可能会各不相同,具体取决于以下因素:

  • 源集群上的工作负载。
  • 从源集群传输到目标集群的表的数量和大小。
  • 数据在计算节点和切片之间的均匀分布程度。
  • 源集群和目标集群中的节点配置。

**注意:**如果您在具有大量数据且节点不是 RA3 的集群上执行经典大小调整,则数据迁移可能会很慢。迁移包含多个 TB 的数据的集群可能需要几天时间。RA3 节点的数据传输完成速度更快。

优化操作速度

要缩短经典大小调整或快照和恢复操作所需的时间,请执行以下操作:

有关调整大小性能优化的更多信息,请参阅 Amazon Redshift 的十大性能优化技术。要使用 Amazon Redshift 控制台检查调整大小操作的状态,请在集群详细信息页面上选择状态选项卡。状态选项卡显示平均传输速率、已用时间和剩余时间。

故障排除

  • 在调整大小操作期间,您的表格将增加或减小。这是预料之中的情况。有关更多信息,请参阅为什么 Amazon Redshift 集群中的表使用的磁盘存储空间比预期的要多或少?
  • 如果您的集群在 AWS CLI 中的状态为 NONE,则目标集群仍在预配置中。当您的目标集群处于配置状态时,它尚未复制。配置目标集群后,状态将更改为 IN_PROGRESS
  • 如果您的 AWS CloudFormation StackSets 没有调整大小,并且收到了内部错误消息,请检查集群是否符合弹性大小调整的条件。错误消息类似于: “发生了内部错误。请稍后重试您的查询。” 之所以发生这种情况,是因为 CloudFormation 堆栈使用弹性大小调整,默认情况下设置了 Classic:false
  • 如果您收到错误消息“请选择更大的目标集群”,则说明您的数据无法放入目标集群。使用更多节点或其他节点类型来调整您的 Amazon Redshift 集群的大小。
  • Amazon Redshift 控制台的集群列表中选择取消调整大小,在调整大小操作完成之前将其取消。有关更多信息,请参阅快照、恢复和调整大小

调整大小后的集群的计费

  • 在调整大小操作期间,您需要为使用的集群付费。例如,在调整大小操作期间,您需要为源配置付费。调整大小完成后,您无需再为源配置付费。集群状态更改为可用后,系统会立即开始对目标配置进行计费。
  • 当您将较小的节点类型(large、xlarge)调整为较大的节点类型(8xlarge)时,您的集群中每个节点需要更多存储空间。每个节点的存储空间越多,运行 COMMIT 时写入的元数据就越多。因此,对于较大的节点,单个 COMMIT 操作的基础成本会更高。如果您同时运行多个小型 COMMIT 操作,则可能会看到性能下降。为了提高性能,可将多项更改合并为一个 COMMIT 操作。
  • 如果您购买了预留实例,则您的账单将取决于调整后的集群配置、预留节点类型和预留节点数量。有关更多信息,请参阅预留节点的工作原理

相关信息

调整 Amazon Redshift 中的集群大小

解决 Amazon Redshift 中的连接问题

使用 SQLWorkbench 和 psql 为 Amazon Redshift 构建高质量的基准测试

AWS 官方
AWS 官方已更新 8 个月前