恢復 Aurora 資料庫叢集 - Amazon Aurora

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

恢復 Aurora 資料庫叢集

利用 Amazon Aurora MySQL 相容版本,您可以將資料庫叢集恢復到特定時間,而不需從備份還原資料。

恢復概觀

恢復會將資料庫叢集「倒轉」至您指定的時間。恢復不是備份資料庫叢集的替代方式,因此您可以將它還原至某個時間點。不過,相較於傳統的備份和還原,恢復提供下列優點:

  • 您可以輕鬆復原錯誤。如果您不慎地執行破壞性的動作 (例如不帶 WHERE 子句的 DELETE),您可以將資料庫叢集恢復到破壞性動作之前的某個時間點,而使得對服務造成的中斷降到最低。

  • 您可以快速恢復資料庫叢集。將資料庫叢集還原到某個時間點會啟動新的資料庫叢集,並將它從備份資料或資料庫叢集快照還原,這可能需要數小時的時間。恢復資料庫叢集不需要新的資料庫叢集,並且倒轉資料庫叢集只需要幾分鐘。

  • 您可以瀏覽稍早的資料變更。您可以重複地往返恢復時間點中的資料庫叢集,以幫助判定何時發生了資料變更。例如,您可以將資料庫叢集往前恢復三小時,然後再恢復至該時間點的一小時後。在此情況下,恢復時間為原始時間前的兩小時。

注意

如需將資料庫叢集還原至某個時間點的詳細資訊,請參閱 備份與還原 Aurora 資料庫叢集的概觀

恢復時段

使用恢復時,會有目標恢復時段和實際恢復時段:

  • 目標恢復時段為您希望資料庫叢集能夠恢復的時間量。啟用恢復時,您會指定目標恢復時段。例如,如果您希望能夠恢復一天的資料庫叢集,可以指定 24 小時的目標恢復時段。

  • 實際恢復時段為您的資料庫叢集可以恢復的實際時間量,其可能小於目標恢復時段。實際恢復時段會基於您的工作負載和可用於存放資料庫變更相關資訊的儲存體 (稱為變更記錄)。

當您在啟用恢復功能的情況下更新 Aurora 資料庫叢集時,即會產生變更記錄。Aurora 會保留目標恢復視窗的變更記錄,而且您需要按小時付費才能儲存它們。您的資料庫叢集上的目標恢復時段和工作負載都會決定您存放的變更記錄數量。工作負載為在指定時間中您對資料庫叢集的變更量。如果工作負載繁重,即您在恢復時段時存放的變更記錄量會比工作負載較輕時所存放的變更記錄量還多。

您可以將目標恢復時段視為您希望資料庫叢集能夠恢復的時間上限目標。在多數情況中,您可以恢復您指定的時間上限。不過,在部分情況中,資料庫叢集無法儲存足夠變更記錄來恢復時間上限,因此您的實際恢復時段會小於您的目標。一般來說,當資料庫叢集上的工作負載極為繁重時,實際恢復時段會小於目標。實際恢復時段小於目標時,我們會傳送通知給您。

對資料庫叢集啟用恢復,而您刪除儲存在資料庫叢集中的資料表時,Aurora 會將該資料表保留在恢復變更記錄中。它會這麼做,使得您可以還原到刪除資料表之前的時間。如果在您的恢復時段中沒有足夠空間可存放該資料表,則最終可能會從恢復變更記錄中移除該資料表。

恢復時間

Aurora 一律會恢復到對資料庫叢集一致的時間。這麼做可將恢復完成時交易未遞交的可能性降到最低。指定恢復的時間時,Aurora 會自動選擇最接近的可能一致時間。這種方法意味著完成的回溯可能不完全符合您指定的時間,但您可以使用 describe-db-cluster-backtracks AWS CLI 命令確定回溯的確切時間。如需詳細資訊,請參閱 擷取現有恢復

恢復限制

下列限制適用恢復:

  • 您僅在透過將恢復功能啟用時所建立的資料庫叢集上才可使用恢復。您無法修改資料庫叢集以啟用「回溯」功能。您可以在建立新資料庫叢集或還原資料庫叢集的快照時啟用恢復功能。

  • 恢復時段的限制為 72 小時。

  • 恢復會影響整個資料庫叢集。例如,您不可以選擇性地恢復單一資料表或單一資料更新。

  • 您無法從啟用回溯的叢集建立跨區域僅供讀取複本,但仍可在叢集上啟用二進位記錄 (binlog) 複寫。如果您嘗試回溯已啟用二進位記錄的資料庫叢集,除非您選擇強制回溯,否則通常會發生錯誤。任何嘗試強制回溯的嘗試都會中斷下游僅供讀取複本,並干擾藍/綠部署等其他作業。

  • 您不可以將資料庫複製恢復到建立資料庫複製之前的時間。不過,您可以使用原始資料庫來恢復到建立複製之前的時間。如需資料庫複製的詳細資訊,請參閱 複製 Amazon Aurora 資料庫叢集的一個磁碟區

  • 恢復會造成短暫的資料庫執行個體干擾。您必須在開始恢復操作之前停止或暫停應用程式,以確保沒有新的讀取或寫入請求。在恢復操作期間,Aurora 會暫停資料庫、關閉任何開啟中連線,並捨棄任何未遞交的讀取和寫入。然後會等候恢復操作完成。

  • 在不支援回溯的區域中,您無法還原具備回溯功能之叢集的跨 AWS 區域快照。

  • 如果您對啟用恢復的叢集從 Aurora MySQL 版本 2 就地升級至版本 3,無法恢復到升級發生之前的時間點。

區域和版本可用性

回溯不適用於 Aurora PostgreSQL。

下列是 Aurora MySQL 進行恢復時支援的引擎和區域可用性。

區域 Aurora MySQL 第 3 版 Aurora MySQL 第 2 版
美國東部 (俄亥俄) 所有版本 所有版本
美國東部 (維吉尼亞北部) 所有版本 所有版本
美國西部 (加利佛尼亞北部) 所有版本 所有版本
美國西部 (奧勒岡) 所有版本 所有版本
非洲 (開普敦)
Asia Pacific (Hong Kong)
亞太區域 (雅加達)
亞太區域 (墨爾本)
亞太區域 (孟買) 所有版本 所有版本
亞太區域 (大阪) 所有版本 2.07.3 版及更新版本
亞太區域 (首爾) 所有版本 所有版本
亞太區域 (新加坡) 所有版本 所有版本
亞太區域 (悉尼) 所有版本 所有版本
亞太區域 (東京) 所有版本 所有版本
加拿大 (中部) 所有版本 所有版本
加拿大西部 (卡加利)
中國 (北京)
中國 (寧夏)
歐洲 (法蘭克福) 所有版本 所有版本
歐洲 (愛爾蘭) 所有版本 所有版本
歐洲 (倫敦) 所有版本 所有版本
歐洲 (米蘭)
Europe (Paris) 所有版本 所有版本
歐洲 (西班牙)
歐洲 (斯德哥爾摩)
歐洲 (蘇黎世)
以色列 (特拉維夫)
Middle East (Bahrain)
中東 (阿拉伯聯合大公國)
南美洲 (聖保羅)
AWS GovCloud (美國東部)
AWS GovCloud (美國西部)

啟用恢復之叢集的升級考量

您可以從 Aurora MySQL 第 2 版和第 3 版升級啟用恢復的資料庫叢集,因為 Aurora MySQL 第 3 版的所有次要版本都支援恢復。

設定恢復

若要使用恢復功能, 您必須啟用恢復並指定目標恢復時段。否則會停用恢復。

針對目標恢復時段,指定您希望能夠使用恢復倒轉資料庫的時間。Aurora 會嘗試保留足夠的變更記錄來支援該時間時段。

您可以在建立新資料庫叢集時使用主控台來設定恢復。您還可以修改資料庫叢集,以變更啟用恢復之叢集的恢復視窗。如果您透過將恢復視窗設定為 0 來完全關閉叢集的恢復功能,則無法再次為該叢集啟用恢復。

建立資料庫叢集時使用主控台來設定恢復

建立新 Aurora MySQL 資料庫叢集時,您會在 Backtrack (恢復) 區段中選擇 Enable Backtrack (啟用恢復),並指定大於零的 Target Backtrack window (目標恢復時段) 值時設定恢復。

若要建立資料庫叢集,請遵循 建立 Amazon Aurora 資料庫叢集 中的指示。下圖顯示 Backtrack (恢復) 區段。

使用主控台在資料庫叢集建立期間啟用恢復

建立新資料庫叢集時,Aurora 沒有資料庫叢集工作負載的資料。因此它不能專為新資料庫叢集估計成本。相反地,主控台會根據一般工作負載為指定的目標恢復時段呈現一般使用者成本。一般成本的目的是為恢復功能的成本提供一般參考。

重要

您的實際成本可能會符合一般成本,因為您的實際成本是根據資料庫叢集的工作負載。

修改資料庫叢集時使用主控台設定恢復

您可以使用主控台修改資料庫叢集的恢復。

注意

目前,您只能為已啟用恢復功能的資料庫叢集修改恢復。對於在已停用恢復功能的情況下而建立的資料庫叢集,或如果資料庫叢集已停用「恢復」功能,則不會顯示 Backtrack (恢復) 區段。

使用主控台修改資料庫叢集的恢復
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 選擇 Databases (資料庫)。

  3. 選擇您要修改的叢集,並選擇 Modify (修改)

  4. 針對 Target Backtrack window (目標恢復時段),修改您希望能夠恢復的時間。限制為 72 小時。

    使用主控台修改恢復

    主控台會根據資料庫叢集的過去工作負載顯示指定時間的估計成本:

    • 如果在資料庫叢集上停用回溯,則成本估算會根據 Amazon CloudWatch 中資料庫叢集的VolumeWriteIOPS指標為基礎。

    • 如果先前已在資料庫叢集上啟用回溯,則成本估算會根據 Amazon CloudWatch 中資料庫叢集的BacktrackChangeRecordsCreationRate指標為基礎。

  5. 選擇 Continue (繼續)

  6. 對於 Scheduling of Modifications (修改排程),選擇以下其中一項:

    • Apply during the next scheduled maintenance window (在下一個排定的維護時段套用) – 在下一個維護時段前,等候套用 Target Backtrack window (目標恢復時段) 修改。

    • Apply immediately (立即套用) – 盡快套用 Target Backtrack window (目標恢復時段) 修改。

  7. 選擇 Modify cluster (修改叢集)。

當您使用 create-db-cluster AWS CLI 命令建立新的 Aurora MySQL 資料庫叢集時,會在您指定大於零的--backtrack-window值時設定回溯。--backtrack-window 值會指定目標恢復時段。如需詳細資訊,請參閱 建立 Amazon Aurora 資料庫叢集

您也可以使用下列 AWS CLI 指令指定--backtrack-window值:

下列程序說明如何使用 AWS CLI來修改資料庫叢集的目標恢復時段。

使用修改資料庫叢集的目標回溯視窗 AWS CLI
  • 呼叫 modify-db-cluster AWS CLI 命令並提供下列值:

    • --db-cluster-identifier – 資料庫叢集的名稱。

    • --backtrack-window – 您希望資料庫叢集能夠恢復的秒數上限。

    下列範例會將 sample-cluster 的目標恢復時段設定為一天 (86,400 秒)。

    對於LinuxmacOS、或Unix:

    aws rds modify-db-cluster \ --db-cluster-identifier sample-cluster \ --backtrack-window 86400

    在 Windows 中:

    aws rds modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --backtrack-window 86400
注意

目前您可以只對透過恢復功能啟用時所建立的資料庫叢集啟用恢復。

使用 CreateDBCluster Amazon RDS API 操作建立新的 Aurora MySQL 資料庫叢集時,當您指定大於零的 BacktrackWindow 值時,即會設定恢復。BacktrackWindow 值可指定 DBClusterIdentifier 值中指定之資料庫叢集的目標恢復時段。如需更多詳細資訊,請參閱 建立 Amazon Aurora 資料庫叢集

您也可以使用下列 API 操作來指定 BacktrackWindow 值:

注意

目前您可以只對透過恢復功能啟用時所建立的資料庫叢集啟用恢復。

執行恢復

您可以將資料庫叢集恢復至指定的恢復時間戳記。如果恢復時間戳記不早於最早可能的恢復時間,並且不是在未來,資料庫叢集即會恢復至該時間戳記。

否則會發生一般錯誤。同時,如果您嘗試恢復已啟用二進位日誌的資料庫叢集,除非您選擇強制發生恢復,否則會發生一般錯誤。強制發生恢復可能會干擾使用二進位日誌的其他操作。

重要

恢復不會為其進行的變更產生 binlog 項目。如果您已為該資料庫叢集啟用二進位日誌,恢復可能不會與您的 binlog 實作相容。

注意

針對資料庫複製,您不可以恢復早於建立該複製的日期和時間的資料庫叢集。如需資料庫複製的詳細資訊,請參閱 複製 Amazon Aurora 資料庫叢集的一個磁碟區

下列程序說明如何使用主控台來執行資料庫叢集的恢復操作。

使用主控台來執行恢復操作
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選擇您要恢復之資料庫叢集的主要執行個體。

  4. Actions (動作) 中,選擇 Backtrack DB cluster (恢復資料庫叢集)。

  5. Backtrack DB cluster (恢復資料庫叢集) 頁面上,輸入恢復資料庫叢集的目標恢復時間戳記。

    恢復資料庫叢集
  6. 選擇 Backtrack DB cluster (恢復資料庫叢集)

下列程序說明如何使用 AWS CLI恢復資料庫叢集。

使用回溯資料庫叢集 AWS CLI
  • 呼叫 backtrack-db-cluster AWS CLI 命令並提供下列值:

    • --db-cluster-identifier – 資料庫叢集的名稱。

    • --backtrack-to – 要恢復資料庫叢集的目標恢復時間戳記,指定格式為 ISO 8601。

    下列範例會將資料庫叢集 sample-cluster 恢復至 2018 年 3 月 19 日上午 10:00。

    對於LinuxmacOS、或Unix:

    aws rds backtrack-db-cluster \ --db-cluster-identifier sample-cluster \ --backtrack-to 2018-03-19T10:00:00+00:00

    在 Windows 中:

    aws rds backtrack-db-cluster ^ --db-cluster-identifier sample-cluster ^ --backtrack-to 2018-03-19T10:00:00+00:00

若要使用 Amazon RDS API 恢復資料庫叢集,請使用 BacktrackDBCluster 操作。此操作會將 DBClusterIdentifier 值中指定的資料庫叢集恢復到指定的時間。

監控恢復

您可以檢視恢復資訊並監控資料庫叢集的恢復指標。

若要使用主控台檢視恢復資訊並監控恢復指標
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 選擇 Databases (資料庫)。

  3. 選擇要開啟相關資訊之資料庫叢集的名稱。

    恢復資訊位在 Backtrack (恢復) 區段。

    資料庫叢集的恢復詳細資訊

    啟用恢復時,下列資訊可供使用:

    • Target window (目標時段) – 針對目標恢復時段指定的目前時間。目標為有足夠儲存體時您可以恢復的時間上限。

    • Actual window (實際時段) – 您可以恢復的實際時間量,其可以小於目標恢復時段。實際恢復時段是根據您的工作負載和可用於保留恢復變更記錄的儲存體。

    • Earliest backtrack time (最早恢復時間) – 資料庫叢集的最早可能恢復時間。您不可以將資料庫叢集恢復至較所顯示時間更早的時間。

  4. 執行下列動作來檢視資料庫叢集的恢復指標:

    1. 在導覽窗格中,選擇 Instances (執行個體)。

    2. 選擇要顯示其資料庫叢集詳細資訊之主要執行個體的名稱。

    3. CloudWatch區段中,在CloudWatch方塊中輸Backtrack入以僅顯示「回溯」量度。

      恢復指標

      下列指標會顯示:

      • Backtrack Change Records Creation Rate (Count) (恢復變更記錄建立速率 (計數)) – 此指標會顯示在五分鐘當中為您的資料庫叢集建立的恢復變更記錄的數量。您可以使用這個指標來估計目標恢復時段的恢復成本。

      • [Billed] Backtrack Change Records Stored (Count) ([已計費] 恢復存放的變更記錄 (計數)) – 這個指標顯示您的資料庫叢集使用的恢復變更記錄的實際數量。

      • Backtrack Window Actual (Minutes) (恢復時段實際 (分鐘)) – 這個指標顯示目標恢復時段與實際恢復時段之間的差異。例如,如果您的目標恢復時段為 2 小時 (120 分鐘),並且這個指標顯示實際恢復時段為 100 分鐘,那麼實際恢復時段會小於目標。

      • Backtrack Window Alert (Count) (恢復時段警示 (計數)) – 這個指標顯示實際恢復時段小於指定期間的目標恢復時段。

      注意

      下列指標可能落後於目前的時間:

      • Backtrack Change Records Creation Rate (Count) (恢復變更記錄建立速率 (計數))

      • [Billed] Backtrack Change Records Stored (Count) ([已計費] 已存放的恢復變更記錄 (計數))

下列程序說明如何使用 AWS CLI檢視資料庫叢集的恢復資訊。

若要檢視資料庫叢集的回溯資訊,請使用 AWS CLI
  • 呼叫 describe-db-clusters AWS CLI 命令並提供下列值:

    • --db-cluster-identifier – 資料庫叢集的名稱。

    下列範例列出 sample-cluster 的恢復資訊。

    對於LinuxmacOS、或Unix:

    aws rds describe-db-clusters \ --db-cluster-identifier sample-cluster

    在 Windows 中:

    aws rds describe-db-clusters ^ --db-cluster-identifier sample-cluster

若要使用 Amazon RDS API 檢視資料庫叢集的恢復資訊,請使用 DescribeDBClusters 操作。此操作會傳回 DBClusterIdentifier 值中指定之資料庫叢集的恢復資訊。

使用主控台訂閱恢復事件

下列程序說明如何使用主控台訂閱恢復事件。在您的實際恢復時段小於您的目標恢復時段時,該事件會傳送電子郵件或文字通知給您。

使用主控台檢視恢復資訊
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 選擇 Event subscriptions (事件訂閱)

  3. 選擇 Create event subscription (建立事件訂閱)

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

  5. Target (目標) 區段中,選擇 New email topic (新電子郵件主題)

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

  7. Source (來源) 區段中,針對 Source type (來源類型) 選擇 Instances (執行個體)

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

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

    您的頁面應該看起來類似下列頁面。

    恢復事件訂閱
  10. 選擇建立

擷取現有恢復

您可以擷取關於資料庫叢集現有恢復的資訊。此資訊包括恢復的唯一識別符、恢復的開始和結束日期和時間、要求恢復的日期和時間,以及恢復的目前狀態。

注意

目前,您無法使用主控台擷取現有恢復。

下列程序說明如何使用 AWS CLI擷取資料庫叢集的現有恢復。

若要使用擷取現有的回溯 AWS CLI
  • 呼叫 describe-db-cluster-backtracks AWS CLI 命令並提供下列值:

    • --db-cluster-identifier – 資料庫叢集的名稱。

    下列範例會擷取 sample-cluster 的現有恢復。

    對於LinuxmacOS、或Unix:

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

    在 Windows 中:

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

若要使用 Amazon RDS API 擷取資料庫叢集回溯的相關資訊,請使用描述 B 操作。ClusterBacktracks此操作會傳回 DBClusterIdentifier 值中指定的資料庫叢集恢復的相關資訊。

停用資料庫叢集的恢復

您可以停用資料庫叢集的恢復功能。

您可以使用主控台停用資料庫叢集的恢復。完全關閉叢集的恢復功能後,無法再次為該叢集啟用恢復。

使用主控台停用資料庫叢集的恢復功能
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 選擇 Databases (資料庫)。

  3. 選擇您要修改的叢集,並選擇 Modify (修改)

  4. Backtrack (恢復) 區段中,選擇 Disable Backtrack (停用恢復)

  5. 選擇 Continue (繼續)

  6. 對於 Scheduling of Modifications (修改排程),選擇以下其中一項:

    • Apply during the next scheduled maintenance window (在下一個排定的維護時段套用) – 等候在下一個維護時段時套用修改。

    • Apply immediately (立即套用) – 盡快套用修改。

  7. 選擇 Modify Cluster (修改叢集)。

您可以使用將目標回溯視窗設定為 0 (零) 來停用資料庫叢集的 Backtrack 功能。 AWS CLI 完全關閉叢集的恢復功能後,無法再次為該叢集啟用恢復。

使用修改資料庫叢集的目標回溯視窗 AWS CLI
  • 呼叫 modify-db-cluster AWS CLI 命令並提供下列值:

    • --db-cluster-identifier – 資料庫叢集的名稱。

    • --backtrack-window – 指定 0 以關閉恢復。

    下列範例會停用 sample-cluster 的恢復功能,方法是將 --backtrack-window 設定為 0

    對於LinuxmacOS、或Unix:

    aws rds modify-db-cluster \ --db-cluster-identifier sample-cluster \ --backtrack-window 0

    在 Windows 中:

    aws rds modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --backtrack-window 0

若要使用 Amazon RDS API 停用資料庫叢集的恢復功能,請使用 ModifyDBCluster 操作。將 BacktrackWindow 值設為 0 (零),並在 DBClusterIdentifier 值中指定資料庫叢集。完全關閉叢集的恢復功能後,無法再次為該叢集啟用恢復。