

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

# 在 Amazon Keyspaces 中如何进行多区域复制
<a name="multiRegion-replication_how-it-works"></a>

本节概述了 Amazon Keyspaces 多区域复制的工作原理。有关定价的更多信息，请参阅 [Amazon Keyspaces（Apache Cassandra 兼容）定价](https://aws.amazon.com/keyspaces/pricing)。

**Topics**
+ [在 Amazon Keyspaces 中如何进行多区域复制](#multiRegion-replication_how-it-works-overview)
+ [多区域复制冲突解决方案](#multiRegion-replication_how-it-works-conflict-resolution)
+ [多区域复制灾难恢复](#howitworks_disaster_recovery)
+ [默认情况下，多区域复制处于 AWS 区域 禁用状态](#howitworks_mrr_opt_in)
+ [多区域复制和 point-in-time恢复集成 (PITR)](#howitworks_mrr_pitr)
+ [多区域复制并与 AWS 服务集成](#howitworks_integration)

## 在 Amazon Keyspaces 中如何进行多区域复制
<a name="multiRegion-replication_how-it-works-overview"></a>

Amazon Keyspaces 多区域复制实施了一种数据弹性架构，可将您的数据分布在独立且地理位置分散的各个地方。 AWS 区域它使用*主动/主动复制*，提供本地低延迟，每个区域都能够独立执行读取和写入。

创建 Amazon Keyspaces 多区域密钥空间时，您可以选择要将数据复制到的其他区域。您在多区域键空间中创建的每个表都包含多个副本表（每个区域一个），Amazon Keyspaces 将这些副本表视为一个单元。

每个副本都具有相同的表名和相同的主键架构。当应用程序将数据写入一个区域中的本地表时，数据将使用 `LOCAL_QUORUM` 一致性级别持久写入。Amazon Keyspaces 会自动将数据异步复制到其他复制区域。跨区域的复制滞后通常小于一秒，并且不会影响应用程序的性能或吞吐量。

数据写入后，您可以从另一个具有 `LOCAL_ONE/LOCAL_QUORUM` 一致性级别的复制区域的多区域表中读取数据。有关支持的配置和功能的更多信息，请参阅 [Amazon Keyspaces 多区域复制使用说明](multiRegion-replication_usage-notes.md)。

![\[用户在各自的本地读取和写入存储在 Amazon Keyspaces 表中的数据，而 AWS 区域 Amazon Keyspaces 则在所有可用区域的表之间异步复制写入操作。\]](http://docs.aws.amazon.com/zh_cn/keyspaces/latest/devguide/images/keyspaces_multi_Region_replication.png)


## 多区域复制冲突解决方案
<a name="multiRegion-replication_how-it-works-conflict-resolution"></a>

Amazon Keyspaces 多区域复制是完全托管的，这意味着您不必执行复制任务，例如定期运行修复操作来清理数据同步问题。Amazon Keyspaces AWS 区域 通过检测和修复冲突来监控不同表之间的数据一致性，并自动同步副本。

Amazon Keyspaces 使用*以最后写入者为准*数据协调方法。通过这种冲突解决机制，多区域键空间中的所有区域都将同意最新的更新，并收敛到它们都具有相同数据的状态。协调过程对应用程序性能没有影响。为了支持冲突解决，多区域表的客户端时间戳会自动启用并且无法禁用。有关更多信息，请参阅 [Amazon Keyspaces 中的客户端时间戳](client-side-timestamps.md)。

## 多区域复制灾难恢复
<a name="howitworks_disaster_recovery"></a>

通过 Amazon Keyspaces 多区域复制，可以在每个区域中异步复制写入内容。在极少数情况下，如果出现单个区域降级或故障，多区域复制可以帮助您在对应用程序几乎没有影响的情况下从灾难中恢复。灾难恢复通常使用恢复时间目标 (RTO) 和恢复点目标 (RPO) 的值来衡量。

 **恢复时间目标**：灾难后系统恢复工作状态所需的时间。RTO 用于衡量您的工作负载可以容忍的停机时间（按时间衡量）。对于使用多区域复制故障转移到未受影响区域的灾难恢复计划，RTO 可能接近零。RTO 受到应用程序检测到故障并将流量重定向到另一个区域的速度的限制。

 **恢复点目标**：可能丢失的数据量（按时间衡量）。对于使用多区域复制故障转移到未受影响区域的灾难恢复计划，RPO 通常为个位数秒。RPO 受到失效转移目标副本的复制延迟的限制。

如果出现区域性故障或性能下降，您无需提升辅助区域或执行数据库失效转移过程，因为 Amazon Keyspaces 中的复制采用主动/主动模式。相反，您可以使用 Amazon Route 53 将您的应用程序路由到最近的运行状况良好的区域。要了解有关 Route 53 的更多信息，请参阅[什么是 Amazon Route 53？](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html)。

如果单个副本表 AWS 区域 变得隔离或降级，您的应用程序可以使用 Route 53 将流量重定向到其他区域，以对不同的副本表执行读取和写入。您还可以应用自定义业务逻辑来确定何时将请求重定向到其他区域。例如，这可让您的应用程序知道有多个可用的端点。

当该区域恢复联机状态时，Amazon Keyspaces 会继续将任何待处理的写入操作从该区域传播到其他区域中的副本表。它还会继续将写入从其他副本表传播到现在重新联机的区域。

## 默认情况下，多区域复制处于 AWS 区域 禁用状态
<a name="howitworks_mrr_opt_in"></a>

以下内容支持 Amazon Keyspaces 多区域复制 AWS 区域 ，默认情况下处于禁用状态：
+ 非洲（开普敦）区域
+ 中东（阿联酋）区域
+ 亚太地区（香港）区域
+ 中东（巴林）区域

在使用 Amazon Keyspaces 多区域复制中默认禁用的区域之前，您必须先启用该区域。有关更多信息，请参阅《[https://docs.aws.amazon.com/organizations/latest/userguide/](https://docs.aws.amazon.com/organizations/latest/userguide/)[中的在您的账户中启用或禁用](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable)。

启用区域后，您可以在该区域创建新的 Amazon Keyspaces 资源，并将该区域添加到多区域密钥空间。

当您禁用 Amazon Keyspaces 多区域复制所使用的区域时，Amazon Keyspaces 会启动 24 小时的宽限期。在此时间段内，您可以预期会出现以下行为：
+ Amazon Keyspaces 继续在已启用的区域中执行数据操作语言 (DML) 操作。
+ Amazon Keyspaces 暂停将数据更新从已启用区域复制到禁用区域。
+ Amazon Keyspaces 会阻止禁用区域中的所有数据定义语言 (DDL) 请求。

如果您错误地禁用了该区域，则可以在 24 小时内重新启用该区域。如果您在 24 小时宽限期内重新启用该区域，Amazon Keyspaces 将采取以下措施：
+ 自动恢复对重新启用的区域的所有复制。
+ 为了确保数据一致性，复制禁用该区域时在已启用的区域中进行的所有数据更新。
+ 自动继续所有其他多区域复制操作。

如果在 24 小时窗口关闭后该区域仍处于禁用状态，Amazon Keyspaces 会采取以下措施将该区域从多区域复制中永久移除：
+ 从所有多区域复制密钥空间中移除禁用的区域。
+ 将禁用区域中的多区域复制表副本转换为单区域密钥空间和表。
+ Amazon Keyspaces 不会从已禁用的区域中删除任何资源。

在 Amazon Keyspaces 将禁用的区域从多区域密钥空间中永久移除后，您将无法重新添加已禁用的区域。

## 多区域复制和 point-in-time恢复集成 (PITR)
<a name="howitworks_mrr_pitr"></a>

Point-in-time 多区域表支持恢复。要使用 PITR 成功还原多区域表，必须满足以下条件。
+ 源表和目标表必须配置为多区域表。
+ 源表键空间和目标表键空间的复制区域必须相同。
+ 必须在源表的所有副本上启用 PITR。

您可以从源表可用的任何区域运行还原语句。Amazon Keyspaces 会自动还原每个区域中的目标表。有关 PITR 的更多信息，请参阅[Amazon Keyspaces 中 point-in-time恢复的工作原理](PointInTimeRecovery_HowItWorks.md)。

创建多区域表时，您在创建过程中定义的 PITR 设置将自动应用于所有区域中的所有表。当您使用更改 PITR 设置时`ALTER TABLE`，Amazon Keyspaces 仅将更新应用于本地表，而不应用于其他区域的副本。要为现有的多区域表启用 PITR，必须对所有副本重复该`ALTER TABLE`语句。

## 多区域复制并与 AWS 服务集成
<a name="howitworks_integration"></a>

您可以使用 Amazon CloudWatch 指标监控不同 AWS 区域 表之间的复制性能。以下指标提供对多区域键空间的持续监控。
+ `ReplicationLatency`：该指标可衡量将 `updates`、`inserts` 或 `deletes` 从一个副本表复制到多区域键空间中的另一个副本表所花费的时间。

有关如何监控 CloudWatch 指标的更多信息，请参阅[使用亚马逊监控亚马逊密钥空间 CloudWatch](monitoring-cloudwatch.md)。