Amazon Redshift
管理指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

教程:在 Amazon Redshift 中调整群集大小

概述

随着您的数据仓库容量和性能需求的变化或增长,您可以调整群集大小,以便充分利用 Amazon Redshift 服务所提供的计算和存储选项。您可以通过更改节点数来向内扩展或向外扩展群集。或者,您还可以通过指定不同的节点类型来向上扩展或向下扩展群集。您可以使用下列方法之一来调整群集大小:

  • 针对现有群集使用调整大小操作。

  • 使用快照和还原操作为现有群集创建副本。然后,调整新群集的大小。

使用调整大小操作的方法与使用快照和还原操作的方法都会将用户表和数据复制到新群集中,但不会对系统表和数据执行任何操作。如果您在源群集中启用了审计日志记录,那么您将能够继续访问 Amazon Simple Storage Service (Amazon S3) 中的日志,甚至在您删除源群集后也是如此。您可以根据数据策略的规定保留或删除这些日志。

调整大小操作概览

调整大小操作是调整群集大小的首选方法,因为这种方法最简单。执行调整大小操作时,您的数据会从源群集中的一个或多个计算节点被并行复制到目标群集中的一个或多个计算节点。调整大小所需要的时间取决于较小群集中的数据量和节点数。因此,时间从几小时到几天不等。

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

注意

如果您希望在调整大小时将对生产的影响降至最低,则可以使用以下部分“快照、还原和调整大小操作概览”为您的群集创建一个副本并调整副本的大小,然后在调整完毕后将连接终端节点切换到调整后的群集。

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

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

要演练使用调整大小操作调整 Amazon Redshift 群集大小的流程,请参阅教程:使用调整大小操作调整群集大小

快照、还原和调整大小操作概览

如上一部分所述,使用调整大小操作调整群集大小所需要的时间在很大程度上取决于群集中的数据量。在调整大小时,您无法在数据库中执行写入或读写操作,因此您应确定是要使用调整大小操作,还是要使用替代方法(可缩短群集处于只读模式的时间)。

如果您需要对 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) 通知等相关项目与群集名称相关联,因此您可以继续使用已为群集设置的相同警报和通知。在您希望灵活调整群集大小而无需重新配置相关项目(如警报和通知)的生产环境中,继续使用群集名称关系重大。

要演练使用快照、还原和调整大小操作调整 Amazon Redshift 群集大小的流程,请参阅教程:使用快照、还原和调整大小操作调整群集大小