

# 了解 Amazon DynamoDB 备份计费
<a name="backup-restore-billing"></a>

本指南详细介绍了 DynamoDB 如何对备份进行计费。我们将列出影响总体成本的各个组成部分，并提供清晰解释和实际示例。

DynamoDB 提供按需备份和时间点故障恢复（PITR）备份，来协助保护 DynamoDB 数据免受灾难事件的影响，并提供数据归档以实现长期保留。

## 工作方式
<a name="backup-restore-billing-how-it-works"></a>

DynamoDB 按需备份是按月计费的。如果您在一个月内的任一天进行备份，系统会显示一笔根据当月剩余天数计算的备份费用（例如：在 27 日创建备份，那么当月只需支付剩余几天的费用，系统将在 27 日一次性收取）。

如果您在接下来的几个月保留之前创建的备份，系统始终会在每月第 1 天收取整月的备份费用。如果您在月底之前删除了备份，系统将根据实际使用量调整费用。

例如，如果您在 7 月 27 日创建了一个备份，并在整个 8 月一直保留该备份，那么该备份的费用将如下所示：
+ 7 月 27 日收取 7 月剩余天数的费用
+ 8 月 1 日收取整个 8 月的费用
+ 系统会在该备份存在的每个后续月份的第 1 天收取费用

维护 DynamoDB 表的备份时，您可能会发现当月第 1 天显示的 `DynamoDB (Region)-TimedBackupStorage-ByteHrs` 使用量指标费用似乎异常高。此外，如果您在新月份开始时查看该指标，并将其与之前的计费周期进行比较，可能会观察到使用量似乎出现了较大峰值的情况。这是设计使然。每月第 1 天，系统会对任何现有 DynamoDB 备份收取整月的使用费。对于当月删除的任何 DynamoDB 备份，系统将按比例计算其使用费，以反映实际使用情况。因此，您可能会看到整个月的费用（在第 1 天收取）有所减少。这是因为保留策略会向执行的备份应用过期或手动删除。下面的场景将对此进行探讨。

同样，您将注意到，随着新备份的创建，整个月的峰值会有所降低，而当月剩余时间则在创建当天收取费用。

## DynamoDB 备份计费示例
<a name="backup-restore-billing-example"></a>

以下示例是您月初可能会在 Cost Explorer 中看到的内容：

![\[该图所示为 Cost Explorer 中的 DynamoDB 计费图表。\]](http://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/images/ddb-backups-billing-ce.png)


请注意，与前几个月相比，2 月 1 日的峰值似乎要大得多。我们来分析一下发生这种情况的原因。

在 [DynamoDB 定价页面](https://aws.amazon.com/dynamodb/pricing/on-demand/)：

*“每月计费的总备份存储大小是所有 DynamoDB 表备份的总和。DynamoDB 会在整月持续监控按需备份的大小，以确定您的备份费用。”*

这就解释了为什么账单上总是显示每月第 1 天的使用量有一个较大峰值。对于任何进入新月份的现有备份，系统会在第 1 天收取整月的费用。换句话说，如果您有 300 个 DynamoDB 备份进入新月份，系统会在当月第 1 天对所有 300 个备份都收取整月的使用费。

整个月进行的新备份将从创建之日起到月底收取使用费。

**如果在月中删除备份会怎样？**

以下是一些需要考虑的场景：

1. 如果在当月的 15 日删除上个月的备份，则该备份的使用费（仍适用于 1 日）将根据实际使用情况进行调整，而不是之前应用的假设的整月使用情况。以下示例对此进行了更详细的解释。

1. 当您在当月创建备份时，该月剩余时间的使用费将按创建当天收取。但是，如果您在月底之前删除此备份，则使用费将调整为仅包括备份处于活动状态的天数，仍在其创建日期收取。

**为什么本月第 1 天的使用量似乎比前几个月的使用量高得多，如果我删除备份会怎么样？**

为了回答这个由两部分组成的重要问题，我们使用以下信息来设置一个示例场景：
+ **月长**：30 天
+ **DynamoDB 备份频率**：10 个/天，300 个/月 
+ **DynamoDB 备份保留策略**：30 天 
+ **DynamoDB 每个备份成本**：2 美元/天，60 美元/月 
+ **上个月第 1 天总计**（`TimedBackupStorage-ByteHrs`，在本月第 1 天结账）：9300 美元 
+ **上个月总计**（`TimedBackupStorage-ByteHrs`）：18600 美元 
+ **本月第 1 天总计**（`TimedBackupStorage-ByteHrs`，在第 1 天结账）：18000 美元 
+ **DynamoDB 使用量逐月变化**：无 

根据上述信息，我们可以看到上个月创建了 300 个备份，其策略是将备份保留 30 天。在新月份的第 1 天，所有这些备份仍会保留，因为备份仍未到达恢复期的结束时间点。但是，随着时间一天天的过去，最旧的备份集将开始丢弃，如下所示：


**DynamoDB 备份丢弃表**  

| 新月份 | 第 1 天 | 第 2 天 | 第 3 天 | 第 4 天 | 第 5 天 | 
| --- | --- | --- | --- | --- | --- | 
| 上个月执行的备份总数 | 300 | 290 | 280 | 270 | 260 | 
+ 在第 1 天，可以看到有 300 个备份，每个备份每月 60 美元，总共对 `TimedBackupStorage-ByteHrs` 收取 18000 美元。相比之下，上个月整月总共收取 18600 美元。
+ 在第 2 天，其中的 10 个备份将过期并丢弃。发生这种情况时，对这些备份收取的费用将调整为根据**实际使用量**，而不是**假设使用量**。因此，这 10 个备份的费用（之前在第 1 天收取的 600 美元，10 个备份 x 30 天）将调整为降至 20 美元（10 个备份 x 1 天）。
+ 之后的一天，下一个包含 10 个备份的数据块将过期并丢弃，其使用量从 30 天缩短为 2 天，费用降至 40 美元（10 个备份 x 2 天）。

随着时间一天天的过去，我们将看到这个大于前一个月的峰值开始缩小。如果我们扩展到涵盖整个月，将观察到以下情况：


**DynamoDB 备份费用（每月第 1 天）进度**  

| 300 个备份，每数据块 10 个 | 第 1 天 | 第 10 天 | 第 20 天 | 第 30 天 | 
| --- | --- | --- | --- | --- | 
| 数据块 1 | 600 美元 | 20 美元 | 20 美元 | 20 美元 | 
| 数据块 2 | 600 美元 | 40 美元 | 40 美元 | 40 美元 | 
| 数据块 3 | 600 美元 | 60 美元 | 60 美元 | 60 美元 | 
| 数据块 4 | 600 美元 | 80 美元 | 80 美元 | 80 美元 | 
| 数据块 5 | 600 美元 | 100 USD | 100 USD | 100 USD | 
| 数据块 6 | 600 美元 | 120 美元 | 120 美元 | 120 美元 | 
| 数据块 7 | 600 美元 | 140 美元 | 140 美元 | 140 美元 | 
| 数据块 8 | 600 美元 | 160 美元 | 160 美元 | 160 美元 | 
| 数据块 9 | 600 美元 | 180 美元 | 180 美元 | 180 美元 | 
| 数据块 10 | 600 美元 | 600 美元 | \$1200 | \$1200 | 
| 数据块 11 | 600 美元 | 600 美元 | 220 美元 | 220 美元 | 
| 数据块 12 | 600 美元 | 600 美元 | 240 美元 | 240 美元 | 
| 数据块 13 | 600 美元 | 600 美元 | 260 美元 | 260 美元 | 
| 数据块 14 | 600 美元 | 600 美元 | 280 美元 | 280 美元 | 
| 数据块 15 | 600 美元 | 600 美元 | \$1300 | \$1300 | 
| 数据块 16 | 600 美元 | 600 美元 | 320 美元 | 320 美元 | 
| 数据块 17 | 600 美元 | 600 美元 | 340 美元 | 340 美元 | 
| 数据块 18 | 600 美元 | 600 美元 | 360 美元 | 360 美元 | 
| 数据块 19 | 600 美元 | 600 美元 | 380 美元 | 380 美元 | 
| 数据块 20 | 600 美元 | 600 美元 | 600 美元 | 400 美元 | 
| 数据块 21 | 600 美元 | 600 美元 | 600 美元 | 420 美元 | 
| 数据块 22 | 600 美元 | 600 美元 | 600 美元 | 440 美元 | 
| 数据块 23 | 600 美元 | 600 美元 | 600 美元 | 460 美元 | 
| 数据块 24 | 600 美元 | 600 美元 | 600 美元 | 480 美元 | 
| 数据块 25 | 600 美元 | 600 美元 | 600 美元 | 500 美元 | 
| 数据块 26 | 600 美元 | 600 美元 | 600 美元 | 520 美元 | 
| 数据块 27 | 600 美元 | 600 美元 | 600 美元 | 540 美元 | 
| 数据块 28 | 600 美元 | 600 美元 | 600 美元 | 560 美元 | 
| 数据块 29 | 600 美元 | 600 美元 | 600 美元 | 580 美元 | 
| 数据块 30 | 600 美元 | 600 美元 | 600 美元 | 600 美元 | 
| 当月第 1 天总计（美元） | 18000 美元 | 13500 美元 | 10400 美元 | 9300 美元 | 

每天都有一个新数据块丢弃，系统会根据该数据块存在的天数调整其使用量，而不是按整月计算使用量。因此，到月底，第 1 天观察到的费用将从最初的 18000 美元降至预期的 9300 美元。将这个数字与当月新创建的备份（计费表与上表类似，但顺序相反）费用相结合，可得出月度支出与上个月的 18600 美元一致。