本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 Amazon 的多可用區域資料庫叢集失敗 RDS
如果您的寫入器資料庫執行個體在多可用區域資料庫叢集中發生計劃或非計劃中斷,Amazon RDS會自動容錯移轉至不同可用區域中的讀取器資料庫執行個體。這可確保高可用性,並將中斷降至最低。容錯移轉可能發生在硬體故障、網路問題或手動請求期間。主題概述自動偵測失敗、容錯移轉期間的事件順序,及其對讀取和寫入操作的影響。它還提供最佳實務,以監控和最小化容錯移轉時間。
完成容錯移轉所需的時間取決於寫入器資料庫執行個體失效時的資料庫活動和其他條件。容錯移轉時間通常低於 35 秒。當兩個讀取器資料庫執行個體都套用來自失敗寫入器的未完成交易時,容錯移轉就會完成。當容錯移轉完成時,RDS主控台可能需要額外的時間來反映新的可用區域。
自動容錯移轉
Amazon 會自動RDS處理容錯移轉,因此您可以盡快恢復資料庫操作,而無需管理介入。若要容錯移轉,寫入器資料庫執行個體會自動切換至讀取器資料庫執行個體。
手動容錯移多可用區域資料庫叢集
如果您透過多可用區域資料庫叢集手動失敗, 會RDS先終止主要資料庫執行個體。然後,內部監控系統偵測到主要資料庫執行個體運作狀態不佳,並提升可讀取複本資料庫執行個體。容錯移轉時間通常低於 35 秒。
您可以使用 AWS Management Console、 AWS CLI或 RDS 手動容錯移轉多可用區域資料庫叢集API。
若要手動容錯移轉多可用區域資料庫叢集
登入 AWS Management Console 並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/
。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇您要容錯移轉的多可用區域資料庫叢集。
-
針對 Actions (動作),選擇 Failover (容錯移轉)。
容錯移轉資料庫叢集頁面隨即出現。
-
選擇 Failover (容錯移轉) 以確認手動容錯移轉。
若要手動容錯移轉多可用區域資料庫叢集,請使用 AWS CLI 命令 failover-db-cluster。
aws rds failover-db-cluster --db-cluster-identifier
mymultiazdbcluster
若要手動容錯移轉多可用區域資料庫叢集,請呼叫 Amazon RDS API FailoverDBCluster 並指定 DBClusterIdentifier
。
判斷多可用區域資料庫叢集是否已容錯移轉
若要判斷您的多可用區域資料庫叢集是否已容錯移轉,您可以執行下列動作:
設定資料庫事件訂閱以透過電子郵件通知您SMS,或已啟動容錯移轉。如需事件的詳細資訊,請參閱使用 Amazon RDS 事件通知。
使用 Amazon RDS主控台或 API操作來檢視資料庫事件。
使用 Amazon RDS主控台、 AWS CLI和 來檢視多可用區域資料庫叢集的目前狀態RDSAPI。
如需有關如何回應容錯移轉、縮短復原時間,以及其他 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會因 的版本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");