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

使用快照和恢复点

Amazon Redshift Serverless 中的备份,是您命名空间中的对象和数据在某个时间点的表示形式。备份有两种类型:手动创建的快照,以及 Amazon Redshift Serverless 自动为您创建的恢复点。恢复点每 30 分钟创建一次,并保存 24 小时。

如果您发现需要检索快照或恢复点中的数据,则可以将快照还原到无服务器命名空间或预置集群。您可以在以下三种情况下还原快照:

  • 将无服务器快照还原到无服务器命名空间。

  • 将无服务器快照还原到预置集群。

  • 将预置集群快照还原到无服务器命名空间。

将无服务器快照还原到预置集群时,您必须选择要使用的节点类型(例如 RA3)和节点数量,这让您可以在集群或节点级别控制设置。

要将预置的集群快照还原到无服务器命名空间,请从 Redshift 预置的控制台开始,选择要还原的快照,然后选择从快照还原恢复到无服务器命名空间。在您将预置的集群快照还原到无服务器命名空间时,Amazon Redshift 会将带有交错键的表转换为复合排序键。有关排序键的更多信息,请参阅使用排序键

如果要添加额外的上下文,可以使用键值对标记快照和恢复点,这些键值对为快照和恢复点提供元数据和信息。有关标记资源的更多信息,请参阅标记资源概述

最后,您还可以与其他 Amazon 账户共享快照,允许他们访问快照中的数据并运行查询。

快照

您可以将在 Amazon Redshift Serverless 控制台上创建的快照还原到与工作组关联的可用命名空间。命名空间一旦准备好进行查询和/或修改,就可以使用了。您可以将使用 Amazon 托管式 KMS 密钥加密的快照还原到无服务器命名空间。

要查看所有快照的列表,请在 Amazon Redshift Serverless 控制台上,选择数据备份

要创建快照
  1. 在 Amazon Redshift Serverless 控制台上,选择数据备份

  2. 选择创建快照

  3. 选择要创建其快照的命名空间。

  4. 输入快照标识符。

  5. (可选)选择保留期。如果您选择自定义值,请选择天数。您选择的数值必须在 1-3653(含)天之间。原定设置值是无限期保留。

  6. 选择创建

从命名空间配置创建快照
  1. 在 Amazon Redshift Serverless 控制台上,选择命名空间配置

  2. 选择要创建其快照的命名空间。您只能创建与工作组关联且其状态为“可用”的命名空间的快照。

  3. 选择数据备份选项卡。

  4. 选择创建快照

  5. 输入快照标识符。

  6. (可选)选择保留期。如果您选择自定义值,请选择天数。您选择的数值必须在 1-3653(含)天之间。

  7. 选择创建

更新快照的保留期
  1. 在 Amazon Redshift Serverless 控制台上,选择数据备份

  2. 选择要更新的快照。

  3. 依次选择操作设置手动快照设置

  4. 选择保留期。如果您选择自定义值,请选择天数。

  5. 选择保存更改

删除快照
注意

您无法删除已与其他账户共享的快照。在删除快照之前,必须先删除该账户对快照的访问权限。

  1. 在 Amazon Redshift Serverless 控制台上,选择数据备份

  2. 选择要删除的快照。

  3. 依次选择 ActionsDelete

  4. 选择删除

在删除命名空间之前创建命名空间内所有数据的最终快照。
  1. 在 Amazon Redshift Serverless 控制台上,选择命名空间配置

  2. 选择要删除的命名空间。

  3. 依次选择操作删除

  4. 选择创建最终快照

  5. 输入快照的名称。

  6. 输入 delete。

  7. 选择删除

与其他 Amazon 账户共享快照或删除账户对快照的访问权限
  1. 在 Amazon Redshift Serverless 控制台上,选择数据备份

  2. 选择要共享的快照。

  3. 依次选择操作管理访问

  4. 要与其他账户共享快照,请输入 Amazon Web Services 账户 ID。要删除账户的访问权限,请选择删除

  5. 选择保存更改

还原快照

将快照还原到无服务器命名空间,会将当前数据库替换为快照中的数据库。

将快照还原到无服务器命名空间分两个阶段完成。第一阶段在几分钟内完成,将数据还原到命名空间,并使其可用于查询。还原的第二阶段是优化数据库,这可能会导致轻微的性能问题。第二阶段可持续几个小时到几天,在某些情况下可持续几周。时间量取决于数据大小,但随着数据库进行优化,性能会逐步提高。在此阶段结束时,您的无服务器命名空间已充分优化,您可在没有性能问题的情况下提交查询。

将快照还原到无服务器命名空间
  1. 在 Amazon Redshift Serverless 控制台上,选择数据备份

  2. 选择要还原的快照。一次只能还原一个快照。

  3. 依次选择操作恢复到无服务器命名空间

  4. 选择要还原到的可用命名空间。只能还原到其状态为“可用”的命名空间。

  5. 选择还原

将快照还原到预置集群
  1. 在 Amazon Redshift Serverless 控制台上,选择数据备份

  2. 选择要还原的快照。

  3. 依次选择操作还原到预置集群

  4. 输入集群标识符。

  5. 选择节点类型。节点的数量取决于节点类型。

  6. 按照控制台页面上的说明进行操作,为集群配置输入属性。有关更多信息,请参阅创建集群

有关预置集群上快照的更多信息,请参阅 Amazon Redshift 快照和备份

恢复点

Amazon Redshift Serverless 中的恢复点大约每 30 分钟创建一次,并保存 24 小时。

在 Amazon Redshift Serverless 控制台上,选择数据备份来管理恢复点。您还可以进行以下操作:

  • 将恢复点还原到无服务器命名空间。

  • 将恢复点转换为快照。

将恢复点还原到无服务器命名空间
  1. 在 Amazon Redshift Serverless 控制台上,选择 Data backup(数据备份)。

  2. 恢复点下,选择要还原的恢复点的创建时间

  3. 选择还原。只能还原到其状态为“可用”的命名空间。

  4. 在文本输入字段中输入还原,然后选择还原

将恢复点转换为快照
  1. 在 Amazon Redshift Serverless 控制台上,选择数据备份

  2. 恢复点下,选择要转换为快照的恢复点的创建时间

  3. 选择从恢复点创建快照

  4. 输入快照标识符

  5. 选择创建

计划快照

要精确控制创建快照的时间,您可以为特定命名空间创建快照计划。计划快照的创建时,您可以创建一次性事件,也可以使用 Unix cron 表达式来创建定期执行的计划。Cron 表达式支持以空格分隔三个字段。

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

分钟

0-59

, - * /

小时

0-23

, - * /

日期

1-31

, - * ? / L W

1-12 或 JAN-DEC

, - * /

星期几

1–7 或 SUN-SAT

, - * ? L #

1970-2199

, - * /

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

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

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

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

  • ?(问号)通配符用于指定一个或另一个。在 Day-of-month 字段中,您可以输入 7,如果您不介意 7 日是星期几,则可以在“星期几”字段中输入 ?

  • 字段中的 Day-of-monthLDay-of-week 通配符用于指定月或周的最后一天。

  • Day-of-month 字段中的 W 通配符用于指定工作日。在 Day-of-month 字段中,3W 用于指定最靠近当月的第三周的日。

  • “星期几”字段中的 # 通配符用于指定一个月内所指定星期几的特定实例。例如,3#2 指该月的第二个星期二:3 指的是星期二,因为它是每周的第三天,2 是指该月内该类型的第二天。

    注意

    如果使用 “#” 字符,则只能在星期字段中定义一个表达式。例如,“3#1,6#3”是无效的,因为它被解释为两个表达式。

限制
  • 您无法在同一 cron 表达式中为 Day-of-monthDay-of-week 字段同时指定值。如果您在其中一个字段中指定了值,则必须在另一个字段中使用 ?(问号)。

  • 快照计划不支持以下频率:

    • 计划快照的频率超过每小时 1 次。

    • 计划快照的频率低于每天 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 小时为增量运行的计划。

cron(15 15/2 *)

目前,您只能使用 Amazon Redshift Serverless API 或 Amazon CLI 创建快照计划。有关这些操作的更多信息,请参阅 Using the Amazon CLI and Amazon Redshift Serverless API

将备份复制到其他 Amazon Web Services 区域

您可以将 Amazon Redshift Serverless 配置为自动将快照和恢复点复制到其他 Amazon Web Services 区域。当您在 Amazon Web Services 区域中创建快照时,它会被复制到目标区域。您可以配置命名空间,使其一次只能将快照和恢复点复制到一个 Amazon Web Services 区域目标。有关提供了 Amazon Redshift Serverless 的 Amazon Web Services 区域的列表,请参阅《Amazon Web Services 一般参考》中为 Redshift Serverless API 列出的端点。

在配置复制备份时,您还可以指定保留期,确定 Amazon Redshift Serverless 应将复制的快照保留多长时间。您无法更改恢复点的保留期,该值必须为 1 天。在目标区域中快照的保留期,独立于源区域中快照的保留期。默认情况下,保留期为无限期保留快照。如果您选择自定义值,请选择天数。您选择的此数值必须在 1-3653(含)天之间。

如需更改要将快照复制到的目标区域,请先禁用复制备份,然后在重新启用复制时指定新的目标区域。

将快照或恢复点复制到目标区域后,您可以用这些快照或恢复点将数据恢复到区域中。

默认情况下,您的数据将使用 Amazon 为您管理的密钥进行加密。要使用其他密钥,在源 Amazon Web Services 区域中配置备份复制时,请指定要使用的密钥,然后 Amazon Redshift Serverless 会自动创建授权,从而在目标 Amazon Web Services 区域启用快照加密。

要将备份复制到其他区域,请确保您具有以下 IAM 权限:

redshift-serverless:CreateSnapshotCopyConfiguration redshift-serverless:UpdateSnapshotCopyConfiguration redshift-serverless:ListSnapshotCopyConfigurations redshift-serverless:DeleteSnapshotCopyConfiguration

如果您使用自己的 KMS 密钥来加密备份,则还需要以下权限:

kms:CreateGrant kms:DescribeKey

配置将快照或恢复点复制到其他 Amazon Web Services 区域

  1. 在 Amazon Redshift Serverless 控制台上,选择要配置为复制其快照或恢复点的命名空间。

  2. 依次选择操作配置跨区域备份

  3. 选择要将快照复制到的目标 Amazon Web Services 区域。

  4. (可选)选择将快照保留多长时间。如果您选择自定义值,请选择天数。您选择的数值必须在 1-3653(含)天之间。默认设置是无限期保留。

  5. (可选)选择其他 Amazon KMS 密钥用于目标区域中的加密。

  6. 选择 Save configuration

还原表

您也可以从快照或恢复点还原特定表。执行此操作时,您需要指定源快照或恢复点、数据库、架构、表、目标数据库、架构和新表名。这个新表不能使用与现有表相同的名称。如果您希望还原表来替换现有的表,则必须先重命名或删除现有表,然后再还原表。

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

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

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

您可以使用 Amazon Redshift Serverless 控制台从快照还原表。

从数据备份还原表存在以下限制:

  • 一次只能还原一个表。

  • 不向目标表应用任何依赖项(例如,源表上的视图或授予的权限)。

  • 如果为正在还原的表启用行级安全性,Amazon Redshift Serverless 将还原已启用行级安全性的表。

使用 Amazon Redshift Serverless 控制台还原表

  1. 在 Amazon Redshift Serverless 控制台上,选择数据备份

  2. 选择包含要还原的表的快照或恢复点。

  3. 选择操作从快照还原表从恢复点还原表

  4. 输入有关源快照或恢复点以及目标表的信息,然后选择还原表

使用 Amazon Command Line Interface 和 Amazon Redshift Serverless API

除了使用 Amazon 控制台,您还可以使用 Amazon CLI 或 Amazon Redshift Serverless API 与快照和恢复点进行交互。下表列出了您可用于管理快照和恢复点的 API 和 CLI 操作。

API 操作 CLI 命令 描述

CreateSnapshot

create-snapshot

创建快照。快照必须与命名空间关联,因此您必须在请求中包含命名空间的名称。默认情况下,Amazon Redshift Serverless 无限期地保留快照,但您可以指定保留期。

RestoreFromSnapshot

restore-from-snapshot

将快照中的数据库还原到您的命名空间。如果要将快照从 Amazon Redshift Serverless 还原到预调配集群,则必须指定要还原的快照的 snapshotArn。否则,如果您要从无服务器还原到无服务器,则可以指定 snapshotArnsnapshotName,但不能同时指定两者。

RestoreTableFromSnapshot

restore-table-from-snapshot

将快照中的表还原到您的 Amazon Redshift Serverless 命名空间。您不能使用此操作还原具有交错排序键的表。

GetSnapshot

get-snapshot

检索有关快照的信息。

ListSnapshots

list-snapshots

检索有关多个快照的信息。

DeleteSnapshot

delete-snapshot

删除快照。

RestoreFromRecoveryPoint

restore-from-recovery-point

将恢复点中的数据还原到您的命名空间。

RestoreTableFromRecoveryPoint

restore-table-from-recovery-point

将恢复点中的表还原到您的 Amazon Redshift Serverless 命名空间。您不能使用此操作还原具有交错排序键的表。

ConvertRecoveryPointToSnapshot

convert-recovery-point-to-snapshot

将恢复点转换为快照。

GetRecoveryPoint

get-recovery-point

检索有关恢复点的信息。

ListRecoveryPoints

list-recovery-points

检索有关多个恢复点的信息。

要计划快照的创建,请使用以下 API 操作。

API 操作 CLI 命令 描述

CreateScheduledAction

create-scheduled-action

创建计划的操作,其中包含一个计划和一个 Amazon Redshift Serverless 操作。例如,您可以创建何时运行 CreateSnapshot API 操作的计划。

DeleteScheduledAction

delete-scheduled-action

删除计划的操作。

GetScheduledAction

get-scheduled-action

检索有关计划操作的信息。

ListScheduledActions

list-scheduled-actions

检索有关计划操作列表的信息。

UpdateScheduledAction

update-scheduled-action

更新计划的操作。