弹性大小调整在 Amazon Redshift 中是如何工作的?

2 分钟阅读
0

我想对我的 Amazon Redshift 集群执行弹性大小调整。我想知道弹性大小调整是如何工作的,以及我可以使用哪些最佳实践。

简短描述

弹性大小调整不会对表进行排序,也不会回收磁盘空间。请运行 VACUUM 以对表进行排序并回收磁盘空间。弹性大小调整仅适用于使用 EC2-VPC 平台的 Amazon Redshift 集群。

经典大小调整相比,弹性大小调整完成操作需要的时间通常更少。在经典大小调整操作中,当 Amazon Redshift 从源集群复制数据时,将预置一个新集群。经典大小调整操作首先根据分配方式将数据分配到新的节点。然后,它会运行 ANALYZE 命令来更新表统计数据。

要调整单节点集群的大小,经典大小调整可能是更好的选择。弹性大小调整允许您在集群中添加或移除节点。但是,这可能会带来性能变化。要使节点切片与目标节点类型中的切片数量匹配,请使用经典大小调整。

以下配置支持单节点弹性大小调整:

  • 1 节点 dc2.large ↔ 1 节点 ra3.xlplus、2 节点 ra3.xlplus、2 节点 ra3.4xlarge
  • 1 节点 ra3.xlplus ↔ 2 节点 ra3.xlplus、2 节点 ra3.4xlarge

解决方法

弹性大小调整的工作原理

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

根据目标节点类型,弹性大小调整的工作方式可能会有所不同。检查目标节点类型是否与源节点类型相同。

要检查您的节点类型,请打开 Amazon Redshift 控制台。在导航窗格中,选择 Clusters(集群)。Clusters(集群)页面会在每个集群名称下显示节点类型。

您还可以运行 AWS CLI 命令 describe-clusters 来获取有关您的 Amazon Redshift 集群的详细信息:

aws redshift describe-clusters --region cluster_region

**注意:**请将 cluster_region 替换为您的集群的 AWS 区域。

目标节点类型与现有节点类型相同

当使用弹性大小调整调整集群大小时,Amazon Redshift 会自动将数据重新分配到新节点。

弹性大小调整通常可在几分钟内完成操作。当弹性大小调整在后台完成数据重新分配时,预计查询运行时间会略有增加。

**注意:**在元数据迁移期间,您的 Amazon Redshift 集群会在几分钟内暂时不可用。

目标节点类型与现有节点类型不同

如果您的节点类型已更改,Amazon Redshift 会先创建一个快照。然后,使用快照中的最新数据预置新的目标集群,并在后台将数据传输到新集群。在数据传输过程中,您的 Amazon Redshift 集群将以只读模式运行,并且所有写入操作都会被阻止。大小调整操作接近完成时,Amazon Redshift 会自动更新新集群的端点以匹配您现有集群的端点。然后,与原始集群的所有连接都将关闭。

DC2 和 DS2 节点计数限制

请注意针对 DC2 和 DS2 节点类型的以下限制:

  • 对于 dc2.large 或 ds2.xlarge 节点类型,请使用当前节点数量的一半或两倍。例如,您可以将拥有 6 个节点的集群的大小调整为 12 个节点或 3 个节点。
  • 对于 dc2.8xlarge、ds2.8xlarge 或 ra3.xlplus 节点类型,请使用节点数量的一半到两倍之间的数量。例如,您可以将拥有 6 个节点的集群的大小调整为 3、4、5、7、8、9、10、11、12 个节点。
  • 对于 ra3.16xlarge 或 ra3.4xlarge 节点类型,请使用当前节点数量的四分之一到四倍之间的数量。例如,您可以将拥有 8 个节点的 ra3 集群的大小调整为 2、3、4、5、6、7、9,最多 32 个节点。

弹性大小调整最佳实践

在对集群执行弹性大小调整时,请使用以下最佳实践:

  • 在调整集群大小之前,请激活自动快照创建手动快照
    **注意:**默认情况下,即使在删除集群之后,手动快照也会无限期保留。但是,Amazon Redshift 会在保留期结束时删除自动快照。
  • 运行 AWS CLI 命令 describe-node-configuration-options 以获取针对大小调整操作的节点配置选项:
    aws redshift describe-node-configuration-options --action-type resize-cluster --cluster-identifier cluster_name --region cluster_region
    **注意:**请将 cluster_name 替换为您的集群名称,将 cluster_region 替换为您的集群区域。
  • 在调整集群大小之前,对集群运行 VACUUM。弹性大小调整不会自动删除标记为删除的行。
  • 运行 resize-cluster 命令以指定所有节点配置更改:
    aws redshift resize-cluster --cluster-identifier  cluster_name --cluster-type multi-node --node-type target_node_type --number-of-nodes number_of_target_nodes --no-classic --region cluster_region
    **注意:**请将 cluster_name 替换为您的集群名称,将 target_node_type 替换为您的目标节点类型,将 number_of_target_nodes 替换为您的目标节点的数量,将 cluster_region 替换为您的集群的区域。

需要执行的其他操作

当在 Amazon Redshift 集群上执行弹性大小调整时,请执行以下操作:

  • 必须创建集群的快照
  • 在 Amazon Redshift 中启动弹性大小调整操作后,将无法取消该操作。请等待大小调整操作完成,然后再执行另一项大小调整操作或重新启动集群。
  • 确保新节点配置有足够的存储空间来存储现有数据。即使在添加节点时,新配置也可能会由于数据的重新分配方式而没有足够的存储空间。有关存储空间的详细信息,请参阅为什么 Amazon Redshift 预配的集群中的表使用的磁盘存储空间高于或低于预期?
  • 弹性大小调整操作可能会因数据切片分配不均而导致节点之间出现数据偏差。如果您在集群中遇到数据偏差,请改为执行经典大小调整。
  • 如果弹性大小调整失败,请检查快照是否完成。如果快照未在几分钟内完成,则大小调整操作可能会失败。
  • 您可以在执行大小调整操作时升级到 RA3 预留节点

相关信息

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

在几分钟内向上和向下扩展您的 Amazon Redshift 集群,以便在您需要时获得所需的性能

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