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

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

Amazon Redshift 快照

Overview

快照是集群的时间点备份。有两种类型的快照:自动化手动方式。Amazon Redshift 使用加密的安全套接字层 (SSL) 连接在 Amazon S3 中存储这些快照。

Amazon Redshift 会自动拍摄增量快照,来跟踪自上次自动快照拍摄以来集群发生的变化。自动快照保留从快照还原集群所需的全部数据。您可以创建快照计划来控制何时拍摄自动快照,也可以随时拍摄手动快照。

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

在启动集群时,可以设置自动快照和手动快照的保留期。您可以通过修改集群来更改自动快照和手动快照的默认保留期。您可以在创建快照时或通过修改快照来更改手动快照的保留期。

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

为了确保您的备份始终对集群可用,Amazon Redshift 将快照存储在由 Amazon Redshift 管理的内部托管 Amazon S3 存储桶中。要管理存储费用,请评估您需要保留自动快照的天数,并相应地配置自动快照的保留期。删除您不再需要的任何手动快照。有关备份存储的成本的更多信息,请参阅Amazon Redshift 定价页.

自动快照

当集群的自动快照处于启用状态时,Amazon Redshift 会定期拍摄该集群的快照。默认情况下,Amazon Redshift 大约每 8 小时或在每节点数据更改达到 5 GB 时拍摄一次快照,以先到者为准。或者,您也可以创建快照计划来控制何时拍摄自动快照。当您创建集群时,自动快照默认处于启用状态。

系统会在保留期结束时删除自动快照。默认保留期为一天;不过,您可以使用 Amazon Redshift 控制台对其进行修改,也可以使用 Amazon Redshift API 或 CLI 以编程方式对其进行修改。

要禁用自动快照,只需将保留期设置为零即可。如果您禁用自动快照,Amazon Redshift 将停止拍摄快照并删除相应集群的所有现有自动快照。您无法禁用 RA3 节点类型的自动快照。您可以将 RA3 节点类型的自动保留期设置为 1-35 天。

只有 Amazon Redshift 才能删除自动快照;您不能手动删除它们。Amazon Redshift 将在快照的保留期结束时、您为集群禁用了自动快照或您删除了集群。Amazon Redshift 会保留最新的自动快照,直到您禁用自动快照或删除集群为止。

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

自动快照计划

要精确控制拍摄快照的时间,您可以创建快照计划并将其附加到一个或多个集群。修改快照计划时,将修改所有关联集群的计划。如果集群未附加快照计划,其将使用默认的自动快照计划。

快照计划 是一组计划规则。您可以基于指定的时间间隔(例如每 8 小时或每 12 小时)定义简单的计划规则。也可以添加规则来在一周中的某些天、特定时间或特定时段拍摄快照。此外,您还可以使用类 Unix 系统的 cron 表达式定义规则。

快照计划格式

您可以在 Amazon Redshift 控制台中创建快照计划。然后,您可以将计划附加到集群来触发创建系统快照。可以将计划附加到多个集群,也可以在计划中创建多个 cron 定义来触发快照。

您可以使用 cron 语法为快照定义计划。这些计划的定义使用经过修改的类 Unix 的Cron语法。您可以使用协调世界时 (UTC) 格式指定时间。您可以创建最大频率为 1 小时、最小精度为 1 分钟的计划。

Amazon Redshift 修改后的 cron 表达式有 3 个必填字段,之间以空格分隔。

语法

cron(Minutes Hours Day-of-week)
字段 通配符

分钟

0-59

小时

0—23

, - * /

星期几

1—7 或 SUN-SAT

, - * /

Wildcards

  • ,(逗号)通配符包含其他值。在 Day-of-week 字段中,MON,WED,FRI 将包含星期一、星期三和星期五。总值限制为每字段 24 个。

  • -(破折号)通配符用于指定范围。在Hour字段中,1—15 将包含指定日期的 1 到 15 小时。

  • *(星号)通配符包含该字段中的所有值。在 Hours 字段中,* 将包含每个小时。

  • /(正斜杠)通配符用于指定增量。在 Hours 字段中,您可以输入 1/10 来指定从当天的第 1 个小时开始每隔 10 小时(例如,01:00、11:00 和 21:00)。

Limits

  • 不支持导致备份频率小于 1 小时或大于 24 小时的快照计划。如果您有重叠的计划导致在 1 小时时段内计划了多次快照,将产生验证错误。

在创建计划时,您可以使用以下示例 cron 字符串。

分钟 小时 星期几 意义

0

14-20/1

TUE

星期二下午 2 点到晚上 8 点之间,每小时拍摄一次。

0

21

MON-FRI

每天晚上 9 点星期一至星期五。

30

0/6

SAT-SUN

星期六和星期日从当天午夜 30 分 (00:30) 开始,每 6 小时拍摄一次。这导致在每天的 [00:30、06:30、12:30 和 18:30] 拍摄快照。

30

12/4

*

每天从 12:30 开始,每 4 小时拍摄一次。这将解析为 [12:30、16:30、20:30]。

例如,要运行每天从 15:15 开始、每 2 小时拍摄一次的计划 (解析为 [15:15、17:15、19:15、21:15、23:15]),请指定:

cron(15 15/2 *)

您可以在计划中创建多个 cron 计划定义。例如,以下 Amazon CLI 命令在一个计划中包含两个 cron 计划。

create-snapshot-schedule --schedule-identifier "my-test" --schedule-definition "cron(0 17 SAT,SUN)" "cron(0 9,17 MON-FRI)"

手动快照

您可以随时制作手动快照。默认情况下,即使您删除相应集群,手动快照也会无限期保留。您可以在创建手动快照时指定保留期,也可以通过修改快照来更改保留期。有关更改保留期的更多信息,请参阅更改手动快照保留期

如果删除某个快照,则无法启动任何引用该快照的新操作。不过,如果某个还原操作正在进行中,则该还原操作会运行完成。

Amazon Redshift 具有配额,用以限制您能够创建的手动快照的总数;此配额因不同的情况而异。Amazon每个账户Amazon区域。默认配额列于Amazon Redshift 中的配额和限制

管理快照存储

由于快照产生存储费用,因此,在您不再需要使用快照时,务必将其删除。Amazon Redshift 将在相应快照保留期结束时删除自动和手动快照。您还可以使用Amazon Web Services Management Console或使用批量删除集群快照CLI 命令。

您可以通过修改手动快照设置来更改手动快照的保留期。

您可以使用 Amazon Redshift 控制台获取有关快照占用的存储量的信息,或者使用描述存储CLI 命令。

从快照中排除表

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

将快照复制到另一个Amazon区域

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

当您启用 Amazon Redshift 自动将快照复制到另一个Amazon区域,您可以指定目标Amazon要将快照复制到的区域。对于自动快照,您也可以指定此类快照在目标位置的保留期Amazon区域。将自动快照复制到目标之后Amazon区域且达到保留期时,会从目标删除Amazon区域。这样做可以降低快照的使用率。将自动快照保留在目标区中的时间更短Amazon区域,更改此保留期。

您为复制到目标的自动快照设置的保留期Amazon区域与源中自动快照的保留期分开Amazon区域。复制的快照的默认保留期为七天。该七天保留期仅适用于自动快照。在源和目标Amazon区域,将在快照保留期结束时或手动删除时删除手动快照。

您可以随时禁用集群的自动快照复制功能。当您禁用此功能时,快照将不再从源复制Amazon到目的地的区域Amazon区域。复制到目标的任何自动快照Amazon区域在达到保留期时将会删除,除非您为其创建手动快照副本。这些手动快照以及从目标复制的所有手动快照Amazon区域,保留在目标位置Amazon区域,直到您手动删除它们。

更改目标Amazon您将快照复制到的区域,请先禁用自动复制功能。然后重新启用它,并指定新的目标Amazon区域。

将快照复制到目标之后Amazon区域,它处于活动和可用状态,可用于还原相关内容。

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

从快照还原集群

快照包含来自您的集群上运行的任何数据库的数据。它还包含有关集群的信息,包括节点数、节点类型和主用户名称。如果您从快照还原集群,Amazon Redshift 将使用集群信息来创建新集群。然后它会从快照数据中恢复所有数据库。

对于从源快照创建的新集群,您可以选择配置,例如节点类型和节点数。群集将在相同的Amazon区域和系统选择的随机可用区,除非您在请求中指定另一个可用区。当您从快照还原集群时,可为新群集选择兼容的维护跟踪。

注意

当您将快照恢复到具有不同配置的集群时,该快照必须在集群版本为 1.0.10013 或更高版本的集群上获取。

恢复正在进行时,事件通常按以下顺序发出:

  1. 恢复已启动 — 在恢复过程开始时发送 REDSHIFT-EVENT-2008。

  2. 恢复成功 — 创建新集群后发送的 REDSHIFT-EVENT-3003。

    集群可用于查询。

  3. 数据传输已完成 — 数据传输完成时发送 REDSHIFT-EVENT-3537。

注意

RA3 集群仅发出恢复启动事件和恢复成功事件。由于 RA3 节点类型将数据存储在 Amazon Redshift 托管存储中,因此在恢复成功后不会进行显式的数据传输。使用 RA3 节点,作为正常查询处理的一部分,数据在 RA3 节点和 Amazon Redshift 托管存储之间持续传输。RA3 节点在本地缓存热数据,并自动将查询频率较低的块保存在 Amazon Redshift 托管存储中。

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

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

注意

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

出于以下原因,您可能想要将快照恢复到具有不同配置的集群:

  • 集群由较小的节点类型组成,且您想要将它合并到具有较少节点的较大节点类型。

  • 您监控工作负载并确定需要迁移到具有更多 CPU 和存储的节点类型。

  • 您想要衡量具有不同节点类型的测试工作负载的性能。

还原具有以下限制:

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

  • 还原操作将检查快照是否在与新集群的群集版本兼容的群集版本上创建。如果新群集的版本级别太早,则恢复操作将失败,并在错误消息中报告更多信息。

  • 可还原到的可能配置(节点数和节点类型)取决于原始集群中的节点数量和新集群的目标节点类型。若要确定可能的配置,您可以使用 Amazon Redshift 控制台或describe-node-configuration-options Amazon CLI命令action-type restore-cluster。有关使用 Amazon Redshift 控制台进行还原的更多信息,请参阅从快照还原集群

以下步骤使用 Amazon CLI 获取具有许多节点的集群,并将它合并到具有较少节点数的更大节点类型。在此示例中,我们从一个具有 24 个 ds2.xlarge 节点的源集群开始。在本例中,假设我们已经为此集群创建了一个快照,并且我们想要将它恢复到更大的节点类型。

  1. 运行以下命令,获取 24 节点 ds2.xlarge 集群的详细信息。

    aws redshift describe-clusters --region eu-west-1 -—cluster-identifier mycluster-123456789012
  2. 运行以下命令,获取快照的详细信息。

    aws redshift describe-cluster-snapshots --region eu-west-1 -—snapshot-identifier mycluster-snapshot
  3. 运行以下命令,描述此快照可用的选项。

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

    此命令会返回一个选项列表,包括每个选项的建议节点类型、节点数和磁盘利用率。在此示例中,上述命令列出以下可能的节点配置。我们选择恢复到三节点 ds2.8xlarge 集群。

    { "NodeConfigurationOptionList": [ { "EstimatedDiskUtilizationPercent": 65.26134808858235, "NodeType": "ds2.xlarge", "NumberOfNodes": 24 }, { "EstimatedDiskUtilizationPercent": 32.630674044291176, "NodeType": "ds2.xlarge", "NumberOfNodes": 48 }, { "EstimatedDiskUtilizationPercent": 65.26134808858235, "NodeType": "ds2.8xlarge", "NumberOfNodes": 3 }, { "EstimatedDiskUtilizationPercent": 48.94601106643677, "NodeType": "ds2.8xlarge", "NumberOfNodes": 4 }, { "EstimatedDiskUtilizationPercent": 39.156808853149414, "NodeType": "ds2.8xlarge", "NumberOfNodes": 5 }, { "EstimatedDiskUtilizationPercent": 32.630674044291176, "NodeType": "ds2.8xlarge", "NumberOfNodes": 6 } ] }
  4. 运行以下命令,将快照恢复到我们选择的集群配置。恢复此集群之后,我们拥有与源集群相同的内容,但数据已合并到三个 ds2.8xlarge 节点。

    aws redshift restore-from-cluster-snapshot --region eu-west-1 --snapshot-identifier mycluster-snapshot -—cluster-identifier mycluster-123456789012-x --node-type ds2.8xlarge --number-of-nodes 3

从快照中还原表

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

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

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

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

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

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

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

  • 一次只能还原一个表。

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

注意

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

从快照还原表

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

  2. 在导航菜单上,选择 CLUSTERS (集群),然后选择还原表要使用的集群。

  3. 对于 Actions (操作),请选择 Restore table (还原表) 以便显示 Restore table (还原表) 页面。

  4. 输入要使用的快照、源表和目标表的相关信息,然后选择 Restore table (还原表)

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

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

  2. 选择 Clusters (集群),然后选择一个集群。

  3. 选择 Table restore 选项卡。

  4. 选择 Restore table

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

  6. 添加以下信息:

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

    • Source table to restore from

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

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

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

    • Target table to restore to

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

      • 架构— 要将表还原到的目标集群中的数据库架构名称。

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

  7. 选择 Restore 可还原表。

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

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

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

  2. 选择 Copy restore request

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

以下示例使用 restore-table-from-cluster-snapshot Amazon CLI 命令从 my-snapshot-id 上的 sample-database 架构中还原 my-source-table 表。此示例将快照还原到具有新表名 mycluster-examplemy-new-table 集群。

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

共享快照

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

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

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

在您授权访问Amazon客户账户,则该账户中没有任何 IAM 用户可以针对快照执行任何操作,除非他们具有相应的 IAM 策略,允许他们这样做。

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

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

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

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

      { "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" ] } ] }
    • 在撤销 Amazon 账户对快照的访问权限后,该账户中的所有用户均无法访问该快照。即使这些用户具有允许对以前共享的快照资源执行操作的 IAM 策略,也是如此。