多可用區域資料庫執行個體部署 - Amazon Relational Database Service

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

多可用區域資料庫執行個體部署

使用多可用區域部署搭配單一待命資料庫執行個體,Amazon RDS 可為資料庫執行個體提供高可用性和容錯移轉支援。這種類型的部署稱為多可用區域資料庫執行個體部署。Amazon RDS 使用幾個不同技術來提供這個容錯移轉支援。MariaDB、MySQL、Oracle、PostgreSQL 和 RDS Custom for SQL Server 資料庫執行個體的多可用區域部署會使用 Amazon 容錯移轉技術。而 SQL Server 資料庫執行個體則會使用 SQL Server 資料庫鏡像 (DBM) 技術或 Always On 可用性群組 (AG)。如需 SQL Server 版本異地同步備份支援的相關資訊,請參閱Amazon RDS for Microsoft SQL Server 的異地同步備份部署。如需針對多可用區域使用 RDS Custom for SQL Server 的相關資訊,請參閱 管理 RDS Custom for SQL Server 的多可用區部署

在 Multi-AZ 資料庫執行個體部署中,Amazon RDS 會自動佈建,並在不同的可用區域中維持同步待命複本。主要資料庫執行個體會跨可用區域,同步複寫到待命複本,提供資料備援並且降低系統備份時的延遲遽增發生等功能。執行具有高可用性的資料庫執行個體,可以在規劃好的系統維護期間增強可用性。它還有助於在資料庫執行個體失敗和可用區域中斷時保護資料庫。如需可用區域的詳細資訊,請參閱區域、可用區域和 Local Zones

注意

高可用性選項不是唯讀案例的擴展解決方案。您無法使用待命複本來提供讀取流量。若要提供唯讀流量,請改用多可用區域資料庫叢集或僅供讀取複本。如需建立多可用區域資料庫叢集的詳細資訊,請參閱多可用區域資料庫叢集部署。如需僅供讀取複本的詳細資訊,請參閱 使用資料庫執行個體僅供讀取複本

高可用性案例

使用 RDS 主控台,只要在建立資料庫執行個體時指定多可用區域,即可輕鬆建立多可用區域資料庫執行個體部署。您可以使用主控台,藉由修改資料庫執行個體並指定多可用區域選項,將現有資料庫執行個體轉換為多可用區域資料庫執行個體部署。您也可以使用 AWS CLI 或 Amazon RDS API 指定異地同步備份資料庫執行個體部署。使用create-db-instancemodify-db-instanceCLI 命令,或 CreateDBInstance 或 Modi fyDBInstance API 作業。

RDS 主控台會顯示待命複本的可用區域 (稱為次要 AZ)。您也可以使用 describe-db-instancesCLI 命令或 Descri beDBInstances API 作業來尋找次要 AZ。

相較於單一可用區域部署,使用多可用區域資料庫執行個體部署的資料庫執行個體會有增加的寫入和遞交延遲。這可能是因為發生的同步資料複寫。如果您的部署容錯移轉至待命複本,您可能會發生延遲變更,不過 AWS 是以可用區域之間的低延遲網路連線而設計。對於生產應用程式,我們建議使用佈建 IOPS (每秒輸入/輸出操作) 來取得快速、一致的效能。如需資料庫執行個體類別的詳細資訊,請參閱 資料庫執行個體類別

將資料庫執行個體修改為多可用區域資料庫執行個體部署

如果您的資料庫執行個體是在單一可用區域部署中,而想要將其修改為多可用區域資料庫執行個體部署 (用於 Amazon Aurora 以外的引擎),Amazon RDS 會執行幾個動作:

  1. 建立主要資料庫執行個體的 Amazon Elastic Block Store (EBS) 磁碟區快照。

  2. 從快照為待命複本建立新磁碟區。這些磁碟區會在背景中初始化,並在資料完全初始化之後達到最大磁碟區效能。

  3. 開啟主要複本和待命複本磁碟區之間的同步區塊層級複本。

重要

使用快照建立待命執行個體可避免從單一可用區轉換為多可用區域的停機時間,但在轉換為異地同步備份期間和之後可能會對效能產生影響。對於對寫入延遲敏感的工作負載而言,這個影響可能很重大。

雖然此功能可以從快照中還原大量磁碟區,但由於是同步複寫,可能會導致 I/O 作業延遲。此延遲可能會影響您的資料庫效能。我們強烈建議您不要在生產資料庫執行個體上執行異地同步備份轉換。

若要避免對目前提供敏感工作負載服務的資料庫執行個體造成效能影響,請建立僅供讀取複本並在僅供讀取複本上啟用備份。將僅供讀取複本轉換為異地同步備份,並執行將資料載入僅供讀取複本磁碟區的查詢 (在兩個異地上)。然後會將僅供讀取複本提升為主要資料庫執行個體。如需詳細資訊,請參閱 使用資料庫執行個體僅供讀取複本

有兩種方式可將資料庫執行個體修改為多可用區域資料庫執行個體部署:

使用 RDS 主控台將其轉換為多可用區域資料庫執行個體部署

您可以使用 RDS 主控台,將資料庫執行個體轉換為多可用區域資料庫執行個體部署。

您只能使用主控台來完成轉換。若要使用 AWS CLI 或 RDS API,請遵循中的指示將資料庫執行個體修改為多可用區域資料庫執行個體部署

使用 RDS 主控台將其轉換為多可用區域資料庫執行個體部署
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在導覽窗格中選擇 Databases (資料庫),然後選擇您要修改的資料庫執行個體。

  3. Actions (動作) 中,選擇 Convert to Multi-AZ deployment (轉換為多可用區部署)。

  4. 在確認頁面上,選擇 Apply immediately (立即套用),來立即套用變更。選擇此選項並不會產生停機時間,但可能會對效能產生影響。或者,您也可以選擇在下個維護時段套用更新。如需詳細資訊,請參閱 排程修改設定

  5. 選擇 Convert to Multi-AZ (轉換為多可用區域)。

將資料庫執行個體修改為多可用區域資料庫執行個體部署

您可以採取下列方法,將資料庫執行個體修改為多可用區域資料庫執行個體部署:

  • 使用 RDS 主控台,修改資料庫執行個體,並將 Multi-AZ deployment (多可用區部署) 設為 Yes (是)。

  • 使用 AWS CLI,呼叫指modify-db-instance令,然後設定--multi-az選項。

  • 使用 RDS API,呼叫 ModifyDBInstance 操作,並將 MultiAZ 參數設為 true

如需修改資料庫執行個體的相關資訊,請參閱修改 Amazon RDS 資料庫執行個體。修改完成後,Amazon RDS 會觸發一個表示該程序已完成的事件 (RDS-EVENT-0025)。您可以監控 Amazon RDS 事件。如需事件的詳細資訊,請參閱使用 Amazon RDS 事件通知

Amazon RDS 的容錯移轉程序

如果您已啟用多可用區域,當您的資料庫執行個體因為基礎設施瑕疵而發生計劃中或非計劃的中斷時,Amazon RDS 會自動切換到另一個可用區域中的待命複本。完成容錯移轉所需的時間取決於主要資料庫執行個體失效時的資料庫活動和其他條件。通常容錯移轉時間是 60–120 秒。不過,大型交易或冗長復原程序可能會增加容錯移轉時間。容錯移轉完成後,RDS 控制台使用者界面可能需要多一點時間來反映新的可用區域。

注意

重新啟動資料庫執行個體時,您可以手動強制容錯移轉。如需詳細資訊,請參閱 重新啟動中的資料庫執行個體

Amazon RDS 會自動處理容錯移轉,因此您可以盡快恢復資料庫操作,而無須人為介入管理。如果發生下表所述的任何條件,主要資料庫執行個體會自動切換至待命複本。您可以在事件日誌中檢視這些容錯移轉原因。

容錯移轉原因 描述
以 RDS 資料庫執行個體為基礎的作業系統正在離線操作中進行修補。

作業系統修補或安全更新的維護期間觸發容錯移轉。

如需詳細資訊,請參閱 維持資料庫執行個體

RDS 異地同步備份執行個體的主要主機狀況不良。 多可用區域資料庫執行個體部署偵測到主要資料庫執行個體受損並容錯移轉。
由於網路連線中斷,RDS 異地同步備份執行個體的主要主機無法連線。

RDS 監控偵測到主要資料庫執行個體的網路連線失敗,並觸發容錯移轉。

RDS 執行個體已由客戶修改。

RDS 資料庫執行個體修改觸發了容錯移轉。

如需詳細資訊,請參閱 修改 Amazon RDS 資料庫執行個體

RDS 異地同步備份主要執行個體忙碌且沒有回應。

主要資料庫執行個體沒有回應。我們建議您進行下列動作:

如需這些建議的詳細資訊,請參閱 在 Amazon RDS 中監控指標的概觀Amazon RDS 的最佳實務

以 RDS 異地同步備份執行個體主要主機為基礎的儲存磁碟區發生故障。 多可用區域資料庫執行個體部署在主要資料庫執行個體上偵測到儲存問題並容錯移轉。
使用者請求資料庫執行個體的容錯移轉。

您重新啟動了資料庫執行個體,並選擇了 Reboot with failover (使用容錯移轉重新啟動)。

如需詳細資訊,請參閱 重新啟動中的資料庫執行個體

若要判斷您的多可用區域資料庫執行個體是否已容錯移轉,您可以執行下列動作:

  • 設定資料庫事件訂閱,透過電子郵件或 SMS 通知您已啟動容錯移轉。如需事件的詳細資訊,請參閱使用 Amazon RDS 事件通知

  • 您可以使用 RDS 主控台或 API 操作來檢視資料庫事件。

  • 您可以使用 RDS 主控台和 API 操作,檢視多可用區域資料庫執行個體部署的目前狀態。

有關如何回應容錯移轉、減少恢復時間以及其他 Amazon RDS 最佳實務,詳細資訊請參閱 Amazon RDS 的最佳實務

設定 DNS 名稱查詢的 JVM TTL

容錯移轉機制會自動將資料庫執行個體的網域名稱系統 (DNS) 記錄變更為指向待命資料庫執行個體。因此,您必須重新建立資料庫執行個體任何現有的連線。在 Java 虛擬機器 (JVM) 環境中,基於 Java DNS 快取機制的運作方式,您可能需要重新配置 JVM 設定。

JVM 會快取 DNS 名稱查詢。當 JVM 將主機名稱解析為 IP 位址時,會將 IP 位址快取一段指定的時間段,稱為 time-to-live(TTL)。

由於 AWS 資源使用偶爾會變更的 DNS 名稱項目,因此建議您將 JVM 設定為不超過 60 秒的 TTL 值。如此可確保當資源的 IP 位址變更時,您的應用程式可以透過重新查詢 DNS 來接收並使用資源的新 IP 位址。

在一些 Java 組態上,則會設定 JVM 預設 TTL,以便其在重新啟動 JVM 之前絕對不會重新整理 DNS 項目。因此,如果 AWS 資源的 IP 位址在應用程式仍在執行時發生變更,則在您手動重新啟動 JVM 並重新整理快取 IP 資訊之前,該資源無法使用該資源。在此情況下,設定 JVM 的 TTL 至為關鍵,以便其定期重新整理其快取的 IP 資訊。

您可以擷取 networkaddress.cache.ttl 屬性值來取得 JVM 預設 TTL:

String ttl = java.security.Security.getProperty("networkaddress.cache.ttl");
注意

預設 TTL 可能會視 JVM 的版本以及是否已安裝安全管理員而異。許多 JVM 提供的預設 TTL 少於 60 秒。如果您使用此類 JVM (而非安全管理員),則可忽略本主題的其餘內容。如需 Oracle 中安全管理員的詳細資訊,請參閱 Oracle 文件中的安全管理員

若要修改 JVM 的 TTL,請設定 networkaddress.cache.ttl 屬性值。根據您的需求,使用下列其中一種方法:

  • 若要為使用 JVM 的所有應用程式全域設定屬性值,請在 networkaddress.cache.ttl 檔案中設定 $JAVA_HOME/jre/lib/security/java.security

    networkaddress.cache.ttl=60
  • 若要僅針對您的應用程式進行適當的本機設定,請在建立任何網路連線之前,在您應用程式的初始化程式碼中設定 networkaddress.cache.ttl

    java.security.Security.setProperty("networkaddress.cache.ttl" , "60");