本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用異地同步備份將 MemoryDB 中的停機時間降至最低
MemoryDB 可能需要取代主要節點,其中有許多執行個體,其中包括特定類型的計劃維護,以及主要節點或可用區域故障的不太可能事件。
節點故障的回應取決於哪個節點失敗。不過,在所有情況下,MemoryDB 都會確保節點替換或容錯移轉期間不會遺失任何資料。例如,如果複本失敗,則會取代失敗的節點,並從交易日誌同步資料。如果主節點失敗,容錯移轉會觸發至一致的複本,以確保容錯移轉期間不會遺失任何資料。現在會從新的主節點提供寫入。然後取代舊的主節點,並從交易日誌同步。
如果單一節點碎片 (無複本) 上的主節點失敗,MemoryDB 會停止接受寫入,直到取代主節點並從交易日誌同步為止。
節點替換可能會導致叢集有一些停機時間,但如果多可用區域作用中,則停機時間會降至最低。主節點的角色會自動容錯移轉至其中一個複本。您不需要建立新的主節點和佈建,因為 MemoryDB 會透明地處理此問題。此容錯移轉及複本提升可確保您能在提升完成時立即繼續寫入新的主要節點。
如果因維護更新或服務更新而啟動計劃節點替換,請注意計劃的節點替換完成,而叢集會提供傳入的寫入請求。
MemoryDB 叢集上的異地同步備份可改善容錯能力。尤其在叢集的主要節點因任何原因變得無法連線或失敗的情況下,更是如此。MemoryDB 叢集上的異地同步備份需要每個碎片具有多個節點,且會自動啟用。
具有異地同步備份回應的故障案例
如果多可用區域作用中,失敗的主要節點會容錯移轉至可用的複本。複本會自動與交易日誌同步,並成為主要節點,這比建立新的主要節點和重新佈建要快得多。此程序通常只需要幾秒鐘,您便能再次寫入叢集。
當異地同步備份作用中時,MemoryDB 會持續監控主節點的狀態。若主要節點故障,便會根據故障的類型執行以下其中一個動作。
只有主節點故障的故障案例
如果只有主節點失敗,複本會自動成為主節點。然後,替代複本會建立並佈建在與失敗主要複本相同的可用區域中。
當只有主節點失敗時,MemoryDB Multi-AZ 會執行下列動作:
失敗的主要節點會離線。
up-to-date複本會自動成為主要複本。
一旦容錯移轉程序完成,即可繼續寫入,通常只需幾秒鐘。
替代複本已啟動並佈建。
替換複本會在失敗的主要節點所在的可用區域中啟動,以便維持節點的分佈。
複本會與交易日誌同步。
如需尋找叢集端點的資訊,請參閱下列主題:
主節點和某些複本失敗時的失敗案例
如果主要複本和至少一個複本失敗,up-to-date複本會提升為主要叢集。新的複本也會在與失敗節點相同的可用區域中建立和佈建。
當主節點和某些複本失敗時,MemoryDB Multi-AZ 會執行下列動作:
失敗的主節點和失敗的複本會離線。
可用的複本將成為主要節點。
一旦容錯移轉完成,即可繼續寫入,通常只需幾秒鐘。
建立及佈建替換用的複本。
替換用的複本會在失敗節點所在的可用區域內建立,維持節點的分佈。
所有節點都會與交易日誌同步。
如需尋找叢集端點的資訊,請參閱下列主題:
整個叢集故障的故障案例
若所有項目都失敗,便會在原始節點的相同可用區域內重新建立及佈建所有節點。
在這種情況下,不會遺失資料,因為資料保留在交易日誌中。
當整個叢集失敗時,MemoryDB Multi-AZ 會執行下列動作:
失敗的主節點和複本會離線。
建立並佈建替代主節點,並與交易日誌同步。
替換複本會建立並佈建,並與交易日誌同步。
替代項目會在失敗節點所在的可用區域內建立,維持節點的分佈。
如需尋找叢集端點的資訊,請參閱下列主題:
測試自動容錯移轉
您可以使用 MemoryDB 主控台、 AWS CLI和 MemoryDB API 來測試自動容錯移轉。
在測試時,請注意下列事項:
-
您可以在任何 24 小時期間內使用此操作最多五次。
-
如果您在不同叢集中的碎片上呼叫此操作,您可以同時進行呼叫。
-
在某些情況下,您可以在相同 MemoryDB 叢集中的不同碎片上多次呼叫此操作。在這種情況下,必須先完成第一個節點取代,才能夠執行後續呼叫。
-
若要判斷節點取代是否已完成,請使用 MemoryDB 主控台、 AWS CLI或 MemoryDB API 檢查事件。尋找下列與 相關的事件
FailoverShard
,以可能發生的順序列於此處:-
叢集訊息:
FailoverShard API called for shard <shard-id>
-
叢集訊息:
Failover from primary node <primary-node-id> to replica node <node-id> completed
-
叢集訊息:
Recovering nodes <node-id>
-
叢集訊息:
Finished recovery for nodes <node-id>
如需詳細資訊,請參閱下列內容:
-
MemoryDB API 參考中的 DescribeEvents
-
此 API 旨在測試您應用程式的行為,以防 MemoryDB 容錯移轉。並非設計成啟動容錯移轉以解決叢集問題的操作工具。此外,在某些情況下,例如大規模操作事件, AWS 可能會封鎖此 API。
使用 測試自動容錯移轉 AWS Management Console
使用下列程序,透過主控台測試自動容錯移轉。
-
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/memorydb/
開啟 MemoryDB 主控台。 -
選擇您要測試之叢集左側的選項按鈕。此叢集必須至少有一個複本節點。
-
在 Details (詳細資訊) 區域中,確認此叢集已啟用異地同步備份。若叢集尚未啟用多個可用區,請選擇不同叢集,或是修改此叢集以啟用多個可用區。如需詳細資訊,請參閱修改 MemoryDB 叢集。
選擇叢集名稱。
-
在碎片和節點頁面上,針對您要測試容錯移轉的碎片,選擇碎片的名稱。
-
針對節點,選擇容錯移轉主要。
-
選擇 Continue (繼續) 來容錯移轉主要節點,或是 Cancel (取消) 來取消操作而不容錯移轉主要節點。
在容錯移轉程序期間,主控台會繼續將節點的狀態顯示為「可用」。若要追蹤容錯移轉測試的進度,請從主控台導覽窗格選擇 Events (事件)。在 Events (事件) 標籤上,觀察指出您容錯移轉已啟動的事件 (
FailoverShard API called
) 並完成 (Recovery completed
)。
使用 測試自動容錯移轉 AWS CLI
您可以使用 AWS CLI 操作容錯移轉碎片,在任何啟用多可用區域叢集上測試自動容錯移轉。
參數
-
--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-name0001
針對 Windows:
aws memorydb failover-shard ^ --cluster-name
my-cluster
^ --shard-name0001
若要追蹤容錯移轉的進度,請使用 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" } ] }
如需詳細資訊,請參閱下列內容:
使用 MemoryDB API 測試自動容錯移轉
下列範例會在叢集 0003
中的碎片FailoverShard
上呼叫 memorydb00
。
範例 測試自動容錯移轉
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 操作。
如需詳細資訊,請參閱下列內容: