

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# Amazon Redshift 快照和备份
<a name="working-with-snapshots"></a>

快照是集群的时间点备份。存在两种类型的快照：*自动*和*手动*。Amazon Redshift 通过使用加密的安全套接字层 (SSL) 连接，在 Amazon S3 内部存储这些快照。

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

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

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

您可以通过下列方式监控快照进度：在 Amazon Web Services 管理控制台中查看快照详细信息、调用 CLI 中的 [describe-cluster-snapshots](https://docs.amazonaws.cn/cli/latest/reference/redshift/describe-cluster-snapshots.html) 或调用 [DescribeClusterSnapshots](https://docs.amazonaws.cn/redshift/latest/APIReference/API_DescribeClusterSnapshots.html) API 操作。对于正在进行的快照，通过上述方式可以看到增量快照的大小、传输速率、已用时间以及估计的剩余时间等信息。

为了确保您的备份始终对集群可用，Amazon Redshift 将快照存储在由 Amazon Redshift 管理的内部托管 Amazon S3 桶中。要管理存储费用，请估计需要将自动快照保留多少天并相应地配置其保留期。删除所有不再需要的手动快照。有关备份存储成本的更多信息，请参阅 [Amazon Redshift 定价](https://www.amazonaws.cn/redshift/pricing/)。

您还可以使用 Amazon Backup 创建和还原快照，这是一项完全托管式服务，有助于您在云端以及在本地集中管理和自动执行各种 Amazon 服务中的数据保护。有关更多信息，请参阅 [Amazon Backup 与 Amazon Redshift 集成](managing-aws-backup.md)。有关 Amazon Backup 的信息，请参阅《Amazon Backup Developer Guide》**中的 [What is Amazon Backup?](https://docs.amazonaws.cn/aws-backup/latest/devguide/whatisbackup.html)

## 使用 Amazon Redshift Serverless 中的快照和备份
<a name="working-with-snapshots-serverless"></a>

Amazon Redshift Serverless 与预置集群一样，使您能够将备份作为命名空间中的对象和数据在某个时间点的表示形式。Amazon Redshift Serverless 中的备份有两种类型：手动创建的快照，以及 Amazon Redshift Serverless 自动创建的恢复点。可以在[快照和恢复点](https://docs.amazonaws.cn/redshift/latest/mgmt/serverless-snapshots-recovery-points.html)中找到有关使用 Amazon Redshift Serverless 快照的更多信息。

您也可以将快照从预置集群还原到无服务器命名空间。有关更多信息，请参阅[从快照还原无服务器命名空间](https://docs.amazonaws.cn/redshift/latest/mgmt/serverless-snapshot-restore.html)。

## 自动快照
<a name="about-automated-snapshots"></a>

当某个集群的自动快照处于启用状态时，Amazon Redshift 会定期拍摄该集群的快照。默认情况下，Amazon Redshift 大约每 8 小时或在每节点数据更改达到 5 GB 时拍摄一次快照，以先到者为准。如果您的数据大于 5 GB \$1 节点数，则自动快照创建间隔的最短时间为 15 分钟。或者，您也可以创建快照计划来控制何时拍摄自动快照。如果您使用自定义计划，则自动快照间隔的最短时间为 1 小时。当您创建集群时，自动快照默认处于启用状态。

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

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

只有 Amazon Redshift 才能删除自动快照；您不能手动删除它们。Amazon Redshift 会在下列情况下删除自动快照：快照的保留期结束时、您禁用了集群的自动快照或您删除了集群。*Amazon Redshift 会保留最新的自动快照，直到您禁用自动快照或删除集群为止。*

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

## 自动快照计划
<a name="automated-snapshot-schedules"></a>

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

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

## 快照计划格式
<a name="working-with-snapshot-scheduling"></a>

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

您可以使用 cron 语法为快照定义计划。这些计划的定义使用经过修改的类 Unix 系统的 [cron](http://en.wikipedia.org/wiki/Cron) 语法。您可以使用[协调世界时 (UTC)](http://en.wikipedia.org/wiki/Coordinated_Universal_Time) 格式指定时间。您可以创建最大频率为 1 小时、最小精度为 1 分钟的计划。

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

**语法**

```
cron(Minutes Hours Day-of-month Month Day-of-week Year)
```


| **字段** | **值** | **通配符** | 
| --- | --- | --- | 
|  分钟  |  0-59  |  , - \$1 /   | 
|  小时  |  0-23  |  , - \$1 /   | 
|  Day-of-month  |  1-31  |  , - \$1 ? / L W  | 
|  Month  |  1-12 或 JAN-DEC  |  , - \$1 /  | 
|  星期几  |  1–7 或 SUN-SAT  |  , - \$1 ? L \$1  | 
|  Year  |  1970-2199  |  , - \$1 /  | 

**通配符**
+ **,**（逗号）通配符包含其他值。在 `Day-of-week` 字段中，`MON,WED,FRI` 将包含星期一、星期三和星期五。总值限制为每字段 24 个。
+ **-**（破折号）通配符用于指定范围。在 `Hour` 字段中，1–15 将包含指定日期的 1 - 15 小时。
+ **\$1**（星号）通配符包含该字段中的所有值。在 `Hours` 字段中，**\$1** 将包含每个小时。
+ **/**（正斜杠）通配符用于指定增量。在 `Hours` 字段中，您可以输入 **1/10** 来指定从当天的第 1 个小时开始每隔 10 小时（例如，01:00、11:00 和 21:00）。
+ **?**（问号）通配符用于指定一个或另一个。在 `Day-of-month` 字段中，您可以输入 **7**，如果您不介意 7 日是星期几，则可以在“星期几”字段中输入 **?**。
+ ** 或 ** 字段中的 `Day-of-month`L`Day-of-week` 通配符用于指定月或周的最后一天。
+ `Day-of-month` 字段中的 **W** 通配符用于指定工作日。在 `Day-of-month` 字段中，`3W` 用于指定最靠近当月的第三周的日。
+ “Day-of-week”字段中的 **\$1** 通配符用于指定一个月内所指定星期几的特定实例。例如，3\$12 指该月的第二个星期二：3 指的是星期二，因为它是每周的第三天，2 是指该月内该类型的第二天。
**注意**  
如果使用 “\$1” 字符，则只能在星期字段中定义一个表达式。例如，“3\$11,6\$13”是无效的，因为它被解释为两个表达式。

**限制**
+ 您无法在同一 cron 表达式中为 `Day-of-month` 和 `Day-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  |  \$1  |  每天从 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)"   
```

## 手动快照
<a name="about-manual-snapshots"></a>

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

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

Amazon Redshift 设有配额，用以限制您能够创建的手动快照的总数；该配额因不同的 Amazon 账户及不同的 Amazon 区域而异。默认的配额列出在 [Amazon Redshift 资源中的配额和限制](amazon-redshift-limits.md) 中。

## 快照存储
<a name="managing-snapshot-storage"></a>

由于快照会产生存储费用，因此，当您不再需要快照时，务必将其手动删除。在相应的快照保留期结束时，Amazon Redshift 将删除自动快照和手动快照。您也可以使用 Amazon Web Services 管理控制台 或 [batch-delete-cluster-snapshots](https://docs.amazonaws.cn/cli/latest/reference/redshift/batch-delete-cluster-snapshots.html) CLI 命令来删除手动快照。

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

您可以使用 Amazon Redshift 控制台或 [describe-storage](https://docs.amazonaws.cn/cli/latest/reference/redshift/describe-storage.html) CLI 命令获取有关快照占用的存储量的信息。

## 从快照中排除表
<a name="snapshots-no-backup-tables"></a>

默认情况下，所有用户定义的永久表都包含在快照中。如果表（如暂存表）不需要备份，您可以显著降低创建快照并从快照还原所需的时间。您还可以使用无备份表减小在 Amazon S3 上占用的存储空间。要创建无备份表，请在创建该表时包含 BACKUP NO 参数。有关语法的更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [CREATE TABLE](https://docs.amazonaws.cn/redshift/latest/dg/r_CREATE_TABLE_NEW.html) 和 [CREATE TABLE AS](https://docs.amazonaws.cn/redshift/latest/dg/r_CREATE_TABLE_AS.html)。

**注意**  
RA3 预调配集群和 Amazon Redshift Serverless 工作组不支持无备份表。在 RA3 集群和 Serverless 工作组中标记为无备份的表将被视为永久表，在拍摄快照时将始终对其进行备份，并在从快照还原时还原该表。要避免无备份表产生快照成本，请在拍摄快照之前将其截断。