Amazon Redshift 中的集群管理概览 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Redshift 中的集群管理概览

创建集群后,您可以对其执行多个操作。操作包括调整大小、暂停、恢复、重命名和删除。

在 Amazon Redshift 中调整集群大小

随着您的数据仓库容量和性能需求的变化,您可以调整集群大小,以便充分利用 Amazon Redshift 的计算和存储选项。

调整大小操作有两种类型:

  • 弹性调整大小:您可以向集群添加节点,或从集群中移除节点。您还可以更改节点类型,如从 DS2 节点更改为 RA3 节点。弹性调整大小是一项快速操作,通常可在数分钟内完成。因此,我们建议将其作为首选项。当您执行弹性调整大小时,它会重新分发数据切片,这些数据切片是在每个节点中分配内存和磁盘空间的分区。弹性调整大小适用于以下情况:

    • 增加或减少现有集群中的节点,但不更改节点类型:这通常被称为就地调整大小。当您执行这种调整大小时,一些正在运行的查询会成功完成,但其他查询可能会作为该操作的组成部分而被删除。弹性调整大小可在数分钟内完成。

    • 更改集群的节点类型:当您更改节点类型时,将创建快照,并将数据从原始集群重新分发到由新节点类型组成的集群。完成后,将删除正在运行的查询。与就地调整大小一样,它很快即可完成。

  • 经典调整大小:您可以更改节点类型、节点数量或此两者,其方式与弹性调整大小相似。经典调整大小需要更多时间才能完成,但在节点计数发生变化或要迁移到的节点类型不在弹性调整大小范围内的情况下,它会很有用。例如,当节点计数的变化非常大时,此调整大小类型可能适用。您还可以使用经典调整大小来更改集群加密。例如,您可以使用它将未加密的集群修改为使用 Amazon KMS 加密。

计划调整大小:您可以为集群制定调整大小操作计划,使其纵向扩展以满足预期高使用率的要求,或者缩减其规模以节约成本。计划适用于弹性调整大小和经典调整大小。您可以在 Amazon Redshift 控制台上设置计划。有关更多信息,请参阅 Managing clusters using the console(使用控制台管理集群)下的 调整集群大小。还可以使用 Amazon CLI 或 Amazon Redshift API 操作来设置调整大小计划。有关更多信息,请参阅 Amazon CLI 命令参考中的 create-scheduled-actionAmazon Redshift API 参考中的 CreateScheduledAction

弹性调整大小

当您添加或移除相同类型的节点时,弹性调整大小操作包括以下阶段:

  1. 弹性调整大小操作将为集群制作快照。此快照始终包括节点的无备份表(如果适用)。(某些节点类型(如 RA3)没有无备份表。) 如果您的集群因禁用了自动快照而没有最近的快照,则备份操作可能会花费更长时间。(要最大程度地减少调整大小操作开始前的时间,我们建议您在开始调整大小操作之前启用自动快照或创建手动快照。) 如果在您启动弹性调整大小时,系统正在执行快照操作,若该快照操作未能在数分钟内完成,则调整大小可能会失败。有关更多信息,请参阅Amazon Redshift 快照

  2. 该操作将迁移集群元数据。集群将在数分钟内不可用。大多数查询将暂停,并且连接将保持打开状态。但是,某些查询可能会被删除。此阶段很短。

  3. 会话连接将恢复,并且查询将继续。

  4. 弹性调整大小操作会在后台将数据重新分发到节点切片。集群可用于读取和写入操作,但是某些查询可能需要更长的时间来运行。

  5. 在该操作完成后,Amazon Redshift 会发送一个事件通知。

当您使用弹性调整大小来更改节点类型时,它的工作方式与您增加或减少相同类型的节点时相似。首先,创建一个快照。使用该快照中的最新数据预调配新的目标集群,并在后台将数据传输到新集群。在此期间,数据是只读的。在大小调整接近完成时,Amazon Redshift 会将端点更新为指向新集群,并断开与原始集群的所有连接。

如果您有预留节点,例如 DS2 预留节点,则您可以在执行调整大小时升级到 RA3 预留节点。您可以在执行弹性调整大小或者使用控制台从快照还原时执行此操作。控制台将引导您完成此过程。有关升级到 RA3 节点的更多信息,请参阅升级到 RA3 节点类型

要使用 Amazon Redshift 控制台监控调整大小操作的进度,请选择 CLUSTERS(集群),然后选择要调整大小的集群以查看详细信息。

弹性调整大小操作不会对表进行排序或回收磁盘空间,因此,它不能替代 vacuum 操作。有关更多信息,请参阅对表执行 vacuum 操作

弹性调整大小操作具有以下限制:

  • 弹性大小调整和数据共享集群 - 如果您在作为数据共享创建者的集群上添加或缩减节点,则当 Amazon Redshift 迁移集群元数据时,您无法从使用者连接到该集群。同样,如果您执行弹性大小调整并选择新的节点类型,则当连接断开并转移到新的目标集群时,数据共享将不可用。在这两种类型的弹性大小调整中,创建者会有几分钟时间不可用。

  • 单节点集群:您不能将弹性调整大小用于从单节点集群调整大小,也不能将其用于调整大小到单节点集群。

  • 从共享快照传输数据:要在从共享快照传输数据的集群上运行弹性调整大小,必须至少有一个备份可供该集群使用。您可以在 Amazon Redshift 控制台快照列表中或通过 describe-cluster-snapshots CLI 命令或 DescribeClusterSnapshots API 操作查看备份。

  • 平台限制:弹性调整大小仅可用于使用 EC2-VPC 平台的集群。有关更多信息,请参阅在创建集群时使用 EC2-VPC

  • 存储注意事项:确保新的节点配置有足够的存储空间来存储现有数据。您可能需要添加其他节点或更改配置。

  • 源与目标集群大小:可以使用弹性调整大小将大小调整到的节点数量和类型的可能配置,取决于原始集群中的节点数量,和已调整大小的集群的目标节点类型。可以使用控制台确定可能的配置。您也可以运行带 action-type resize-cluster 选项的 describe-node-configuration-options Amazon CLI 命令。有关使用 Amazon Redshift 控制台进行大小调整的更多信息,请参阅调整集群大小

    以下示例 CLI 命令描述了可用的配置选项。在此示例中,名为 mycluster 的集群是一个 8 节点的 dc2.large 集群。

    aws redshift describe-node-configuration-options --cluster-identifier mycluster --region eu-west-1 --action-type resize-cluster

    此命令会返回一个选项列表,包括每个选项的建议节点类型、节点数和磁盘利用率。返回的配置根据特定的输入集群而不同。指定 resize-cluster CLI 命令的选项时,可以选择其中一种返回的配置。

  • 其他节点的上限:弹性调整大小对您可以添加到集群的节点有限制。例如,dc2 集群支持弹性调整大小,最大可将节点数量增加一倍。为了说明,您可以将一个节点添加到 4 节点 dc2.8xlarge 集群中,使其成为 5 节点集群,或者添加更多节点,直到达到 8 个为止。

    使用某些 ra3 节点类型,您最多可以将节点数增加到现有计数的四倍。具体来说,假设您的集群由 ra3.4xlarge 或 ra3.16xlarge 节点组成。然后,您可以使用弹性调整大小将 8 节点集群中的节点数增加到 32。或者,您可以选择低于限制的值。(在这种情况下,请记住,集群增长 4 倍的能力取决于原始集群的大小。)如果您的集群有 ra3.xlplus 节点,则限制为两倍。

    所有 ra3 节点类型都支持将节点数减少到现有计数的四分之一。例如,您可以将包含 ra3.4xlarge 节点的集群的大小从 12 个节点减少到 3 个节点,或者减少到高于最小值的数字。

    下表列出了支持弹性调整大小的每个节点类型的增长和减少限制。

    节点类型 增长限制 减少限制

    ra3.16xlarge

    4 倍(例如,从 4 个节点到 16 个节点)

    到数量的四分之一(例如,从 16 个节点到 4 个节点)

    ra3.4xlarge

    4 倍

    到数量的四分之一

    ra3.xlplus

    2 倍(例如,从 4 个节点到 8 个节点)

    到数量的一半

    dc2.8xlarge

    2 倍

    到数量的一半(例如,从 16 个节点到 8 个节点)

    dc2.large

    2 倍

    到数量的一半

    ds2.8xlarge

    2 倍

    到数量的一半

    ds2.xlarge

    2 倍

    到数量的一半

经典调整大小

经典调整大小用于处理集群大小或节点类型的更改不在弹性调整大小支持的规范范围内的情况。经典调整大小已经进行了性能改进,以便更快地完成大量数据的迁移(过去可能需要数小时或数天时间)。它通过在源集群与目标集群之间使用备份和还原操作来实现这一目标。它还使用更高效的分配,将数据合并到目标集群。

经典调整大小包含以下阶段:

  1. 从源集群到目标集群的初始迁移。当预调配新的目标集群时,Amazon Redshift 发送一个事件通知,告知大小调整已开始。它会重新启动现有集群,这会关闭所有连接。如果集群是数据共享的创建者,则这包括来自使用者的连接。重新启动后,该集群处于只读模式,数据共享将恢复。这些操作需要几分钟时间。接下来,将数据迁移到目标集群,并且读取和写入都可用。

  2. 使用后台工件将作为 Distribution Even(分配 Even)迁移的 Distribution Key(分配键)表重新转换为其原始分配方式。此阶段的持续时间取决于数据集的大小。有关更多信息,请参阅分配方式

    在此过程中,可对数据库进行读取和写入。查询性能可能会有所下降。

  3. 在调整大小过程即将完成时,Amazon Redshift 会将端点更新到目标集群,并将删除与源集群的所有连接。目标集群承担数据共享的创建者角色。

  4. 在调整大小操作完成后,Amazon Redshift 会发送一个事件通知。

您可以在 Amazon Redshift 控制台上查看调整大小的进度。调整集群大小所用的时间取决于数据量。

注意

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

弹性调整大小与经典调整大小的对比

下表对比了两种调整大小类型之间的行为。

弹性调整大小与经典调整大小的对比
行为 弹性调整大小 经典调整大小 注释
系统数据留存 弹性调整大小将保留系统日志数据。 经典调整大小不会保留系统表和数据。 如果您在源集群中启用了审计日志记录,则您可以在调整大小后继续访问 Amazon S3 或 CloudWatch 中的日志。您可以根据数据策略的规定保留或删除这些日志。
更改节点类型

当节点类型不变时弹性调整大小:就地调整大小,并将保留大多数查询。

在选择新节点类型的情况下弹性调整大小:将创建新集群。在调整大小过程完成后,将删除查询。

经典调整大小:将创建新集群。在调整大小过程中将删除查询。
会话和查询留存 当源集群和目标集群中的节点类型相同时,弹性调整大小将保留会话和查询。如果您选择新的节点类型,则将删除查询。 经典调整大小不会保留会话和查询。将删除查询。 在删除查询后,预计会出现一些性能下降的情况。最好是在轻度使用期间执行调整大小操作。
表排序 表格不会作为调整大小操作的组成部分进行排序。 表格不会作为调整大小操作的组成部分进行排序。 Amazon Redshift 在执行调整操作时不会对表进行排序,因此现有的排列顺序将保持不变。在您调整集群大小时,Amazon Redshift 会将数据库表分配至新的节点,然后运行 ANALYZE 命令来更新统计数据。该服务不会传输标记为删除的行,因此,如果您需要重新对表进行排序,则只需运行 VACUUM 命令即可。有关更多信息,请参阅 《Amazon Redshift 数据库开发人员指南》中的对表执行 vacuum 操作
取消调整大小操作

您无法取消弹性调整大小。

您可以在经典调整大小操作完成之前取消该操作,方法是在 Amazon Redshift 控制台中从集群详细信息中选择 Cancel resize(取消调整大小)。

取消调整大小操作所需的时间取决于取消时调整大小操作所处的阶段。在取消操作完成前,如果您这样做,集群将不可用。如果调整大小操作处于最后阶段,您将无法取消。

快照、还原和调整大小

弹性调整大小是调整 Amazon Redshift 集群大小的最快方法。如果弹性调整大小操作不适合您,并且您需要对集群进行近乎恒定的写入访问,则可以使用下一部分中所述的快照和还原操作以及经典调整大小。如果采用此方法,在切换后,您必须手动将在制作快照后写入源集群的所有数据都复制到目标集群中。根据复制用时,您可能需要重复执行此操作多次,直到两个集群中的数据相同。然后,您可以切换到目标集群。在目标集群拥有完整数据集之前,此过程可能会对现有查询产生负面影响。不过,它能最大程度地缩短您无法写入数据库的时间。

快照、还原和调整大小方法使用以下流程:

  1. 为您的现有集群制作快照。现有集群就是源集群。

  2. 记下制作快照的时间。这样做意味着,您稍后可确定需要重新运行提取、事务处理和加载 (ETL) 流程的时间点,从而将制作快照后写入的所有数据都加载到目标数据库中。

  3. 将快照还原到新集群中。这个新集群就是目标集群。验证目标集群中包含示例数据。

  4. 调整目标集群的大小。为目标集群选择新的节点类型、节点数和其他设置。

  5. 查看为源集群制作快照后通过 ETL 流程加载的数据。请确保按相同顺序将相同的数据重新加载到目标集群中。如果您的数据正在不断加载,请重复执行此流程多次,直到源集群和目标集群中的数据相同为止。

  6. 停止在源集群上运行的所有查询。为此,您可以重启集群,或以超级用户的身份登录并使用 PG_CANCEL_BACKENDPG_TERMINATE_BACKEND 命令。重启集群是确保集群不可用的最简单方法。

  7. 重命名源集群。例如,将其从 examplecluster 重命名为 examplecluster-source

  8. 重命名目标集群,使用源集群在重命名之前的名称。例如,将目标集群从之前的名称重命名为 examplecluster。此后,使用包含 examplecluster 的端点的所有应用程序都会连接到目标集群。

  9. 在切换到目标集群后删除源集群,并验证所有流程均可按预期正常工作。

或者,您可以在将数据重新加载到目标集群之前重命名源集群和目标集群。如果您不要求任何关联系统和报告立即与目标集群中的相应内容保持同步,则此方法将有效。在这种情况下,步骤 6 将移至前述流程的最后。

仅当您希望应用程序继续使用相同的端点连接到集群时,才需要执行重命名流程。如果您没有此要求,则可以更新连接到集群的任何应用程序,以使用目标集群的端点,而无需重命名集群。

重新使用集群名称具有诸多优势。首先,您无需更新应用程序的连接字符串,因为端点始终保持不变,即使基础集群发生改变也是如此。其次,相关项(例如 Amazon CloudWatch 警报和 Amazon Simple Notification Service (Amazon SNS) 通知)与集群名称相关联。这种关联意味着,您可以继续使用已为集群设置的相同警报和通知。在您希望灵活调整集群大小而无需重新配置相关项目(如警报和通知)的生产环境中,继续使用集群名称关系重大。

获取领导节点 IP 地址

如果您的集群是公有的且位于 VPC 中,则在调整大小后,该集群将保留领导节点的弹性 IP 地址 (EIP)。如果您的集群是私有的且位于 VPC 中,则在调整大小后,该集群将保留领导节点的私有 IP 地址。如果您的集群没有位于 VPC 中,则在调整大小操作过程中,系统将针对领导节点分配新的公有 IP 地址。

要获取集群的领导节点 IP 地址,请使用 dig 实用工具,如下所示。

dig mycluster.abcd1234.us-west-2.redshift.amazonaws.com

领导节点 IP 地址位于结果中的 ANSWER SECTION 末尾,如下所示。

暂停和恢复集群

如果您的集群只需在特定时间可用,则可以暂停该集群,然后再恢复它。当集群暂停时,按需计费将暂停。仅集群的存储会产生费用。有关定价的更多信息,请参阅 Amazon Redshift 定价页面

如果您暂停集群,Amazon Redshift 将创建快照、开始终止查询并将集群置于暂停状态。如果您删除已暂停的集群而未请求最终快照,则无法还原该集群。在暂停或恢复操作启动后,无法取消或回滚该操作。

您可以在新的 Amazon Redshift 控制台上暂停和恢复集群,也可以使用 Amazon CLI 或 Amazon Redshift API 操作暂停和恢复集群。

可以计划用于暂停和恢复集群的操作。在使用新的 Amazon Redshift 控制台创建暂停和恢复的定期计划时,将为您选择的日期范围创建两个计划操作。计划操作名称的后缀为 -pause-resume。名称的总长度必须在计划操作名称的最大大小范围内。

无法暂停以下类型的集群:

  • EC2-Classic 集群。

  • 不活动的集群,例如,当前正在修改的集群。

  • 硬件安全模块 (HSM) 集群。

  • 已禁用自动快照的集群。

在决定暂停集群时,请考虑以下事项:

  • 与集群的连接或针对集群的查询不可用。

  • 在 Amazon Redshift 控制台上看不到已暂停集群的查询监控信息。

  • 无法修改已暂停的集群。未对集群执行任何计划操作。其中包括创建快照、调整集群大小和集群维护操作。

  • 未创建硬件指标。如果已设置指标缺失警报,请更新 CloudWatch 警报。

  • 无法将已暂停集群的最新自动快照复制到手动快照。

  • 当正在暂停集群时,无法恢复集群,直至暂停操作完成。

  • 如果您暂停集群,则计费将暂停。不过,暂停操作通常在 15 分钟内完成,具体取决于集群的大小。

  • 审计日志已存档,无法在恢复时进行还原。

  • 暂停集群后,跟踪和日志可能无法用于对暂停之前出现的问题进行故障排除。

  • 恢复时不会还原集群上的无备份表。有关无备份表的更多信息,请参阅从快照中排除表

在恢复集群时,请考虑以下事项:

  • 已恢复集群的集群版本将根据集群的维护时段更新为维护版本。

  • 如果删除与已暂停集群关联的子网,则您的网络可能会不兼容。在此情况下,将从最新的快照还原您的集群。

  • 如果您在集群暂停时删除弹性 IP 地址,则会请求新的弹性 IP 地址。

  • 如果 Amazon Redshift 无法使用集群之前的弹性网络接口恢复集群,Amazon Redshift 会尝试分配一个新的弹性网络接口。

  • 在恢复集群时,您的节点 IP 地址可能会发生更改。对于从 Secure Shell (SSH) 执行 COPY 或从 Amazon EMR 执行 COPY 等功能,您可能需要更新 VPC 设置以支持这些新的 IP 地址。

  • 如果您尝试恢复未暂停的集群,恢复操作将返回错误。如果恢复操作是计划操作的一部分,请修改或删除计划操作以防止将来出现错误。

  • 根据集群的大小,可能需要几分钟来恢复集群,然后才能处理查询。此外,在恢复完成后重新补充集群时,查询性能可能会在一段时间内受到影响。

重命名集群

如果您希望集群使用其他名称,则可以对其进行重命名。由于连接到集群的端点包含集群名称(也称集群标识符),因此重命名集群之后,端点也会改为使用新名称。例如,如果您的集群名为 examplecluster,您将其重命名为 newcluster,则端点会改为使用 newcluster 标识符。连接至集群的所有应用程序都必须使用新的端点进行更新。

如果您希望更改应用程序所连接到的集群,但又不想更改这些应用程序中的端点,则您可以对集群进行重命名。在此情况下,您必须先重命名原始集群,然后更改第二个集群,以重新使用原始集群重命名之前的名称。之所以这样做,是因为集群标识符在您的账户和区域中必须是独一无二的,因此原始集群和第二个集群的名称不能相同。如果从快照中还原集群,并且不希望更改任何从属应用程序的连接属性,则可能会这样做。

注意

如果您删除原始集群,则还需删除任何不需要的集群快照。

当您重命名集群时,在该过程结束之前,集群的状态会变为 renaming。该集群使用的旧 DNS 名称会被立即删除,但可能会在缓存中保留几分钟。重命名后的集群的新 DNS 名称在大约 10 分钟内生效。重命名后的集群在新名称生效之前不可用。系统会重新启动集群,且集群的所有现有连接都会被删掉。此过程完成后,端点会改为使用新名称。因此,您应该在开始重命名之前停止运行查询,并在重命名完成后恢复运行。

系统将会保留集群快照,而且与集群相关联的所有快照在集群重命名之后仍与该集群相关联。例如,假设您的一个集群服务于生产数据库且该集群有若干个快照。如果重命名该集群,然后在生产环境中将其替换为一个快照,则这些现有快照仍与重命名后的集群相关联。

Amazon CloudWatch 警报和 Amazon Simple Notification Service (Amazon SNS) 事件通知与集群的名称相关联。如果您重命名该集群,则需要相应地对这些内容进行更新。您可以在 CloudWatch 控制台中更新 CloudWatch 警报,也可以在 Amazon Redshift 控制台中的 Events(事件)窗格上更新 Amazon SNS 事件通知。集群的加载和查询数据在重命名前后都会继续显示数据。但是,性能数据则在重命名过程完成后重置。

有关更多信息,请参阅修改集群

关闭和删除集群

如果您希望集群停止运行且不再产生费用,则可以将其关闭。在关闭集群时,您可以选择创建一个最终快照。如果您创建最终快照,则 Amazon Redshift 会在您将集群关闭之前为其创建一个手动快照。如果您希望恢复运行集群和查询数据,则可以在之后还原该快照。

如果您不再需要集群及其数据,则可以将其关闭,而不创建最终快照。在这种情况下,会永久删除该集群及其数据。有关关闭和删除集群的更多信息,请参阅删除集群

无论在您关闭集群时是否有最终手动快照,与该集群相关联的所有自动快照都会在您关闭集群后删除。与该集群相关联的所有手动快照都会保留下来。如果您在关闭集群时没有其他正在运行的集群,或者正在运行的 Amazon Redshift 集群超出了向您提供的免费可用存储,则您需要针对保留下来的所有手动快照(包括可选的最终快照)按 Amazon Simple Storage Service 存储费率支付相应的费用。有关快照存储费用的更多信息,请参阅 Amazon Redshift 定价页面