

# 回溯 Aurora 数据库集群
<a name="AuroraMySQL.Managing.Backtrack"></a>

使用 Amazon Aurora MySQL 兼容版，您可以将数据库集群回溯到特定时间，而无需从备份还原数据。

**Contents**
+ [回溯概述](#AuroraMySQL.Managing.Backtrack.Overview)
  + [回溯时段](#AuroraMySQL.Managing.Backtrack.Overview.BacktrackWindow)
  + [回溯时间](#AuroraMySQL.Managing.Backtrack.Overview.BacktrackTime)
  + [回溯限制](#AuroraMySQL.Managing.Backtrack.Limitations)
+ [区域和版本可用性](#AuroraMySQL.Managing.Backtrack.Availability)
+ [启用回溯的集群的升级注意事项](#AuroraMySQL.Managing.Backtrack.Upgrade)
+ [配置 Aurora MySQL 数据库集群回溯](AuroraMySQL.Managing.Backtrack.Configuring.md)
+ [对 Aurora MySQL 数据库集群执行回溯](AuroraMySQL.Managing.Backtrack.Performing0.md)
+ [监控 Aurora MySQL 数据库集群回溯](AuroraMySQL.Managing.Backtrack.Monitoring.md)
+ [使用控制台订阅回溯事件](#AuroraMySQL.Managing.Backtrack.Event.Console)
+ [检索现有回溯](#AuroraMySQL.Managing.Backtrack.Retrieving)
+ [对 Aurora MySQL 数据库集群禁用回溯](AuroraMySQL.Managing.Backtrack.Disabling.md)

## 回溯概述
<a name="AuroraMySQL.Managing.Backtrack.Overview"></a>

回溯可以将数据库集群“倒回”到您指定的时间。回溯不是备份数据库集群以使您能够还原到某个时间点的替代方法。不过，相比传统备份和还原，回溯具有以下优势：
+ 您可以轻松撤消错误。如果您错误地执行了破坏性操作，例如没有 WHERE 子句的 DELETE 操作，您可以通过尽可能减少服务中断的方式，将数据库集群回溯到执行破坏性操作之前的时间。
+ 您可以快速回溯数据库集群。将数据库集群还原到某个时间点需要启动新数据库集群，然后从备份数据或数据库集群快照来还原它，这可能需要数个小时的时间。回溯数据库集群不需要新数据库集群，可在数分钟内倒回数据库集群。
+ 您可以浏览以前的数据更改。您可以在时间点中向前和向后反复回溯数据库集群，帮助确定什么时候发生了特定数据更改。例如，您可以向后回溯数据库集群三个小时，然后向前回溯一个小时。在这种情况下，回溯时间为原始时间的两个小时之前。

**注意**  
有关将数据库集群回溯到某个时间点的信息，请参阅[备份和还原 Aurora 数据库集群的概述](Aurora.Managing.Backups.md)。

### 回溯时段
<a name="AuroraMySQL.Managing.Backtrack.Overview.BacktrackWindow"></a>

使用回溯时，有一个目标回溯时段和一个实际回溯时段：
+ *目标回溯时段*是您希望数据库集群能够回溯的时间长度。在启用回溯时，您需要指定*目标回溯时段*。例如，如果您希望能够将数据库集群回溯 1 天，则指定 24 小时的目标回溯时段。
+ *实际回溯时段*是您可以实际回溯数据库集群的时间长度，这可能会小于目标回溯时段。实际回溯时段基于您的工作负载以及可用于存储数据库更改相关信息 (称为*更改记录*) 的存储。

当您在启用回溯的情况下对 Aurora 数据库集群进行更新时，会生成更改记录。Aurora 会保留目标回溯时段内的更改记录，您需要按小时支付这些记录的储存费用。目标回溯时段和数据库集群上的工作负载共同确定了您存储的更改记录数。工作负载是您在指定时间段内对数据库集群进行更改的数量。如果您的工作负载很重，会在回溯时段内存储相比工作负载较轻时更多的更改记录。

您可以将目标回溯时段看作您希望能够回溯数据库集群的最大时间长度。在很多情况下，您可以回溯自己指定的最大时间长度。不过，在一些情况下，数据库集群无法存储足够的更改记录以回溯最大时间长度，您的实际回溯时段小于目标回溯时段。通常，当数据库集群上有非常重的工作负载时，实际回溯时段小于目标回溯时段。在实际回溯时段小于目标回溯时段时，我们会向您发送通知。

为数据库集群启用了回溯时，如果您删除了存储在数据库集群中的表，Aurora 会在回溯更改记录中保留该表。通过这样做，您可以返回到删除表之前的时间。如果您的回溯时段中没有足够的空间来存储表，表最终可能会从回溯更改记录中删除。

### 回溯时间
<a name="AuroraMySQL.Managing.Backtrack.Overview.BacktrackTime"></a>

Aurora 始终回溯到与数据库集群相一致的时间。这样做可以消除回溯完成时出现未提交事务的可能性。在您为回溯指定时间时，Aurora 自动选择尽可能接近的一致时间。此方法意味着已完成的回溯可能并非与您指定的时间完全一致，不过您可以使用 [describe-db-cluster-backtracks](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-backtracks.html) AWS CLI 命令确定回溯的确切时间。有关更多信息，请参阅“[检索现有回溯](#AuroraMySQL.Managing.Backtrack.Retrieving)”。

### 回溯限制
<a name="AuroraMySQL.Managing.Backtrack.Limitations"></a>

以下限制适用于回溯：
+ 回溯只能用于在启用回溯功能的情况下创建的数据库集群。您无法修改数据库集群来启用回溯功能。您可以在创建新数据库集群或还原数据库集群的快照时启用回溯功能。
+ 回溯时段的限制为 72 小时。
+ 回溯会影响整个数据库集群。例如，您无法选择性回溯单个表或单个数据更新。
+ 您无法从启用回溯的集群创建跨区域只读副本，但您仍然可以在集群上启用二进制日志（binlog）复制。如果您尝试回溯启用了二进制日志记录的数据库集群，除非您选择强制执行回溯，否则通常会出错。任何强制执行回溯的尝试都将中断下游只读副本并干扰其它操作，例如蓝绿部署。
+ 您无法将数据库克隆回溯到该数据库克隆创建之前的时间点。不过，您可以使用原始数据库回溯到创建克隆之前的时间。有关数据库克隆的更多信息，请参阅[克隆 Amazon Aurora 数据库集群卷](Aurora.Managing.Clone.md)。
+ 回溯会导致短暂的数据库实例中断。您必须先停止或暂停应用程序，然后启动回溯操作，这可以确保没有新的读取或写入请求。在回溯操作期间，Aurora 暂停数据库、克隆所有打开的连接并丢弃任何未提交的读取和写入。然后等待回溯操作完成。
+ 您无法在不支持回溯的 AWS 区域中还原启用回溯的集群的跨区域快照。
+ 如果您对启用了回溯的集群执行从 Aurora MySQL 版本 2 到版本 3 的就地升级，则无法回溯到升级发生之前的某个时间点。

## 区域和版本可用性
<a name="AuroraMySQL.Managing.Backtrack.Availability"></a>

回溯不适用于 Aurora PostgreSQL。

以下是 Aurora MySQL 的回溯功能支持的引擎和区域可用性。


| 区域 | Aurora MySQL 版本 3 | Aurora MySQL 版本 2 | 
| --- | --- | --- | 
| 美国东部（弗吉尼亚州北部） | 所有 版本 | 所有 版本 | 
| 美国东部（俄亥俄州） | 所有 版本 | 所有 版本 | 
| 美国西部（加利福尼亚北部） | 所有 版本 | 所有 版本 | 
| 美国西部（俄勒冈州） | 所有 版本 | 所有 版本 | 
| 非洲（开普敦） | – | – | 
| 亚太地区（香港） | – | – | 
| 亚太地区（雅加达） | – | – | 
| 亚太地区（马来西亚） | – | – | 
| 亚太地区（墨尔本） | – | – | 
| 亚太地区（孟买） | 所有 版本 | 所有 版本 | 
| 亚太地区（新西兰） | – | – | 
| 亚太地区（大阪） | 所有 版本 | 版本 2.07.3 及更高版本 | 
| 亚太地区（首尔） | 所有 版本 | 所有 版本 | 
| 亚太地区（新加坡） | 所有 版本 | 所有 版本 | 
| 亚太地区（悉尼） | 所有 版本 | 所有 版本 | 
| 亚太地区（台北） | – | – | 
| 亚太地区（泰国） | – | – | 
| 亚太地区（东京） | 所有 版本 | 所有 版本 | 
| 加拿大（中部） | 所有 版本 | 所有 版本 | 
| 加拿大西部（卡尔加里） | – | – | 
| 中国（北京） | – | – | 
| 中国（宁夏） | – | – | 
| 欧洲地区（法兰克福） | 所有 版本 | 所有 版本 | 
| 欧洲地区（爱尔兰） | 所有 版本 | 所有 版本 | 
| 欧洲地区（伦敦） | 所有 版本 | 所有 版本 | 
| 欧洲地区（米兰） | – | – | 
| 欧洲地区（巴黎） | 所有 版本 | 所有 版本 | 
| 欧洲地区（西班牙） | – | – | 
| 欧洲地区（斯德哥尔摩） | – | – | 
| 欧洲（苏黎世） | – | – | 
| 以色列（特拉维夫） | – | – | 
| 墨西哥（中部） | – | – | 
| 中东（巴林） | – | – | 
| 中东（阿联酋） | – | – | 
| 南美洲（圣保罗） | – | – | 
| AWS GovCloud（美国东部） | – | – | 
| AWS GovCloud（美国西部） | – | – | 

## 启用回溯的集群的升级注意事项
<a name="AuroraMySQL.Managing.Backtrack.Upgrade"></a>

您可以将支持回溯的数据库集群从 Aurora MySQL 版本 2 升级到版本 3，因为回溯支持 Aurora MySQL 版本 3 的所有次要版本。

## 使用控制台订阅回溯事件
<a name="AuroraMySQL.Managing.Backtrack.Event.Console"></a>

以下过程介绍了如何使用控制台运行订阅回溯事件。在您的实际回溯时段小于目标回溯时段时，该事件向您发送电子邮件或文本通知。

**使用控制台查看回溯信息**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 选择**事件订阅**。

1. 选择**创建事件订阅**。

1. 在**名称**框中，键入事件订阅的名称，然后确保为**已启用**选择了**是**。

1. 在**目标**部分中，选择**新电子邮件主题**。

1. 对于**主题名称**，键入主题的名称，对于**使用以下收件人**，键入接收通知的电子邮件地址或电话号码。

1. 在**源**部分中，为**源类型**选择**实例**。

1. 对于**要包含的实例**，选择**选择特定实例**，然后选择您的数据库实例。

1. 对于**要包含的事件类别**，选择**选择特定事件类别**，然后选择**回溯**。

   您的页面应类似于以下页面。  
![\[回溯事件订阅\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/aurora-backtrack-event.png)

1. 选择**创建**。

## 检索现有回溯
<a name="AuroraMySQL.Managing.Backtrack.Retrieving"></a>

您可以检索有关数据库集群现有回溯的信息。此信息包含回溯的唯一标识符、可以来回回溯的日期和时间、请求回溯的日期和时间以及回溯的当前状态。

**注意**  
目前不能使用控制台检索现有回溯。

### AWS CLI
<a name="AuroraMySQL.Managing.Backtrack.Retrieving.CLI"></a>

以下过程介绍了如何使用 AWS CLI 检索数据库集群的现有回溯。

**使用 AWS CLI 检索现有回溯**
+ 调用 [describe-db-cluster-backtracks](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-backtracks.html) AWS CLI 命令并提供以下值：
  + `--db-cluster-identifier` – 数据库集群的名称。

  以下示例检索 `sample-cluster` 的现有回溯。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds describe-db-cluster-backtracks \
      --db-cluster-identifier sample-cluster
  ```

  对于：Windows

  ```
  aws rds describe-db-cluster-backtracks ^
      --db-cluster-identifier sample-cluster
  ```

### RDS API
<a name="AuroraMySQL.Managing.Backtrack.Retrieving.API"></a>

要使用 Amazon RDS API 检索有关数据库集群回溯的信息，请使用 [DescribeDBClusterBacktracks](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusterBacktracks.html) 操作。该操作返回在 `DBClusterIdentifier` 值中指定的数据库集群的回溯相关信息。