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 通过使用加密的安全套接字层 (SSL) 连接,在 Amazon S3 内部存储这些快照。如果您需要从快照还原,Amazon Redshift 会创建一个新群集并从您指定的快照导入数据。

当您从快照还原时,Amazon Redshift 将创建一个新群集并使该新群集在所有数据都已加载前可用,从而使您可以立即开始查询新群集。该群集将按需流式传输来自快照的数据以响应活动查询,然后在后台加载剩余的数据。

Amazon Redshift 会定期拍摄快照,并跟踪自上次快照拍摄以来群集发生的增量变化。Amazon Redshift 保留从快照还原群集所需的全部数据。

您可以通过以下方式监控快照的进度:在 AWS 管理控制台中查看快照详细信息,或者调用 CLI 中的 describe-cluster-snapshotsDescribeClusterSnapshots API 操作。对于正在进行的快照,通过上述方式可以看到增量快照的大小、传输速率、已用时间以及估计的剩余时间等信息。

Amazon Redshift 为快照提供的免费存储容量与您群集的存储容量相当,直到您删除该群集。当您达到免费快照存储限额后,就需要按标准费率支付任何额外存储费用。因此,您不仅需要估计需要保留自动快照多少天并相应地配置自动快照的保留期,还需删除所有不再需要的手动快照。有关定价信息,请转到 Amazon Redshift 产品详细信息页面

自动快照

当为群集启用了自动快照时,Amazon Redshift 将定期拍摄该群集的快照,通常为每 8 小时一次或每个节点每次发生 5 GB 的数据更改后,或以先达到者为准。当您创建群集时,自动快照默认处于启用状态。系统会在保留期结束时删除这些快照。默认保留期为一天;不过,您可以使用 Amazon Redshift 控制台对其进行修改,也可以使用 Amazon Redshift API 以编程方式对其进行修改。

要禁用自动快照,只需将保留期设置为零即可。如果您禁用自动快照,则 Amazon Redshift 会停止拍摄快照并删除相应群集的任何现有自动快照。

只有 Amazon Redshift 可以删除自动快照,您无法手动将其删除。Amazon Redshift 会在下列情况下删除自动快照:快照的保留期结束时、您禁用了自动快照或您删除了相应群集。Amazon Redshift 保留最新的自动快照,直到您禁用自动快照或删除群集。

如果您想要将自动快照保留更长时间,则可以创建一份副本作为手动快照。自动快照会保留至保留期结束;而相应的手动快照在您将其手动删除之前将会一直保留。

手动快照

无论您是否启用自动快照,都可以随时拍摄手动快照。Amazon Redshift 一定不会自动删除手动快照。即使您删除相应群集,手动快照也会保留下来。

由于手动快照会产生存储费用,因此当您不再需要此类快照时,务必将其手动删除。如果您删除某个手动快照,则无法启动任何引用该快照的新操作。不过,如果某个还原操作正在进行中,则该还原操作会运行完成。

Amazon Redshift 设有配额,用以限制您能够创建的手动快照的总数;该配额因不同的 AWS 账户及不同的区域而异。AWS 服务限制中列出了默认的配额。

从快照中排除表

默认情况下,所有用户定义的永久表都包含在快照中。如果表(如暂存表)不需要备份,您可以显著降低创建快照并从快照还原所需的时间。您还可以使用无备份表减小在 Amazon S3 上占用的存储空间。要创建无备份表,请在创建该表时包含 BACKUP NO 参数。有关更多信息,请参阅 Amazon Redshift Database Developer Guide 中的 CREATE TABLECREATE TABLE AS

将快照复制到另一个区域

您可以配置 Amazon Redshift,以将群集的快照(自动或手动)自动复制到另一个区域。如果某个快照是在群集的主要区域中创建的,则该快照将复制到辅助区域;这两种区域分别称为源区域目标区域。通过在另一个区域中存储快照副本,您能够从最新数据(如果有任何数据影响主要区域)还原群集。您可以配置群集,一次仅将快照复制到一个目标区域。有关 Amazon Redshift 区域的列表,请参阅 Amazon Web Services 一般参考 中的区域和终端节点

如果您将 Amazon Redshift 配置为将快照自动复制到另一个区域,则需要指定要将快照复制到哪个目标区域。对于自动快照,您也可以指定此类快照应在目标区域中保留的保留期。自动快照复制到目标区域且达到保留期之后,便会从目标区域中删除,以确保您的快照使用量比较低。如果您希望自动快照在目标区域中保留更短时间或更长时间,则可以更改此保留期。

您为复制到目标区域的自动快照设置的保留期与源区域中的自动快照的保留期无关。复制的快照的默认保留期为七天。该七天保留期仅适用于自动快照。源区域或目标区域中的保留期均不影响手动快照,此类快照在您将其手动删除之前将会一直保留。

您可以随时禁用群集的自动快照复制功能。当您禁用此功能时,快照将不再从源区域复制到目标区域。复制到目标区域的所有自动快照都将在达到保留期时删除,除非您为其创建手动快照副本。此类手动快照以及从目标区域复制的所有手动快照在您将其手动删除之前将会一直保留在目标区域中。

如果您希望更改将快照复制到的目标区域,则必须先禁用自动复制功能,然后再将其重新启用,从而指定新的目标区域。

在区域间复制快照会产生数据传输费。某个快照复制到目标区域之后,便处于活动和可用状态,可用于还原相关内容。

如果您希望将 AWS KMS 加密的群集的快照复制到另一个区域,则必须为 Amazon Redshift 创建授予,以在目标区域中使用 AWS KMS 客户主密钥 (CMK)。然后,您必须在启用源区域中的快照复制功能时选择该授予。有关配置快照复制授予的更多信息,请参阅将 AWS KMS 加密的快照复制到另一个区域

从快照还原群集

快照中包含您的群集上运行的任何数据库的数据以及您的群集的相关信息,其中包括节点数量、节点类型和主用户名称。如果您需要从快照还原群集,Amazon Redshift 会使用这些群集信息创建新的群集,然后从快照数据中还原所有数据库。Amazon Redshift 从快照创建的新群集与拍摄快照的原始群集具有相同的配置(包括节点的数量和类型)。如果您没有在请求中指定其他可用区,则该群集存储在相同的区域和可用区。

您可以通过下列方式监控还原进度:调用 DescribeClusters API 操作或在 AWS 管理控制台中查看群集详细信息。对于正在进行的还原,通过上述方式可以看到快照数据的大小、传输速率、已用时间以及估计的剩余时间等信息。有关这些指标的说明,请转到 RestoreStatus

您无法使用快照将活动的群集还原为之前的状态。

注意

当您将快照还原为新群集时,如果您没有指定其他值,则使用默认的安全组和参数组。

从快照还原表

您可以从快照还原单个表而不是还原整个群集。在从快照还原单个表时,需要指定源快照、数据库、schema 和表名以及目标群集、schema 和已还原表的新表名。

新表名不能是现有表的名称。要将现有表替换为从快照还原的表,请先重命名或删除现有表,然后再从快照还原表。

使用源表的列定义、表属性和列属性(外键除外)创建目标表。为了防止因依赖项而导致发生冲突,目标表不从源表继承外键。不向目标表应用任何依赖项(例如,源表上的视图或授予的权限)。

如果源表的所有者存在,那么该用户是已还原的表的所有者,前提是该用户拥有足够的权限成为在指定数据库和 schema 中指定的关系的所有者。否则,已还原的表由在启动群集时创建的主用户所有。

已还原的表将返回在执行备份时其所处的状态。这包括由 Redshift 对可序列化隔离的符合性定义的事务可见性规则,这意味着该数据将立即对在备份后启动的进行中的事务可见。

从快照还原表受以下限制:

  • 您只能将表还原到当前正在运行的活动群集,并且只能从针对该群集拍摄的快照还原表。

  • 一次只能还原一个表。

  • 无法从在调整群集大小之前拍摄的群集快照还原表。

使用 Amazon Redshift 控制台从快照还原表

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon Redshift 控制台:https://console.amazonaws.cn/redshift/

  2. 选择 Clusters

  3. 选择 Table restore 选项卡。

  4. 选择 Restore table

  5. Table restore 面板中,选择包含要从中还原的群集快照的日期范围。例如,您可以为上周拍摄的群集快照选择 Last 1 Week

  6. 添加以下信息:

    • From snapshot - 包含要从中还原的表的群集快照的标识符。

    • Source table to restore from

      • Database - 包含要从中还原的表的群集快照中的数据库名称。

      • Schema - 包含要从中还原的表的群集快照中的数据库 schema 名称。

      • Table - 要从中还原的群集快照的表名。

    • Target table to restore to

      • Database - 要将表还原到的目标群集中的数据库名称。

      • Schema - 要将表还原到的目标群集中的数据库 schema 名称。

      • New table name - 已还原的表的新名称。此名称不能是目标数据库中的现有表的名称。

  7. 选择 Restore 可还原表。

如果您已从群集快照还原至少一个表,则可将上一个表还原请求中的值复制到新的表还原请求。此方法意味着,您无需为多个表还原操作重新键入相同的值。

从上一个表还原请求复制到新的表还原操作:

  1. Table restore 选项卡中,选择现有表还原状态。

  2. 选择 Copy restore request

例 示例:使用 AWS CLI 从快照还原表

以下示例使用 restore-table-from-cluster-snapshot AWS CLI 命令从 my-snapshot-id 中的 sample-database schema 还原 my-source-table 表。此示例将快照还原到具有新表名 my-new-tablemycluster-example 群集。

Copy
aws redshift restore-table-from-cluster-snapshot --cluster-identifier mycluster-example --new-table-name my-new-table --snapshot-identifier my-snapshot-id --source-database-name sample-database --source-table-name my-source-table

共享快照

您可以授权其他 AWS 客户账户访问现有手动快照,以与其共享该快照。对于每个快照,最多可以授权 20 个客户账户;对于每个 AWS Key Management Service (AWS KMS) 密钥,则最多可以授权 100 个。例如,如果您有 10 个快照,它们使用了一个 KMS 密钥加密,那么您可以授权 10 个 AWS 账户来还原每个快照,或者是其他组合:总共 100 账户以及每个快照不超过 20 个账户。然后,以用户身份登录其中一个已授权账户的人可以对快照加以说明,也可以还原快照以在其账户下创建一个新的 Amazon Redshift 群集。例如,如果您针对生产和测试使用不同的 AWS 客户账户,则用户可以使用生产账户登录并与使用测试账户的用户共享快照。然后,以测试账户用户身份登录的人可以还原快照以创建一个新的群集,该群集由测试账户所有,用于测试或诊断工作。

手动快照由在其下创建该快照的 AWS 客户账户永久所有。只有拥有相应快照的账户中的用户可以授权其他账户访问该快照或撤消授权。已授权账户中的用户只能对与其共享的任何快照加以说明或还原相应快照;他们无法复制或删除与其共享的快照。授权在快照所有者将其撤消之前保持有效。如果所有者撤消授权,则之前已获授权的用户将无法再看到相应快照,也无法再启动任何引用该快照的新操作。如果在所有者撤消授权时相应账户正在还原快照,则该还原操作会运行完成。您无法删除具有活跃授权的快照;必须先撤消所有授权。

AWS 客户账户始终能够访问相应账户所有的快照。如果尝试授予或撤消对所有者账户的访问权限,则会收到一条错误消息。您无法还原由非活动 AWS 客户账户所有的快照,也无法对其加以说明。

您获得访问 AWS 客户账户的授权之后,那么该账户中便没有任何 IAM 用户可以针对相应快照执行任何操作,除非他们具有相应的 IAM 策略,允许他们这样做。

  • 快照所有者账户中的 IAM 用户只能在以下情况下授予和撤消快照访问权限:此类用户具有相应的 IAM 策略,允许他们通过包含该快照的资源规范执行此类操作。例如,以下策略允许 AWS 账户 (012345678912) 中的用户授权其他账户访问名为 my-snapshot20130829 的快照:

    Copy
    { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:AuthorizeSnapshotAccess", "redshift:RevokeSnapshotAccess" ], "Resource":[ "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829" ] } ] }
  • 与其共享快照的 AWS 账户中的 IAM 用户无法针对该快照执行操作,除非他们具有相应的 IAM 策略,允许他们执行这些操作:

    • 要列出快照或对其加以说明,相应用户必须具有相应的 IAM 策略,允许他们执行 DescribeClusterSnapshots 操作。下方代码显示了一个示例:

      Copy
      { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusterSnapshots" ], "Resource":[ "*" ] } ] }
    • 要还原快照,用户必须具有相应的 IAM 策略,允许他们执行 RestoreFromClusterSnapshot 操作,且该策略要有一个资源元素,同时涵盖他们尝试创建的群集以及相应快照。例如,如果账户 (012345678912) 中的用户与账户 (219876543210) 共享了快照 (my-snapshot20130829),则要通过还原快照来创建群集,账户 (219876543210) 中的用户必须具有诸如以下的策略:

      Copy
      { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:RestoreFromClusterSnapshot" ], "Resource":[ "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829", "arn:aws:redshift:us-east-1:219876543210:cluster:from-another-account" ] } ] }
    • 撤消 AWS 账户的快照访问权限之后,该账户中没有任何用户可以访问该快照,即使其中的用户具有相应的 IAM 策略,允许他们针对之前共享的快照资源执行操作也是如此。

本页内容: