

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 恢復 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>

使用恢復時，會有目標恢復時段和實際恢復時段：
+ *目標恢復時段*為您希望資料庫叢集能夠恢復的時間量。啟用恢復時，您會指定*目標恢復時段*。例如，如果您希望能夠恢復一天的資料庫叢集，可以指定 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 版 | 
| --- | --- | --- | 
| 美國東部 (維吉尼亞北部) | 所有版本 | 所有版本 | 
| 美國東部 (俄亥俄) | 所有版本 | 所有版本 | 
| 美國西部 (加利佛尼亞北部) | 所有版本 | 所有版本 | 
| 美國西部 (奧勒岡) | 所有版本 | 所有版本 | 
| 非洲 (開普敦) | – | – | 
| Asia Pacific (Hong Kong) | – | – | 
| 亞太地區 (雅加達) | – | – | 
| 亞太地區 (馬來西亞) | – | – | 
| 亞太地區 (墨爾本) | – | – | 
| 亞太地區 (孟買) | 所有版本 | 所有版本 | 
| 亞太區域 (紐西蘭) | – | – | 
| 亞太地區 (大阪) | 所有版本 | 2.07.3 版及更新版本 | 
| 亞太地區 (首爾) | 所有版本 | 所有版本 | 
| 亞太地區 (新加坡) | 所有版本 | 所有版本 | 
| 亞太地區 (雪梨) | 所有版本 | 所有版本 | 
| 亞太區域 (台北) | – | – | 
| 亞太區域 (泰國) | – | – | 
| 亞太地區 (東京) | 所有版本 | 所有版本 | 
| 加拿大 (中部) | 所有版本 | 所有版本 | 
| 加拿大西部 (卡加利) | – | – | 
| 中國 (北京) | – | – | 
| 中國 (寧夏) | – | – | 
| 歐洲 (法蘭克福) | 所有版本 | 所有版本 | 
| 歐洲 (愛爾蘭) | 所有版本 | 所有版本 | 
| 歐洲 (倫敦) | 所有版本 | 所有版本 | 
| Europe (Milan) | – | – | 
| Europe (Paris) | 所有版本 | 所有版本 | 
| 歐洲 (西班牙) | – | – | 
| 歐洲 (斯德哥爾摩) | – | – | 
| 歐洲 (蘇黎世) | – | – | 
| 以色列 (特拉維夫) | – | – | 
| 墨西哥 (中部) | – | – | 
| Middle East (Bahrain) | – | – | 
| 中東 (阿拉伯聯合大公國) | – | – | 
| 南美洲 (聖保羅) | – | – | 
| 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 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 選擇 **Event subscriptions (事件訂閱)**。

1. 選擇 **Create event subscription (建立事件訂閱)**。

1. 在 **Name (名稱)** 方塊中，輸入事件訂閱的名稱，並確保對 **Enabled (已啟用)** 選取 **Yes (是)**。

1. 在 **Target (目標)** 區段中，選擇 **New email topic (新電子郵件主題)**。

1. 針對 **Topic name (主題名稱)**，輸入主題的名稱，並針對 **With these recipients (含有以下收件人)**，輸入用來接收通知的電子郵件地址或電話號碼。

1. 在 **Source (來源)** 區段中，針對 **Source type (來源類型)** 選擇 **Instances (執行個體)**。

1. 針對 **Instances to include (要併入的執行個體)**，選擇 **Select specific instances (選取特定執行個體)**，並選擇您的資料庫執行個體。

1. 針對 **Event categories to include (要併入的事件類別)**，選擇 **Select specific event categories (選取特定事件類別)**，並選擇 **backtrack (恢復)**。

   您的頁面應該看起來類似下列頁面。  
![\[恢復事件訂閱\]](http://docs.aws.amazon.com/zh_tw/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` 值中指定的資料庫叢集恢復的相關資訊。