

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

# MemoryDB 中的服務更新
<a name="service-updates"></a>

MemoryDB 會自動監控叢集和節點機群，以便在服務更新可用時套用服務更新。一般而言，您會設定預先定義的維護時段，讓 MemoryDB 可以套用這些更新。不過，在某些情況下，您可能會發現這種方法過於嚴格，並可能限制您的業務流程。

使用 [MemoryDB 中的服務更新](#service-updates)，您可以控制何時套用和套用哪些更新。您也可以即時監控所選 MemoryDB 叢集的這些更新進度。

# 管理服務更新
<a name="managing-updates"></a>

MemoryDB 服務更新會定期發行。如果您有一或多個符合那些服務更新資格的叢集，您會在更新發佈時，透過電子郵件、SNS、個人運作狀態儀表板 (PHD) 和 Amazon CloudWatch Events 收到通知。更新也會顯示在 MemoryDB 主控台**的服務更新**頁面上。透過使用此儀表板，您可以檢視 MemoryDB 機群的所有服務更新及其狀態。

您可以在自動更新開始前，控制套用更新的時間。我們強烈建議您盡快套用任何類型的**安全更新**，以確保您的 MemoryDB 始終與目前的安全修補程式up-to-date狀態。

以下區段更會詳細探討這些選項。

**Topics**
+ [Amazon MemoryDB 受管維護和服務更新概觀](#managing-updates-maintenance)

## Amazon MemoryDB 受管維護和服務更新概觀
<a name="managing-updates-maintenance"></a>

我們經常升級 MemoryDB 機群，並將修補程式和升級無縫套用至執行個體。我們以下列兩種方式之一執行此操作：

1. 持續受管維護。

1. 服務更新。

需要這些維護和服務更新才能套用升級，以增強安全性、可靠性和操作效能。

持續受管維護會不時且直接在您的維護時段進行，而不需要您結束執行任何動作。請務必注意，維護時段對所有客戶都是強制性的，而且您無法選擇退出。強烈建議在這些已建立的維護時段期間避免任何關鍵或重要的活動。此外，請注意，無法略過關鍵更新，以確保系統的安全性和最佳效能。

服務更新可讓您彈性地自行套用。它們是定時的，可能會在到期日失效後移至維護時段以供我們套用。

您可以儘早套用更新或取代節點來管理更新，因為更新會自動套用至取代。如果更新之前已套用至所有節點，則在傳入的維護時段期間將不會有更新活動。

### 服務更新
<a name="managing-updates-maintenance.service"></a>

[MemoryDB 中的服務更新](service-updates.md) 可讓您自行決定套用特定服務更新。這些更新可以是下列類型：安全修補程式或次要軟體更新。這些更新有助於增強叢集的安全性、可靠性和操作效能。

這些服務更新的值是您可以控制何時套用更新 （例如，當發生需要全年無休提供 MemoryDB 叢集的重要商業事件時，您可以延遲套用服務更新）。

如果您有一或多個符合這些服務更新的叢集，您會在更新發佈時透過電子郵件、[Amazon SNS](mdbevents.sns.md)、[AWS Health 儀表板](https://docs.aws.amazon.com/health/latest/ug/getting-started-health-dashboard.html)和 [Amazon CloudWatch Events](monitoring-cloudwatch.md) 事件收到通知。更新也會顯示在 MemoryDB 主控台**的服務更新**頁面上。透過使用此儀表板，您可以檢視 MemoryDB 機群的所有服務更新及其狀態。

您可以在自動更新開始前，控制套用更新的時間。我們強烈建議您盡快套用任何類型的安全更新，以確保您的 MemoryDB 始終與目前的安全修補程式up-to-date狀態。

您的叢集可能是不同服務更新的一部分。大多數更新不需要您分別套用。在適用的情況下，將一個更新套用至叢集會將其他更新標記為已完成。如果狀態未自動變更為「已完成」，您可能需要將多個更新分別套用至相同的叢集。

#### 服務更新影響和停機時間
<a name="managing-updates-maintenance.service.impact"></a>

當您或 Amazon MemoryDB 將服務更新套用至一或多個 MemoryDB 叢集時，更新會套用至每個碎片內一次不超過一個節點，直到所有選取的叢集都更新為止。正在更新的節點將經歷幾秒鐘的停機時間，而叢集的其餘部分將繼續為流量提供服務。
+ 叢集組態不會有任何變更。
+ 您會在 CloudWatch 指標中看到盡快趕上進度的延遲。

**節點替換如何影響我的應用程式？** - 對於 MemoryDB 節點，取代程序旨在保證耐用性和可用性。對於單一節點 MemoryDB 叢集，MemoryDB 會動態啟動複本、從耐久性元件還原資料，然後容錯移轉至複本。對於由多個節點組成的複寫群組，MemoryDB 會取代現有的複本，並將資料從耐久性元件同步到新的複本。MemoryDB 只有在有多個節點時才會是異地同步備份，因此在此案例中，取代主要 會觸發容錯移轉至僅供讀取複本。計劃的節點替換會在叢集提供傳入寫入請求時完成。如果只有一個節點，MemoryDB 會取代主要節點，然後從我們的耐久性元件同步資料。主節點在此期間無法使用，導致寫入中斷時間較長。

**我應該遵循哪些最佳實務，以獲得順暢的替換體驗，並將資料遺失降至最低？** - 在 MemoryDB 中，資料非常耐用，即使在單一節點實作中也預期不會遺失資料。不過，建議實作異地同步備份和備份策略，將發生故障時遺失的機率降至最低。為了獲得順暢的替換體驗，我們嘗試一次只取代來自相同叢集的足夠節點，以保持叢集穩定。您可以透過啟用異地同步備份，在不同可用區域中佈建主要複本和僅供讀取複本。在這種情況下，當節點被取代時，主要角色會容錯移轉到碎片中的複本。此碎片現在將為流量提供服務，資料將從其耐久性元件還原。如果您的組態每個碎片只包含一個主要複本和一個單一複本，建議您在修補之前新增其他複本。這將防止修補程序期間可用性降低。我們建議在低傳入寫入流量的期間內排程替換。

**我應該遵循哪些用戶端組態最佳實務，將維護期間的應用程式中斷降至最低？** - 在 MemoryDB 中，叢集模式組態一律啟用，可在受管或未受管操作期間提供最佳可用性。複本節點的個別節點端點可用於所有讀取操作。在 MemoryDB 中，叢集中一律會啟用自動容錯移轉，這表示主節點可能會變更。因此，應用程式應確認節點的角色，並更新所有讀取端點，以確保您不會對主要節點造成主要負載。同樣地，請避免在維護時段期間使用讀取請求讓複本超載。達成此目標的一種方法是確保您至少有兩個僅供讀取複本，以避免在維護期間發生任何讀取中斷。

請務必測試用戶端應用程式，以確認其符合 Redis/Valkey 叢集通訊協定，並且可以在節點之間正確重新導向請求。建議您實作退避和重試策略，以避免在維護和取代活動期間超載 MemoryDB 節點。

**重新排程 **- 您可以變更[維護時段](maintenance-window.md)來延遲服務更新。排程更新只有在排程日期符合叢集的維護時段時，才會套用至叢集。一旦您變更維護時段且已超過排程日期，服務更新將在接下來幾週重新排程至新指定的時段。您會在達到新的日期前一週收到新的通知。

的安全 AWS 是共同的責任。我們強烈建議您儘早套用更新。

**選擇退出服務更新 ** - 您可以驗證「自動更新開始日期」屬性的值，來判斷是否可以選擇退出服務更新。如果已設定服務更新的「自動更新開始日期」屬性值，MemoryDB 會將服務更新排程到即將進行維護時段的任何剩餘叢集，而且無法選擇退出。不過，如果您在維護時段之前將服務更新套用至剩餘的叢集，MemoryDB 將不會在維護時段重新套用服務更新。如需詳細資訊，請參閱[套用服務更新](applying-updates.md)。

**為什麼 MemoryDB 無法在維護時段直接套用服務更新？** - 請注意，服務更新的目的是為您提供何時套用它們的彈性。未參與 MemoryDB 支援[合規](memorydb-compliance.md)計劃的叢集可以選擇不套用這些更新，或在一年中以較低的頻率套用這些更新。不過，建議套用更新以保持符合法規。只有在服務更新的「自動更新開始日期」屬性值不存在時，才會發生這種情況。如需詳細資訊，請參閱[MemoryDB 的合規驗證](memorydb-compliance.md)。

**維護時段中的更新與服務更新有何不同？** - 透過持續受管維護套用的更新會直接排程在您的維護時段，而不需要您採取任何動作。服務更新是定時的，可讓您控制何時想要在「自動更新開始日期」前套用。如果屆時仍未套用，MemoryDB 可能會在您的維護時段中排程這些更新。

### 持續受管維護更新
<a name="managing-updates-maintenance.continuous"></a>

這些更新是強制性的，並直接套用於您的維護時段，而無需您採取任何動作。這些更新與服務更新所提供的更新不同。

#### 持續維護影響和停機時間
<a name="managing-updates-maintenance.continuous.impact"></a>

**節點替換需要多長時間？** - 取代通常會在 30 分鐘內完成。在某些執行個體組態和流量模式中，取代可能需要更長的時間。

**節點替換如何影響我的應用程式？** - 透過節點取代，以與「服務更新」相同的方式套用持續受管維護更新。如需詳細資訊，請參閱上述服務更新影響和停機時間一節。

**如何自行管理節點替換？** - 在排定的節點取代時段之前，您可以選擇隨時自行管理這些取代。如果您選擇自行管理替換，您可以根據使用案例採取各種動作。
+ [將叢集中的節點取代為一或多個碎片](nodes.nodereplacement.md)：您可以使用[備份和還原](snapshots-restoring.md)或橫向擴展，後面接著向內擴展來[取代節點](cluster-resharding-online.md)。
+ [變更您的維護時段](maintenance-window.md)：此外，您也可以變更叢集的維護時段。若要稍後將維護時段變更為更方便的時間，您可以使用 [UpdateCluster API](clusters.modify.md)、[update-cluster CLI](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)，或在 MemoryDB 管理主控台中按一下[修改](clusters.modify.md)。變更維護時段後，MemoryDB 會在新指定的時段排程您的節點進行維護。

   為了了解實際運作方式，假設目前是 11 月 9 日星期四 1500，下一個維護時段是 11 月 10 日星期五 1700。以下是 3 個案例：
  + 您可以將維護時段變更為星期五 1600 （在目前的日期時間之後和下一個排定的維護時段之前）。節點將於 11 月 10 日星期五下午 4:00 進行替換。
  + 您可以將維護時段變更為週六 1600 （在目前的日期時間和下一個排定的維護時段之後）。節點將於 11 月 11 日星期六下午 4:00 進行替換。
  + 您可以將維護時段變更為星期三 1600 （比目前日期時間更早的一週）。節點將於下一個星期三 11 月 15 日下午 4:00 進行替換。

  如需詳細資訊，請參閱[管理維護作業](maintenance-window.md)。

  請注意，您可以同時取代不同區域中不同叢集中的節點，前提是這些叢集的維護時段設定為相同。

**如何得知即將進行的排程替換？** - 您應該會在運作狀態儀表板上收到 AWS 運作狀態通知。您也可以使用 DescribeServiceUpdates API 找到不同服務升級的狀態。請注意，我們會盡一切努力主動通知客戶可預見的替換項目。不過，在無法預測的故障等特殊情況下，可能會有無預警的替換。

**我可以在更合適的時間變更排定的維護嗎？** - 是，您可以透過變更維護[時段](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeServiceUpdates.html)，將排定的維護延遲到更合適的時間。

**為什麼要進行這些節點替換？** - 需要這些替換來將強制性軟體更新套用至基礎主機。這些更新有助於強化我們的安全性、可靠性和營運效能。

**這些替換是否同時影響多個可用區域中的節點和來自不同區域的叢集？** - 替換可以平行在多個可用區域或區域中執行，取決於叢集的維護時段。

# 套用服務更新
<a name="applying-updates"></a>

您可以在更新的狀態變成 **available** (可用) 時，開始將服務更新套用到機群。服務更新為累積更新。換句話說，您未套用的任何更新都會包含在最新的更新中。

如果服務更新已啟用自動更新，您可以選擇在更新可用時不採取任何動作。MemoryDB 將排程在**自動更新開始日期之後，在叢集的維護時段期間套用更新**。您將收到更新每個階段的相關通知。

**注意**  
您只能套用狀態為 **available** (可用) 或 **scheduled** (已排程) 的服務更新。

如需檢閱和套用任何服務特定更新至適用 MemoryDB 叢集的詳細資訊，請參閱 [使用主控台套用服務更新](#applying-updates-console-APIReferenceconsole)。

當一個或多個 MemoryDB 叢集有新的服務更新可用時，您可以使用 MemoryDB 主控台、API 或 AWS CLI 來套用更新。以下區段會說明您可以用來套用更新的選項。

## 使用主控台套用服務更新
<a name="applying-updates-console-APIReferenceconsole"></a>

若要檢視可用服務更新的清單與其他資訊，請前往主控台的 **Service Updates** (服務更新) 頁面。

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

1. 在導覽窗格上，選擇 **Service Updates** (服務更新)。

在**服務更新詳細資訊**下，您可以檢視下列項目：
+ **Service update name** (服務更新名稱)：服務更新的唯一名稱
+ **更新描述**：服務更新的詳細資訊
+ **自動更新開始日期**：如果已設定此屬性，MemoryDB 將開始排程在此日期之後的適當維護時段自動更新叢集。您將會在確切的排程維護時段預先收到通知，這可能不是**自動更新開始日期**之後的立即維護時段。您仍然可以隨時選擇將更新套用至叢集。如果未設定 屬性，則服務更新不會啟用自動更新，且 MemoryDB 不會自動更新您的叢集。

在 **Cluster update status** (叢集更新狀態) 區段中，您可以檢視叢集清單，這些叢集尚未套用或最近才套用服務更新。針對每個叢集，您可以檢視下列項目：
+ **Cluster name** (叢集名稱)：叢集的名稱
+ **Nodes updated** (已更新的節點)：特定叢集中的個別節點比率，這些節點已更新或仍可用於特定服務更新。
+ **Update Type** (更新類型)：服務更新的類型，可為 **security-update** (安全性更新) 或 **engine-update** (引擎更新)
+ **Status** (狀態)：叢集上服務更新的狀態，可以是下列狀態之一：
  + *available* (可用)：更新可用於必要的叢集。
  + *in-progress* (進行中)：正在將更新套用至此叢集。
  + *scheduled (已排程)*：已排程更新日期。
  + *complete (完成)*：已成功套用更新。狀態為 complete (完成) 的叢集會在完成後顯示 7 天。

  如果您已選擇任何或所有狀態為 **available** (可用) 或 **scheduled** (已排程) 的叢集，然後選擇 **Apply now** (立即套用)，系統會開始將這些更新套用至這些叢集。

## 使用 套用服務更新 AWS CLI
<a name="applying-updates-cli-redis"></a>

在收到服務更新可供使用的通知後，您就可以使用 AWS CLI來檢查和套用這些更新：
+ 若要擷取可用服務更新的說明，請執行下列命令：

  `aws memorydb describe-service-updates --status available`

  如需詳細資訊，請參閱[描述服務更新](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-service-updates.html)。
+ 若要在叢集清單上套用服務更新，請執行下列命令：

  `aws memorydb batch-update-cluster --service-update ServiceUpdateNameToApply=sample-service-update --cluster-names cluster-1 cluster2`

  如需詳細資訊，請參閱 [batch-update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/batch-update-cluster.html)。