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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon Redshift 中管理集群的概述

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

在 Amazon Redshift 中调整集群大小

随着您的数据仓库容量和性能需求的变化或增长,您可以调整集群大小,以便充分利用 Amazon Redshift 服务所提供的计算和存储选项。您可以使用弹性调整大小通过更改节点类型和节点数来扩展集群。或者,如果无法通过弹性调整大小来配置新节点,您可以使用经典调整大小。

要调整集群大小,请使用以下方法之一:

  • 弹性调整大小 – 使用弹性调整大小以更改节点类型和/或节点数量。如果仅更改节点数,则查询将暂时暂停,如果可能,连接将保持打开状态。在调整大小操作期间,集群是只读的。通常情况下,弹性调整大小需要 10 – 15 分钟。我们建议尽可能使用弹性调整大小。

  • 经典调整大小 – 使用经典调整大小以更改节点类型和/或节点数量。当您将大小调整为无法通过弹性调整大小实现的配置时,请选择此选项。一个示例是进/出单节点集群。在调整大小操作期间,集群是只读的。通常情况下,经典调整大小需要 2 小时到 2 天或更长时间,具体取决于数据量大小。

  • 快照、还原以及调整大小 – 要使集群在经典调整大小期间可用,可以先创建现有集群的副本,然后调整新集群的大小。

可以按计划调整集群大小(弹性调整大小和经典调整大小)。在使用新的 Amazon Redshift 控制台时,可以设置计划来调整集群大小。有关更多信息,请参阅调整集群大小。还可以使用 AWS CLI 或 Amazon Redshift API 操作来设置调整大小计划。有关更多信息,请参阅 https://docs.amazonaws.cn/cli/latest/reference/redshift/create-scheduled-action.html 中的 create-scheduled-actionAWS CLI Command Reference 或 CreateScheduledAction 中的 。Amazon Redshift API Reference

弹性调整大小

弹性调整大小是调整集群大小的最快方法。您可以使用弹性调整大小来添加或删除节点,并更改现有集群的节点类型。

当使用弹性调整大小调整具有相同节点类型的集群的大小时,它会自动将数据重新分发给新节点。在这种情况下,因为它不会创建新集群,所以弹性调整大小操作通常会在几分钟内快速完成。在后台重新分配数据时,您可能会发现某些查询的执行时间略有增加。弹性调整大小操作在以下阶段发生:

  1. 弹性调整大小操作将为集群制作快照。

    弹性调整大小操作创建的快照包含无备份表。如果您的集群因禁用了自动快照而没有最近的快照,则备份操作将花费更长时间。要最大程度地减少调整大小操作开始前的时间,我们建议您在开始弹性调整大小操作之前启用自动快照或创建手动快照。当您开始弹性调整大小并且当前正在进行一个快照操作时,如果快照操作未在几分钟内完成,弹性调整大小可能会失败。有关更多信息,请参阅Amazon Redshift 快照

  2. 当弹性调整大小操作迁移集群元数据时,集群将暂时不可用。

    此阶段很短,最多只有几分钟。Amazon Redshift 将保持会话连接,并且查询保持已排队状态。一些会话和查询可能会超时。

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

  4. 弹性调整大小操作在后台数据重新分配到节点切片。

    集群可用于读取和写入操作,但是一些查询可能需要更长的时间来执行。

当使用弹性调整大小来调整集群大小以更改节点类型时,会创建快照。将使用快照中的最新数据为您预配置新集群。在将数据传输到新集群时,集群暂时不可写入。它可进行读取。在后台填充新集群。在完全填充新集群后,查询应达到最佳性能。在调整大小过程即将完成时,Amazon Redshift 会对新集群的终端节点进行更新,并且与原始集群之间的所有连接都将终止。

在调整大小操作完成后,Amazon Redshift 会发送一个事件通知。之后您便可以连接到新集群并恢复运行读取和写入查询。

注意

Amazon Redshift 有新的控制台可用。根据您使用的控制台,选择新控制台原始控制台说明。默认情况下会打开新控制台说明。

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

要使用 Amazon Redshift 控制台监控弹性调整大小操作的进度,请选择集群详细信息页面上的 Status (状态) 选项卡。

您不能在单节点集群上使用弹性调整大小。

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

弹性调整大小操作不会对表进行排序或回收磁盘空间,因此,它不能替代 vacuum 操作。经典调整大小操作将表复制到新的集群,以便减少对 vacuum 的需求。有关更多信息,请参阅对表执行 vacuum 操作

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

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

  • 新的节点配置必须为现有数据提供足够的存储空间。甚至在添加节点时,由于数据的重新分配方式,新配置可能没有足够的存储空间。

  • 可将大小调整到的可能配置(节点数量和节点类型)取决于原始集群中的节点数和已调整大小的集群的目标节点类型。要确定可用的配置,您可以将 Amazon Redshift 控制台或 describe-node-configuration-options AWS CLI 命令与 action-type resize-cluster 结合使用。 有关使用 Amazon Redshift 控制台调整大小的更多信息,请参阅调整集群大小

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

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

    此命令会返回一个选项列表,包括每个选项的建议节点类型、节点数和磁盘利用率。返回的配置可能因特定的输入集群而异。在指定 resize-cluster AWS CLI 命令的选项时,您可以选择返回的配置之一。

注意

有些情况下,您无法使用弹性调整大小功能将节点数更改为特定值。例如,如果您使用弹性调整大小功能将 4 节点 dc2.8xlarge 集群更改为 6 节点集群,然后再更改为 8 节点集群,则已达到此 dc2.8xlarge 集群的最大节点数 8 个节点。要超过此 8 节点限制(例如达到 10 个节点),您可以使用 经典调整大小 增加 dc2.8xlarge 集群的节点数,达到 10 个节点。在本例中,也可使用经典调整大小功能将最大节点数提高到 20,以便将来对此集群执行弹性调整大小操作。

经典调整大小

利用经典调整大小操作,您的数据会从源集群中的一个或多个计算节点并行复制到目标集群中的一个或多个计算节点。调整大小所需要的时间取决于较小集群中的数据量和节点数。可能需要几小时到几天或更长时间。

经典调整大小的持续时间取决于下列几个因素:

  • 源集群上的工作负载。

  • 要传输的表的数量和大小。

  • 数据在计算节点和切片之间分布的均匀程度。

  • 源集群和目标集群中的节点配置。

当您开始执行调整大小操作时,Amazon Redshift 会将现有集群置于只读模式,直到调整完毕为止。在此期间,您只能运行从数据库读取的查询。无法运行任何写入数据库的查询,包括读写查询。有关更多信息,请参阅 https://docs.amazonaws.cn/redshift/latest/dg/c_write_readwrite.html 中的写入和读写操作Amazon Redshift Database Developer Guide。

注意

要调整大小并最大程度地减小对生产的影响,可以使用下一部分(即快照、还原和调整大小)中的步骤。您可以使用这些步骤为您的集群创建一个副本并调整副本的大小,然后在调整大小操作完成后将连接终端节点切换到调整大小后的集群。

经典调整大小方法以及快照和还原方法都会将用户表和数据复制到新集群中;它们不会保留系统表和数据。借助经典调整大小操作或快照和还原操作,如果您在源集群中启用了审计日志记录,则能继续访问 Amazon S3 中的日志。使用这些方法,您仍可在删除源集群后访问日志。您可以根据数据策略的规定保留或删除这些日志。弹性调整大小操作将保留系统日志表。

在 Amazon Redshift 将源集群置于只读模式后,它会预配置新集群(即目标集群)。它使用您为节点类型、集群类型和节点数量指定的信息来完成此操作。然后,Amazon Redshift 会将相关数据从源集群复制到目标集群中。完成这一操作后,所有连接都会切换为使用目标集群。如果您在该切换过程中有任何正在进行的查询,则您的连接将会丢失,且您必须在目标集群上重新启动相关查询。您可以在 Amazon Redshift console上查看调整大小的进度。

Amazon Redshift 在执行调整操作时不会对表进行排序,因此现有的排列顺序将保持不变。在您调整集群大小时,Amazon Redshift 会根据数据库表的分配方式将其分配至新的节点,然后运行 ANALYZE 命令来更新统计数据。该服务不会传输标记为删除的行,因此,如果您需要重新对表进行排序,则只需运行 VACUUM 命令即可。有关更多信息,请参阅 中的对表执行 vacuum 操作Amazon Redshift Database Developer Guide。

在经典调整大小操作完成前,您可以在 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) 通知)与集群名称相关联。这种关联意味着,您可以继续使用已为集群设置的相同警报和通知。在您希望灵活调整集群大小而无需重新配置相关项目(如警报和通知)的生产环境中,继续使用集群名称关系重大。

调整集群大小的详细信息

如果在最初配置集群后需要更改存储和性能,那么您可以调整集群的大小。您可以通过添加或删除节点来向内扩展或向外扩展集群。此外,您还可以通过指定不同的节点类型来向上扩展或向下扩展集群。

例如,您可以添加更多节点、更改节点类型、将单节点集群更改为多节点集群,或将多节点集群更改为单节点集群。但是,您必须确保生成的集群足够大,可容纳现有的数据;否则调整大小会失败。在使用此 API 时,您必须指定节点类型、节点大小和节点数,即使您只更改其中一个属性。

下面介绍了调整大小的过程:

  1. 如果您启动了调整大小的过程,Amazon Redshift 会发送一个事件通知,确认调整大小的请求,并开始配置新的(目标)集群。

  2. 当配置新的(目标)集群时,Amazon Redshift 发送一个事件通知通报调整大小已开始,然后以只读模式重新启动您现有的(源)集群。重新启动集群将终止与集群之间的所有现有连接。所有未提交的事务(包括 COPY)都将回滚。当该集群处于只读模式时,您可以运行读取查询,而不能运行写入查询。

  3. Amazon Redshift 开始将数据从源集群复制到目标集群中。

  4. 调整大小的过程快要完成时,Amazon Redshift 会对目标集群的终端节点进行更新,并且与源集群之间的所有连接都将终止。

  5. 在调整大小完成后,Amazon Redshift 将发生一个事件通知,通报调整大小已完成。之后您便可以连接到目标集群并恢复运行读取和写入查询。

当您调整集群的大小时,该集群在调整大小完成之前将一直保持只读模式。您可以在 Amazon Redshift console上查看调整大小的进度。调整集群大小所用的时间取决于各个节点中的数据量。通常情况下,调整大小的过程从几小时到一天不等,数据量较大的集群可能需要更长时间。之所以出现这种情况,是因为数据从源集群上的各个节点并行复制到目标集群的节点中。有关调整集群大小的更多信息,请参阅调整集群大小

Amazon Redshift 在调整大小操作期间不会对表进行排序。当您调整集群大小时,Amazon Redshift 会根据其分配方式将数据库表分配至新的计算节点,并通过运行 ANALYZE 来更新统计数据。该服务不会传输标记为删除的行,因此,您仅需在要重新对表进行排序时运行 VACUUM。有关更多信息,请参阅 https://docs.amazonaws.cn/redshift/latest/dg/t_Reclaiming_storage_space202.html 中的对表执行 vacuum 操作Amazon Redshift Database Developer Guide。

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

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

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

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

暂停和恢复集群

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

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

您可以在新的 Amazon Redshift 控制台(不是原始控制台)上暂停和恢复集群,也可以使用 AWS 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 定价页面