本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
以 Amazon Aurora MySQL 進行複寫
Aurora MySQL 複寫功能是叢集高可用性和效能的關鍵。Aurora 可讓您輕鬆建立最多可有 15 Aurora 個複本的叢集,或調整其大小。
所有複本都從相同的基礎資料運作。如果部分資料庫執行個體離線,則其他資料庫執行個體仍可繼續用來處理查詢,或在需要時以寫入器的方式接管。Aurora 會自動將您的唯讀連線分散至多個資料庫執行個體,協助 Aurora 叢集以支援查詢密集的工作負載。
在以下主題中,您可以找到 Aurora MySQL 複寫如何運作,以及如何微調複寫設定以取得最佳可用性和效能的相關資訊。
主題
使用 Aurora 複本
Aurora 複本是 Aurora 資料庫叢集中的獨立端點,最適合用於擴展讀取操作和提高可用性。最多 15 個 Aurora 複本可以分佈在 AWS 區域內資料庫叢集跨越的可用區域。雖然資料庫叢集磁碟區由資料庫叢集的多個資料副本組成,但叢集磁碟區中的資料是以單一邏輯磁碟區的形式呈現給主要執行個體,以及資料庫叢集內的 Aurora 複本。如需 Aurora 複本的詳細資訊,請參閱 Aurora 複本。
Aurora 複本很適用於讀取擴展,因為完全專用於叢集磁碟區上的讀取操作。寫入操作由主要執行個體管理。因為叢集磁碟區是在 Aurora MySQL 資料庫叢集的所有資料庫執行個體之間共用,所以不需要額外工作,即可複寫每一個 Aurora 複本的資料副本。相反地,MySQL 僅供讀取複本必須在單一執行緒上,從來源資料庫執行個體將所有寫入操作重播至其本機資料存放區。此限制可能導致 MySQL 僅供讀取複本難以支援大量讀取流量。
有了 Aurora MySQL,在刪除 Aurora 複本時,隨即會移除其執行個體端點,並且會從讀取器端點移除 Aurora 複本。如果在要刪除的 Aurora 複本上有陳述式正在執行,則會有三分鐘的寬限期。現有陳述式在寬限期期間可以從容地完成。在寬限期結束時,Aurora 複本會關閉並刪除。
重要
Aurora MySQL 的 Aurora 複本一律會對 InnoDB 資料表上的操作使用 REPEATABLE READ
預設交易隔離層級。您僅可以對 Aurora MySQL 資料庫叢集的主要執行個體使用 SET TRANSACTION ISOLATION LEVEL
命令來變更交易層級。此限制可避免 Aurora 複本上的使用者層級鎖定,並允許 Aurora 複本擴展來支援上千個作用中使用者的連線,同時將複本延遲保持在最小值。
注意
主要執行個體上執行的 DDL 陳述式可能會中斷相關聯 Aurora 複本上的資料庫連線。如果 Aurora 複本連線正在主動使用資料庫物件,例如資料表,並且在主要執行個體上使用 DDL 陳述式來修改該物件,則會中斷 Aurora 複本連線。
注意
中國 (寧夏) 區域不支援跨區域的僅供讀取複本。
Amazon Aurora MySQL 的複寫選項
您可以設定下列任何選項之間的複寫:
-
透過建立 Aurora MySQL 資料庫叢集的跨區域僅供讀取複本 AWS 區域,兩個位於不同的 Aurora MySQL 資料庫叢集。
如需詳細資訊,請參閱跨 複寫 Amazon Aurora MySQL 資料庫叢集 AWS 區域。
-
使用 MySQL 二進位日誌 (binlog) 複寫 AWS 區域,在相同 中有兩個 Aurora MySQL 資料庫叢集。
如需詳細資訊,請參閱在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫。
-
一個 RDS for MySQL 資料庫執行個體作為來源及一個 Aurora MySQL 資料庫叢集,方法為建立 RDS for MySQL 資料庫執行個體的 Aurora 僅供讀取複本。
您可以使用此方法,在遷移至 Aurora 期間,將現有和持續的資料變更帶到 Aurora MySQL。如需詳細資訊,請參閱使用 Aurora 僅RDS供讀取複本,將資料從「我SQL的資料SQL庫」執行個體移轉至 Amazon Aurora 我的資料庫叢集。
您還可以使用此方法,來增加資料讀取查詢的可擴展性。您可以使用唯讀 Aurora MySQL 叢集中的一個或多個資料庫執行個體,來查詢資料。如需詳細資訊,請參閱使用 Amazon Aurora 擴展您的我的SQL資料庫的讀取。
-
透過建立 Aurora 全域資料庫,在一個區域中的 Aurora MySQL 資料庫叢集 AWS 區域 ,以及不同區域中最多五個 Aurora 唯讀 Aurora MySQL 資料庫叢集。
您可以使用 Aurora 全域資料庫,來支援具有全球覆蓋的應用程式。主要 Aurora MySQL 資料庫叢集,具有寫入器執行個體以及最多 15 個 Aurora 複本。唯讀次要 Aurora MySQL 資料庫叢集,每個叢集最多可包含 16 個 Aurora 複本。如需更多詳細資訊,請參閱 使用 Amazon Aurora 全域資料庫。
注意
重新啟動 Amazon Aurora 資料庫叢集的主要執行個體時,也會自動重新啟動該資料庫叢集的 Aurora 複本,以重新建立進入點來保證整個資料庫叢集的讀取/寫入一致性。
Amazon Aurora MySQL 複寫的效能考量
下列功能可協助您微調 Aurora MySQL 複寫的效能。
複本日誌壓縮功能會自動減少複寫訊息的網路頻寬。因為每則訊息都會傳輸至所有 Aurora 複本,所以叢集越大,得到的好處就越大。此功能涉及寫入器節點上執行壓縮的一些 CPU 額外負荷。它在 Aurora MySQL 第 2 版和第 3 版中一律為啟用狀態。
binlog 篩選功能會自動減少複寫訊息的網路頻寬。因為 Aurora 複本不會使用複寫訊息中包含的 binlog 資訊,所以傳送至那些節點的訊息中會省略該資料。
在 Aurora MySQL 第 2 版中,您可以變更 aurora_enable_repl_bin_log_filtering
參數以控制此功能。此參數預設為開啟。因為此最佳化旨在透明化,所以您可能只在對複寫相關問題進行診斷或故障診斷期間才會關閉此設定。例如,比對無法使用此功能之舊版 Aurora MySQL 叢集的行為。
Binlog 篩選功能在 Aurora MySQL 第 3 版中一律為啟用狀態。
監控 Amazon Aurora MySQL 複寫
讀取擴展和高可用性取決於最短延遲時間。您可以監控 Amazon CloudWatch AuroraReplicaLag
指標,以監控 Aurora 複本落後於 Aurora MySQL 資料庫叢集之主要執行個體的程度。AuroraReplicaLag
指標會記錄在每個 Aurora 複本中。
主要資料庫執行個體也會記錄 AuroraReplicaLagMaximum
和 AuroraReplicaLagMinimum
Amazon CloudWatch 指標。AuroraReplicaLagMaximum
指標會記錄主要執行個體與資料庫叢集中各個 Aurora 資料庫執行個體之間的最大延遲量。AuroraReplicaLagMinimum
指標會記錄主要執行個體與資料庫叢集中各個 Aurora 資料庫執行個體之間的最小延遲量。
如果需要 Aurora 複本延遲的最新值,您可以在 Amazon CloudWatch 中檢查 AuroraReplicaLag
值。Aurora 複本延遲也會記錄在 information_schema.replica_host_status
資料表中 Aurora MySQL 資料庫叢集中的每個 Aurora 複本上。如需此資料表的詳細資訊,請參閱 information_schema.replica_host_status。
如需監控 RDS 執行個體和 CloudWatch 指標的詳細資訊,請參閱 在 Amazon Aurora 叢集中監控指標。