

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

# 使用異地同步備份將 MemoryDB 中的停機時間降至最低
<a name="autofailover"></a>

有許多執行個體，MemoryDB 可能需要取代主節點；這些執行個體包括特定類型的計劃維護，以及不太可能發生的主節點或可用區域故障事件。

節點故障的回應取決於哪個節點失敗。不過，在所有情況下，MemoryDB 都會確保節點替換或容錯移轉期間不會遺失任何資料。例如，如果複本失敗，則會取代失敗的節點，並從交易日誌同步資料。如果主節點失敗，容錯移轉會觸發至一致的複本，以確保容錯移轉期間不會遺失任何資料。現在會從新的主節點提供寫入。然後取代舊的主節點，並從交易日誌同步。

如果單一節點碎片 （無複本） 上的主節點失敗，MemoryDB 會停止接受寫入，直到取代主節點並從交易日誌同步。

節點取代可能會對叢集造成一些停機時間，但如果多可用區域處於作用中狀態，則會將停機時間降至最低。主節點的角色會自動容錯移轉至其中一個複本。您不需要建立和佈建新的主節點，因為 MemoryDB 會以透明的方式處理此問題。此容錯移轉及複本提升可確保您能在提升完成時立即繼續寫入新的主要節點。

如果因維護更新或服務更新而啟動計劃節點替換，請注意計劃的節點替換會在叢集提供傳入寫入請求時完成。

MemoryDB 叢集上的異地同步備份可改善容錯能力。尤其在叢集的主要節點因任何原因變得無法連線或失敗的情況下，更是如此。MemoryDB 叢集上的異地同步備份需要每個碎片具有多個節點，且會自動啟用。

**Topics**
+ [具有異地同步備份回應的故障案例](#autofailover.scenarios)
+ [測試自動容錯移轉](#auto-failover-test)

## 具有異地同步備份回應的故障案例
<a name="autofailover.scenarios"></a>

如果異地同步備份作用中，失敗的主節點會容錯移轉至可用的複本。複本會自動與交易日誌同步，並成為主要節點，這比建立新的主要節點和重新佈建要快得多。此程序通常只需要幾秒鐘，您便能再次寫入叢集。

當異地同步備份作用中時，MemoryDB 會持續監控主節點的狀態。若主要節點故障，便會根據故障的類型執行以下其中一個動作。

**Topics**
+ [只有主節點故障的故障案例](#autofailover.scenarios.primaryonly)
+ [主節點和某些複本失敗時的失敗案例](#autofailover.scenarios.primaryandeplicas)
+ [整個叢集故障的故障案例](#autofailover.scenarios.allfail)

### 只有主節點故障的故障案例
<a name="autofailover.scenarios.primaryonly"></a>

如果只有主節點失敗，複本會自動成為主節點。然後，替代複本會在與失敗主要複本相同的可用區域中建立和佈建。

當只有主節點失敗時，MemoryDB Multi-AZ 會執行下列動作：

1. 失敗的主要節點會離線。

1. up-to-date複本會自動成為主要複本。

   一旦容錯移轉程序完成，即可繼續寫入，通常只需幾秒鐘。

1. 替代複本已啟動並佈建。

   替代複本會在失敗的主節點所在的可用區域中啟動，以便維護節點的分佈。

1. 複本會與交易日誌同步。

如需尋找叢集端點的資訊，請參閱下列主題：
+ [尋找 MemoryDB 叢集的端點 (MemoryDB API)](endpoints.md#endpoints.find.api.clusters)

 

### 主節點和某些複本失敗時的失敗案例
<a name="autofailover.scenarios.primaryandeplicas"></a>

如果主要複本和至少一個複本失敗，up-to-date複本會提升為主要叢集。新的複本也會在與失敗節點相同的可用區域中建立和佈建。

當主節點和某些複本失敗時，MemoryDB Multi-AZ 會執行下列動作：

1. 失敗的主節點和失敗的複本會離線。

1. 可用的複本將成為主節點。

   一旦容錯移轉完成，即可繼續寫入，通常只需幾秒鐘。

1. 建立及佈建替換用的複本。

   替換用的複本會在失敗節點所在的可用區域內建立，維持節點的分佈。

1. 所有節點都會與交易日誌同步。

如需尋找叢集端點的資訊，請參閱下列主題：
+ [尋找 MemoryDB 叢集的端點 (AWS CLI)](endpoints.md#endpoints.find.cli)
+ [尋找 MemoryDB 叢集的端點 (MemoryDB API)](endpoints.md#endpoints.find.api.clusters)

 

### 整個叢集故障的故障案例
<a name="autofailover.scenarios.allfail"></a>

若所有項目都失敗，便會在原始節點的相同可用區域內重新建立及佈建所有節點。

在這種情況下，不會遺失資料，因為資料會保留在交易日誌中。

當整個叢集失敗時，MemoryDB Multi-AZ 會執行下列動作：

1. 失敗的主節點和複本會離線。

1. 建立並佈建替代主節點，並與交易日誌同步。

1. 替換複本會建立並佈建，並與交易日誌同步。

   替代項目會在失敗節點所在的可用區域內建立，維持節點的分佈。

如需尋找叢集端點的資訊，請參閱下列主題：
+ [尋找 MemoryDB 叢集的端點 (AWS CLI)](endpoints.md#endpoints.find.cli)
+ [尋找 MemoryDB 叢集的端點 (MemoryDB API)](endpoints.md#endpoints.find.api.clusters)

## 測試自動容錯移轉
<a name="auto-failover-test"></a>

您可以使用 MemoryDB 主控台、 AWS CLI和 MemoryDB API 來測試自動容錯移轉。

在測試時，請注意下列事項：
+ 您可以在任何 24 小時期間內使用此操作最多五次。
+ 如果您在不同叢集中的碎片上呼叫此操作，您可以同時進行呼叫。
+ 在某些情況下，您可以在相同 MemoryDB 叢集中的不同碎片上多次呼叫此操作。在這種情況下，必須先完成第一個節點取代，才能夠執行後續呼叫。
+ 若要判斷節點取代是否已完成，請使用 MemoryDB 主控台 AWS CLI、 或 MemoryDB API 檢查事件。尋找下列與 相關的事件`FailoverShard`，此處依可能發生的順序列出：

  1. 叢集訊息： `FailoverShard API called for shard <shard-id>`

  1. 叢集訊息： `Failover from primary node <primary-node-id> to replica node <node-id> completed`

  1. 叢集訊息： `Recovering nodes <node-id>`

  1. 叢集訊息： `Finished recovery for nodes <node-id>`

  如需詳細資訊，請參閱下列內容：
  + *MemoryDB API 參考*中的 [DescribeEvents](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html) 
+ 此 API 專為在 MemoryDB 容錯移轉時測試應用程式的行為而設計。並非設計成啟動容錯移轉以解決叢集問題的操作工具。此外，在某些情況下，例如大規模操作事件， AWS 可能會封鎖此 API。

**Topics**
+ [使用 測試自動容錯移轉 AWS 管理主控台](#auto-failover-test-con)
+ [使用 測試自動容錯移轉 AWS CLI](#auto-failover-test-cli)
+ [使用 MemoryDB API 測試自動容錯移轉](#failovershard-test-api)

### 使用 測試自動容錯移轉 AWS 管理主控台
<a name="auto-failover-test-con"></a>

使用下列程序，透過主控台測試自動容錯移轉。

****

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) 的 MemoryDB 主控台。

1. 選擇您要測試之叢集左側的選項按鈕。此叢集必須至少有一個複本節點。

1. 在 **Details (詳細資訊)** 區域中，確認此叢集已啟用異地同步備份。若叢集尚未啟用多個可用區，請選擇不同叢集，或是修改此叢集以啟用多個可用區。如需詳細資訊，請參閱[修改 MemoryDB 叢集](clusters.modify.md)。

1. 選擇叢集名稱。

1. 在**碎片和節點**頁面上，針對您要測試容錯移轉的碎片，選擇碎片的名稱。

1. 針對節點，選擇**容錯移轉主要**。

1. 選擇 **Continue (繼續)** 來容錯移轉主要節點，或是 **Cancel (取消)** 來取消操作而不容錯移轉主要節點。

   在容錯移轉程序期間，主控台會繼續將節點的狀態顯示為「可用」**。若要追蹤容錯移轉測試的進度，請從主控台導覽窗格選擇 **Events (事件)**。在 **Events (事件)** 標籤上，觀察指出您容錯移轉已啟動的事件 (`FailoverShard API called`) 並完成 (`Recovery completed`)。

 

### 使用 測試自動容錯移轉 AWS CLI
<a name="auto-failover-test-cli"></a>

您可以使用操作容錯移轉碎片，在任何啟用異地同步備份的叢集上測試自動 AWS CLI 容錯移轉。 [https://docs.aws.amazon.com/cli/latest/reference/memorydb/failover-shard.html](https://docs.aws.amazon.com/cli/latest/reference/memorydb/failover-shard.html)

**Parameters**
+ `--cluster-name` - 必要。要測試的叢集。
+ `--shard-name` - 必要。您要測試自動容錯移轉的碎片名稱。在 24 小時的滾動期間內，您最多可以測試五個碎片。

下列範例使用 AWS CLI 在 MemoryDB 叢集 `0001` 中的碎片`failover-shard`上呼叫 `my-cluster`。

針對 Linux、macOS 或 Unix：

```
aws memorydb failover-shard \
   --cluster-name my-cluster \
   --shard-name 0001
```

針對 Windows：

```
aws memorydb failover-shard ^
   --cluster-name my-cluster ^
   --shard-name 0001
```

若要追蹤容錯移轉的進度，請使用 AWS CLI `describe-events`操作。

它會傳回下列 JSON 回應：

```
{
    "Events": [
        {
            "SourceName": "my-cluster",
            "SourceType": "cluster",
            "Message": "Failover to replica node my-cluster-0001-002 completed",
            "Date": "2021-08-22T12:39:37.568000-07:00"
        },
        {
            "SourceName": "my-cluster",
            "SourceType": "cluster",
            "Message": "Starting failover for shard 0001",
            "Date": "2021-08-22T12:39:10.173000-07:00"
        }
    ]
}
```

如需詳細資訊，請參閱下列內容：
+ [容錯移轉碎片](https://docs.aws.amazon.com/cli/latest/reference/memorydb/failover-shard.html)
+ [describe-events](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-events.html)

 

### 使用 MemoryDB API 測試自動容錯移轉
<a name="failovershard-test-api"></a>

下列範例會在叢集 `0003`中的碎片`FailoverShard`上呼叫 `memorydb00`。

**Example 測試自動容錯移轉**  

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=FailoverShard
    &ShardName=0003
    &ClusterName=memorydb00
    &Version=2021-01-01
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20210801T192317Z
    &X-Amz-Credential=<credential>
```

若要追蹤容錯移轉的進度，請使用 MemoryDB `DescribeEvents` API 操作。

如需詳細資訊，請參閱下列內容：
+ [FailoverShard](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_FailoverShard.html) 
+ [DescribeEvents](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html) 