跳至内容

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

2 分钟阅读
0

我想调整 Amazon Redshift 集群的大小,并想了解调整大小对性能和账单的影响。

简短描述

要调整集群大小,请使用弹性大小调整或经典大小调整。如果您的集群符合条件,则最佳做法是使用弹性大小调整。如果您的集群不符合条件,请使用经典大小调整。

解决方法

确定您的集群是否符合条件

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

要验证您的集群是否符合弹性大小调整的条件,请运行 describe-node-configuration-options AWS CLI 命令:

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

**注意:**请将 example-cluster-id 替换为您的集群 ID。

如果集群符合弹性大小调整的条件,则输出将类似于以下内容:

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

如果集群不符合弹性大小调整的条件,则输出将类似于以下内容:

{
  "NodeConfigurationOptionList": []
}

缩短操作时间

当您对具有相同节点类型的集群使用弹性大小调整时,该操作不会创建新集群,且能快速完成。

使用经典大小调整时,操作时间基于以下因素:

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

要缩短经典大小调整的持续时间,请执行以下操作:

  • 迁移到 RA3 节点类型
  • 识别并修复偏斜的表。要识别偏斜的表,请运行 AWS Labs 表检查器脚本。有关详细信息,请参阅 GitHub 网站上的 table_inspector。要修复偏斜的表,请选择适当的分配密钥
  • 删除未使用的表。要识别未使用的表,请运行 AWS Labs 未扫描的表摘要脚本。有关详细信息,请参阅 GitHub 网站上的 unscanned_table_summary
    **注意:**未扫描的表摘要仅显示过去 2-5 天的最新历史记录。要捕获较长时间段的使用数据,请使用系统对象持久化实用程序。有关详细信息,请参阅 GitHub 网站上的 SystemTablePersistence
  • 识别缺失的表数据。要识别缺失的表数据,请使用 AWS Labs missing_table_stats 脚本。有关详细信息,请参阅 GitHub 网站上的 missing_table_stats。然后,对这些表运行 ANALYZE 命令。

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

调整集群大小

使用弹性大小调整来更改集群的节点类型和/或节点数量。

当弹性大小调整无法更改集群大小或节点时,请使用经典大小调整

对调整大小操作进行故障排除

在调整大小操作期间,您的表可能会增大或缩小。有关详细信息,请参阅为什么 Amazon Redshift 预置集群中的表使用的磁盘存储空间高于或低于预期?

如果您的集群在 AWS CLI 中的状态为 NONE,则表明 Amazon Redshift 仍在预置目标集群。在预置阶段完成之前,您的目标集群不会进行复制。当 Amazon Redshift 完成目标集群的预置后,状态将更改为 IN_PROGRESS

如果您的 AWS CloudFormation StackSets 无法调整大小,且您收到了内部错误消息,请检查您的集群是否符合弹性大小调整的条件。错误消息类似于: “An internal error has occurred.Please try your query again at a later time.” 出现此错误是因为 CloudFormation 堆栈使用了弹性大小调整,且默认设置了 Classic:false

如果您收到错误消息“Please choose a larger target cluster”,则说明您的数据无法放入目标集群。使用更多节点或其他节点类型来调整您的 Amazon Redshift 集群的大小。

要在经典大小调整操作完成之前取消该操作,请从 Amazon Redshift 控制台的集群列表中选择 Cancel resize(取消调整大小)。

调整大小后的集群的计费

在调整大小操作期间,AWS 会对您可用的集群进行计费。例如,在调整大小操作期间,AWS 会对源配置进行计费。调整大小完成后,AWS 不再对源配置进行计费。集群状态更改为 Available(可用)后,系统会立即开始对目标配置进行计费。

当您将较小的节点类型(例如 large 或 xlarge)调整为较大的节点类型(例如 8xlarge)时,您的集群中每个节点需要更多存储空间。每个节点的存储空间越多,运行 COMMIT 操作时写入的元数据就越多。因此,对于较大的节点,单个 COMMIT 操作的基础成本会更高。如果您同时运行多个小型 COMMIT 操作,则可能会看到性能下降。为了提高性能,请将多项更改合并为一个 COMMIT 操作。

如果您购买了预留实例,则您的账单将取决于调整后的集群配置、预留节点类型和预留节点数量。有关详细信息,请参阅预留节点的工作方式

相关信息

解决 Amazon Redshift 中的连接问题

Building high-quality benchmark tests for Amazon Redshift using SQLWorkbench and psql(使用 SQLWorkbench 和 psql 为 Amazon Redshift 构建高质量的基准测试)

集群操作

AWS 官方已更新 6 个月前