透過 Amazon 的多可用區域資料庫執行個體失敗 RDS - Amazon Relational Database Service

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

透過 Amazon 的多可用區域資料庫執行個體失敗 RDS

如果多可用區域資料庫執行個體的計劃內或計劃外中斷是由基礎設施缺陷造成,Amazon RDS會自動切換到另一個可用區域中的待命複本。

完成容錯移轉所需的時間取決於主要資料庫執行個體失效時的資料庫活動和其他條件。通常容錯移轉時間是 60–120 秒。不過,大型交易或冗長復原程序可能會增加容錯移轉時間。當容錯移轉完成時,RDS主控台可能需要額外的時間來反映新的可用區域。

注意

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

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

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

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

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

RDS多可用區執行個體的主要主機運作狀態不佳。 多可用區域資料庫執行個體部署偵測到主要資料庫執行個體受損並容錯移轉。
由於網路連線中斷,無法連線RDS多可用區執行個體的主要主機。

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

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

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

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

RDS多可用區域主要執行個體忙碌且沒有回應。

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

如需這些建議的詳細資訊,請參閱 RDSAmazon的監控工具Amazon 的最佳實踐 RDS

RDS多可用區執行個體主要主機下方的儲存磁碟區發生故障。 多可用區域資料庫執行個體部署在主要資料庫執行個體上偵測到儲存問題並容錯移轉。
使用者請求資料庫執行個體的容錯移轉。

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

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

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

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

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

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

如需有關如何回應容錯移轉、縮短復原時間,以及其他 Amazon 最佳實務的資訊RDS,請參閱 Amazon 的最佳實踐 RDS

設定DNS名稱查詢JVMTTL的

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

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

由於 AWS 資源使用偶爾變更DNS的名稱項目,建議您將 的值設定為JVMTTL不超過 60 秒。這樣做可確保當資源的 IP 地址變更時,您的應用程式可以透過重新查詢 來接收和使用資源的新 IP 地址DNS。

在某些 Java 組態上,TTL會設定JVM預設值,使其在JVM重新啟動 之前永遠不會重新整理DNS項目。因此,如果 AWS 資源的 IP 地址在應用程式仍在執行時變更,則在您手動重新啟動 JVM並重新整理快取的 IP 資訊之前,無法使用該資源。在此情況下,請務必設定 JVM,TTL以便定期重新整理其快取的 IP 資訊。

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

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

預設值TTL會因 的版本JVM和是否已安裝安全管理員而有所不同。許多 JVMs 提供的預設TTL時間少於 60 秒。如果您使用的是這類 JVM,而未使用安全管理器,則可以忽略本主題的其餘部分。如需 Oracle 中安全管理員的詳細資訊,請參閱 Oracle 文件中的安全管理員

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

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

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

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