

# DynamoDB 全局表版本
<a name="V2globaltables_versions"></a>

DynamoDB 全局表有两个版本可用：全局表版本 2019.11.21（当前版）和全局表版本 2017.11.29（旧版）。我们建议使用全局表版本 2019.11.21（当前版），因为相比 2017.11.29（旧版），它更易于使用、在更多区域中受支持，并且对于大部分工作负载而言更具有成本效益。

## 确定全局表的版本
<a name="globaltables.DetermineVersion"></a>

### 使用 AWS CLI 确定版本
<a name="globaltables.CLI"></a>

#### 确定版本 2019.11.21（当前版）全局表副本
<a name="globaltables.CLI.current"></a>

要确定表是否为全局表版本 2019.11.21（当前版）副本，请对该表调用 `describe-table` 命令。如果输出包含值为“2019.11.21”的 `GlobalTableVersion` 属性，则该表为版本 2019.11.21（当前版）全局表副本。

`describe-table` 的示例 CLI 命令：

```
aws dynamodb describe-table \
--table-name users \
--region us-east-2
```

（删节）输出包含值为“2019.11.21”的 `GlobalTableVersion` 属性，因此该表为版本 2019.11.21（当前版）全局表副本。

```
{
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "id",
                "AttributeType": "S"
            },
            {
                "AttributeName": "name",
                "AttributeType": "S"
            }
        ],
        "TableName": "users",
        ...
        "GlobalTableVersion": "2019.11.21",
        "Replicas": [
            {
                "RegionName": "us-west-2",
                "ReplicaStatus": "ACTIVE",
            }
        ],
        ...
    }
}
```

#### 确定版本 2017.11.29（旧版）全局表副本
<a name="globaltables.CLI.legacy"></a>

全局表版本 2017.11.29（旧版）使用一组专用的命令来进行全局表管理。要确定表是否为全局表版本 2017.11.29（旧版）副本，请对该表调用 `describe-global-table` 命令。如果您收到成功响应，则该表为版本 2017.11.29（旧版）全局表副本。如果 `describe-global-table` 命令返回 `GlobalTableNotFoundException` 错误，则该表不是版本 2017.11.29（旧版）副本。

`describe-global-table` 的示例 CLI 命令：

```
aws dynamodb describe-global-table \
--table-name users \
--region us-east-2
```

该命令返回成功的响应，因此，此表是版本 2017.11.29（旧版）全局表副本。

```
{
    "GlobalTableDescription": {
        "ReplicationGroup": [
            {
                "RegionName": "us-west-2"
            },
            {
                "RegionName": "us-east-2"
            }
        ],
        "GlobalTableArn": "arn:aws:dynamodb::123456789012:global-table/users",
        "CreationDateTime": "2025-06-10T13:55:53.630000-04:00",
        "GlobalTableStatus": "ACTIVE",
        "GlobalTableName": "users"
    }
}
```

### 使用 DynamoDB 控制台确定版本
<a name="globaltables.console"></a>

要确定全局表副本的版本，请执行以下操作：

1. 打开 DynamoDB 控制台：[https://console.aws.amazon.com/dynamodb/home](https://console.aws.amazon.com/dynamodb/home)。

1. 在控制台左侧的导航窗格中，选择**表**。

1. 选择要确定其全局表版本的表。

1. 选择**全局表**选项卡。

   *摘要*部分显示正在使用的全局表的版本。

## 旧版与当前版之间的行为差异
<a name="DiffLegacyVsCurrent"></a>

以下列表介绍了全局表的旧版和当前版之间的行为差异。
+ 与版本 2017.11.29（旧版）相比，版本 2019.11.21（当前版）在执行某些 DynamoDB 操作时使用的写入容量更少，因此，对于大部分客户而言，更具有成本效益。这些 DynamoDB 操作的差异如下：
  + 在 2017.11.29（旧版）中，针对一个区域的 1 KB 项目调用 [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)，然后复制到其它区域时，每个区域需要 2 个 rWRU；但在 2019.11.21（当前版）中，仅需要 1 个 rWRU。
  + 在 2017.11.29（旧版）中，针对 1 KB 项目调用 [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) 时，源区域需要 2 个 rWRU，每个目标区域需要 1 个 rWRU，但在 2019.11.21（当前版）中，源区域和目标区域都只需要 1 个 rWRU。
  + 在 2017.11.29（旧版）中，针对 1 KB 项目调用 [DeleteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html) 时，源区域需要 1 个 rWRU，每个目标区域需要 2 个 rWRU，但在 2019.11.21（当前版）中，源区域或目标区域都只需要 1 个 rWRU。

  下表显示两个区域中 1 KB 项目 2017.11.29（旧版）和 2019.11.21（最新版）表的 rWRU 消耗量    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/V2globaltables_versions.html)
+ 版本 2017.11.29（旧版）仅在 11 个 AWS 区域中可用。但是，版本 2019.11.21（当前版）在所有 AWS 区域中都可用。
+ 要创建版本 2017.11.29（旧版）全局表，请首先创建一组空的区域表，然后调用 [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html) API 来创建全局表。您可以通过调用 [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) API 来将副本添加到现有区域表，以此创建版本 2019.11.21（当前版）全局表。
+ 版本 2017.11.29（旧版）要求您在新区域中添加副本之前（包括创建期间）清空表中的所有副本。版本 2019.11.21（当前版）支持您在区域内的已包含数据的表中添加和删除副本。
+ 版本 2017.11.29（旧版）通过以下一组专用的控制面板 API 来管理副本：
  + [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html)
  + [DescribeGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTable.html)
  + [DescribeGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTableSettings.html)
  + [ListGlobalTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListGlobalTables.html)
  + [UpdateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTable.html)
  + [UpdateGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTableSettings.html)

  版本 2019.11.21（当前版）使用 [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html) 和 [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) API 来管理副本。
+ 版本 2017.11.29（旧版）针对每次写入操作发布两条 DynamoDB Streams 记录。版本 2019.11.21（当前版）针对每次写入操作仅发布一条 DynamoDB Streams 记录。
+ 版本 2017.11.29（旧版）填充和更新 `aws:rep:deleting`、`aws:rep:updateregion` 和 `aws:rep:updatetime` 属性。版本 2019.11.21（当前版）不填充或更新这些属性。
+ 版本 2017.11.29（旧版）不在副本间同步[在 DynamoDB 中使用生存时间（TTL）](TTL.md)设置。版本 2019.11.21（当前版）在副本间同步 TTL 设置。
+ 版本 2017.11.29（旧版）不将 TTL 删除操作复制到其它副本。版本 2019.11.21（当前版）会将 TTL 删除操作复制到所有副本。
+ 版本 2017.11.29（旧版）不在副本间同步[自动扩缩](AutoScaling.md)设置。版本 2019.11.21（当前版）会在副本间同步自动扩缩设置。
+ 版本 2017.11.29（旧版）不在副本间同步[全局二级索引（GSI）](GSI.md)设置。版本 2019.11.21（当前版）在副本间同步 GSI 设置。
+ 版本 2017.11.29（旧版）不在副本间同步[静态加密](encryption.usagenotes.md)设置。版本 2019.11.21（当前版）在副本间同步静态加密设置。
+ 版本 2017.11.29（旧版）发布 `PendingReplicationCount` 指标。版本 2019.11.21（当前版）不发布此指标。

## 升级到当前版本
<a name="upgrading-to-current-version"></a>

### 全局表升级所需的权限
<a name="V2globaltables_versions.Notes-permissions"></a>

要升级到版本 2019.11.21（当前版），您必须在包含副本的所有区域中具有 `dynamodb:UpdateGlobalTableversion` 权限。除了访问 DynamoDB 控制台和查看表所必需的权限之外，还需要这些权限。

下面的 IAM 策略授予将任何全局表升级到版本 2019.11.21（当前版）的权限。

```
{
    "version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dynamodb:UpdateGlobalTableversion",
            "Resource": "*"
        }
    ]
}
```

下面的 IAM 策略授予仅将在两个区域中具有副本的 `Music` 全局表升级为版本 2019.11.21（当前版）的权限。

```
{
    "version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dynamodb:UpdateGlobalTableversion",
            "Resource": [
                "arn:aws:dynamodb::123456789012:global-table/Music",
                "arn:aws:dynamodb:ap-southeast-1:123456789012:table/Music",
                "arn:aws:dynamodb:us-east-2:123456789012:table/Music"
            ]
        }
    ]
}
```

### 升级期间的情况
<a name="V2GlobalTablesUpgradeExpectations"></a>
+ 升级时，所有全局表副本将继续处理读取和写入流量。
+ 升级过程需要几分钟到几小时不等，具体取决于表大小和副本数量。
+ 在升级过程中，[TableStatus](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TableDescription.html#DDB-Type-TableDescription-TableStatus) 的值将从 `ACTIVE` 变为 `UPDATING`。您可以通过调用 [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html) API 或使用 DynamoDB 控制台中的**表**视图来查看表的状态。
+ 在升级全局表期间，自动扩缩不会调整全局表的预置容量设置。强烈建议您在升级期间将表设置为[按需](capacity-mode.md#capacity-mode-on-demand)容量模式。
+ 如果您选择在升级时使用[预置](provisioned-capacity-mode.md)容量模式和自动扩缩，则必须增加策略的最小读写吞吐量，以适应升级期间流量的预期增加，避免节流。
+ `ReplicationLatency` 指标可以在升级过程中临时报告延迟峰值或停止报告指标数据。有关更多信息，请参阅[ReplicationLatency](metrics-dimensions.md#ReplicationLatency)。
+ 升级过程完成后，表状态将变为 `ACTIVE`。

### DynamoDB Streams 在升级之前、期间和之后的行为
<a name="V2GlobalTablesUpgradeDDBStreamsBehavior"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/V2globaltables_versions.html)

### 升级到版本 2019.11.21（当前版）
<a name="V2globaltables_versions.upgrade"></a>

请按照以下步骤，使用 AWS 管理控制台升级您的 DynamoDB 全局表版本。

**将全局表升级到版本 2019.11.21（当前版）**

1. 打开 DynamoDB 控制台：[https://console.aws.amazon.com/dynamodb/home](https://console.aws.amazon.com/dynamodb/home)。

1. 在控制台左侧的导航窗格中，选择**表**，然后选择要升级到版本 2019.11.21（当前版）的全局表。

1. 选择**全局表**选项卡。

1. 选择**更新版本**。  
![\[显示“更新版本”按钮的控制台屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/images/GlobalTables-upgrade.png)

1. 阅读并同意新要求，然后选择**更新版本**。

1. 升级过程完成后，控制台上显示的全局表版本将更改为 **2019.11.21**。