

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

# Amazon Aurora 的高可用性
<a name="Concepts.AuroraHighAvailability"></a>

 Amazon Aurora 架構涉及儲存和運算的分離。Aurora 包含部分高可用性功能，這些功能可套用至資料庫叢集中的資料。即使叢集內部分或全部資料庫執行個體變得無法使用時，資料仍然維持安全性。其他高可用性功能套用至資料庫執行個體。這些功能可確保一或多個資料庫執行個體就緒，以協助處理您應用程式的資料庫請求。

**Topics**
+ [

## Aurora 資料的高可用性
](#Concepts.AuroraHighAvailability.Data)
+ [

## Aurora 資料庫執行個體的高可用性
](#Concepts.AuroraHighAvailability.Instances)
+ [

## 使用 Aurora 全域資料庫跨 AWS 區域提供高可用性
](#Concepts.AuroraHighAvailability.GlobalDB)
+ [

## Aurora 資料庫叢集的容錯能力
](#Aurora.Managing.FaultTolerance)
+ [

## 與 Amazon RDS Proxy 的高可用性
](#Concepts.AuroraHighAvailability.Proxy)

## Aurora 資料的高可用性
<a name="Concepts.AuroraHighAvailability.Data"></a>

Aurora 將資料副本存放在單一 AWS 區域跨多個可用區域的資料庫叢集中。無論資料庫叢集的執行個體是否跨多個可用區域，Aurora 都會存放這些副本。如需 Aurora 的詳細資訊，請參閱[管理 Amazon Aurora 資料庫叢集](CHAP_Aurora.md)。

當資料寫入主要資料庫執行個體時，Aurora 同步複寫到跨可用區域，至叢集磁碟區中相關連的六個儲存節點。如此一來可提供資料備援、排除 I/O 凍結，並降低系統備份時的延遲峰值。執行具有高可用性的資料庫執行個體，可以在規劃好的系統維護期間增強可用性，並有助於在失敗和可用區域中斷時保護資料庫。如需可用區域的詳細資訊，請參閱[區域和可用區域](Concepts.RegionsAndAvailabilityZones.md)。

## Aurora 資料庫執行個體的高可用性
<a name="Concepts.AuroraHighAvailability.Instances"></a>

建立主要 (寫入器) 執行個體後，您就能建立最多 15 個唯讀 Aurora 複本。Aurora 複本也稱為讀取器執行個體。Aurora 複本使用非同步複寫來支援高可用性，而不會影響主要執行個體效能。

在日常作業期間，您可以使用讀取器執行個體來處理 `SELECT` 查詢，卸載讀取密集應用程式的部分工作。當問題影響主要執行個體時，其中一個讀取器執行個體會接管而成為主要執行個體。這種機制稱為*容錯移轉*。許多 Aurora 功能適用於容錯移轉機制。例如，Aurora 偵測資料庫問題，並在必要時自動啟用容錯移轉機制。Aurora 也具有可縮短容錯移轉完成所需時間的功能。這樣做可將資料庫在容錯移轉期間無法寫入的時間降到最低。

Aurora 旨在盡快復原，最快的復原路徑通常是重新啟動或容錯移轉至相同的資料庫執行個體。重新啟動比容錯移轉更快，且涉及的負荷更少。

若要使用即使容錯移轉提升新的主要執行個體時仍保持不變的連線字串，請連線到叢集端點。*叢集端點*一律代表叢集中目前的主要執行個體。如需叢集端點的詳細資訊，請參閱 [Amazon Aurora 端點連線](Aurora.Overview.Endpoints.md)。

**提示**  
在每個區域中 AWS 區域，可用區域 (AZs) 代表彼此不同的位置，以便在中斷時提供隔離。建議您將資料庫叢集中的主要執行個體和讀取器執行個體分配在多個可用區域中，以提升資料庫叢集的可用性。如此一來，影響整個可用區域的問題將不會導致叢集中斷。  
您可以在建立叢集時做出簡單的選擇，以設定多個可用區資料庫叢集。您可以使用 AWS 管理主控台、 AWS CLI或 Amazon RDS API。您也可以透過新增讀取器執行個體並指定不同的可用區域，將現有 Aurora 資料庫叢集變成多可用區資料庫叢集。

## 使用 Aurora 全域資料庫跨 AWS 區域提供高可用性
<a name="Concepts.AuroraHighAvailability.GlobalDB"></a>

如需跨多個資料庫的高可用性 AWS 區域，您可以設定 Aurora 全域資料庫。每個 Aurora 全域資料庫跨越多個 AWS 區域，可實現低延遲的全域讀取，並從 中斷進行災難復原 AWS 區域。Aurora 會將所有資料和更新從主要 非同步複寫 AWS 區域 到每個次要區域。如需詳細資訊，請參閱[使用 Amazon Aurora 全球資料庫](aurora-global-database.md)。

## Aurora 資料庫叢集的容錯能力
<a name="Aurora.Managing.FaultTolerance"></a>

Aurora 資料庫叢集特意設計為具備容錯能力。叢集磁碟區跨越單一 中的多個可用區域 (AZs) AWS 區域，而每個可用區域都包含叢集磁碟區資料的副本。此功能意味著資料庫叢集可承受可用區域故障，完全不會遺失資料，服務只會短暫中斷。

如果資料庫叢集中的主要執行個體失敗，Aurora 可透過兩種方式自動容錯移轉至新的主要執行個體：
+ 將現有的 Aurora 複本提升至新的主要執行個體
+ 建立新的主要執行個體

如果資料庫叢集有一或多個 Aurora 複本，則在失敗事件期間會將 Aurora 複本提升為主要執行個體。失敗事件會導致短暫中斷，在此期間，讀取和寫入操作會失敗，並引發例外狀況。不過，服務通常會在 60 秒之內還原，往往不超過 30 秒。若要提高資料庫叢集的可用性，建議在兩個以上不同的可用區域建立至少一或多個 Aurora 複本。

**提示**  
在 Aurora MySQL 中，您可以在叢集中擁有多個讀取器資料庫執行個體，以提升容錯移轉期間的可用性。在 Aurora MySQL 中，Aurora 只會重新啟動寫入器資料庫執行個體和容錯移轉讀取器執行個體。叢集中的其他讀取器執行個體仍可使用，容錯移轉期間可以繼續透過連線至讀取器端點來處理查詢。  
您也可以在容錯移轉期間使用 RDS Proxy 搭配 Aurora 資料庫叢集，提升可用性。如需詳細資訊，請參閱[與 Amazon RDS Proxy 的高可用性](#Concepts.AuroraHighAvailability.Proxy)。

您可以指派每個 Aurora 複本的優先順序，以自訂複本在失敗之後提升為主要執行個體的順序。優先順序從 0 (代表最高優先順序) 到 15 (代表最低優先順序)。如果主要執行個體失敗，Amazon RDS 會將優先順序最高的 Aurora 複本提升為新的主要執行個體。您隨時都可修改 Aurora 複本的優先順序。修改優先順序不會觸發容錯移轉。

多個 Aurora 複本可以共用相同的優先順序，形成提升層。如果兩個以上的 Aurora 複本共用相同的優先順序，Amazon RDS 會提升最大的複本。如果兩個以上的 Aurora 複本擁有相同的優先順序和大小，Amazon RDS 會提升相同提升層中的任意複本。

**注意**  
識別容錯移轉目標時涉及幾個因素。嘗試容錯移轉失敗五次後，就不會再考慮提升層。

如果資料庫叢集未包括任何 Aurora 複本，則會在失敗事件期間於相同 AZ 中重建主要執行個體。失敗事件會導致中斷，在此期間，讀取和寫入操作會失敗，並引發例外狀況。建立新的主要執行個體後，服務就會恢復，通常不超過 10 分鐘。將 Aurora 複本提升為主要執行個體比建立新的主要執行個體快得多。

假設叢集中的主要執行個體因中斷影響整個可用區域而無法使用。在此情況下，將新的主要執行個體上線的方式，取決於您的叢集是否使用多可用區域組態：
+ 若您佈建或 Aurora Serverless v2 叢集包含其他可用區域中的任何讀取器執行個體，則 Aurora 會使用容錯移轉機制，將其中一個讀取器執行個體提升為新的主要執行個體。
+ 若您佈建或 Aurora Serverless v2 叢集僅包含單一資料庫執行個體，或者主要執行個體和所有讀取器執行個體位於相同的可用區域，則必須在另一個可用區域中手動建立一個或多個新的資料庫執行個體。
+ 如果您的叢集使用 Aurora Serverless v1，則 Aurora 會在另一個可用區域中自動建立新的資料庫執行個體。但是，該程序涉及主機取代，因此需要比容錯移轉更長的時間。

**注意**  
Amazon Aurora 也支援複寫外部 MySQL 資料庫或 RDS MySQL 資料庫執行個體。如需詳細資訊，請參閱[Aurora 與 MySQL 之間或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位複寫)](AuroraMySQL.Replication.MySQL.md)。

## 與 Amazon RDS Proxy 的高可用性
<a name="Concepts.AuroraHighAvailability.Proxy"></a>

使用 RDS Proxy，您可以建置能夠透明地容忍資料庫失敗的應用程式，而不需要撰寫複雜的失敗處理程式碼。Proxy 會自動將流量路由到新的資料庫執行個體，同時保留應用程式連線。它也會略過網域名稱系統 (DNS) 快取，將 Aurora 多可用區域資料庫的容錯移轉時間縮短高達 66%。如需詳細資訊，請參閱[Amazon RDS Proxy for Aurora](rds-proxy.md)。