適用於 Amazon 的多可用區域資料庫叢集部署 RDS - Amazon Relational Database Service

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

適用於 Amazon 的多可用區域資料庫叢集部署 RDS

多可用區域資料庫叢集部署是具有RDS兩個可讀取複本資料庫執行個體的 Amazon 半同步、高可用性部署模式。多可用區域資料庫叢集具有寫入器資料庫執行個體和兩個讀取器資料庫執行個體,位於相同 AWS 區域中的三個個別可用區域中。多可用區域資料庫叢集相較於多可用區域資料庫執行個體部署,可提供高可用性、增加讀取工作負載的容量,以及降低寫入延遲。

您可以遵循將資料匯入 Amazon RDS for MySQL 資料庫,減少停機時間中的指示,將資料從內部部署資料庫匯入至多可用區域資料庫叢集。

您可以為多可用區域資料庫叢集購買預留資料庫執行個體。如需詳細資訊,請參閱多可用區域資料庫叢集的預留資料庫執行個體

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需RDS使用多可用區域資料庫叢集的 Amazon 版本和區域可用性的詳細資訊,請參閱 Amazon RDS 中多可用區域資料庫叢集支援的區域和資料庫引擎

重要

多可用區域資料庫叢集與 Aurora 資料庫叢集不同。如需 Aurora​ 資料庫叢集的詳細資訊,請參閱《Amazon Aurora​ 使用者指南》。

多可用區域資料庫叢集的執行個體類別可用性

下列資料庫執行個體類別支援多可用區域資料庫叢集部署:db.m5ddb.m6gd、、db.m6iddb.m6idndb.r5ddb.r6gddb.x2iedndb.r6iddb.r6idndb.c6gd

注意

c6gd 執行個體類別是唯一支援medium執行個體大小的類別。

如需資料庫執行個體類別的詳細資訊,請參閱 數據庫實例類

多可用區域資料庫叢集架構

使用多可用區域資料庫叢集,Amazon 會使用資料庫引擎的原生RDS複寫功能,將資料從寫入器資料庫執行個體複寫至兩個讀取器資料庫執行個體。對寫入器資料庫執行個體進行變更時,會將它傳送至每個讀取器資料庫執行個體。

多可用區域資料庫叢集部署使用半同步複寫,需要至少一個讀取器資料庫執行個體的確認才能遞交變更。它不需要確認事件已在所有複本上完全執行並遞交。

讀取器資料庫執行個體做為自動容錯移轉目標,並提供讀取流量,以增加應用程式讀取輸送量。如果您的寫入器資料庫執行個體發生中斷, 會RDS管理容錯移轉至其中一個讀取器資料庫執行個體。RDS 根據哪個讀取器資料庫執行個體具有最新的變更記錄來執行此操作。

下圖顯示多可用區域資料庫叢集。

多可用區域資料庫叢集

與多可用區域資料庫執行個體部署相比,多可用區域資料庫叢集通常具有較低的寫入延遲。此外也允許在讀取器資料庫執行個體上執行唯讀工作負載。RDS 主控台會顯示寫入器資料庫執行個體的可用區域,以及讀取器資料庫執行個體的可用區域。您也可以使用 describe-db-clusters CLI 命令或 DescribeDBClusters API操作來尋找此資訊。

重要

為了防止 中我的SQL多可用區域資料庫叢集RDS的複寫錯誤,強烈建議所有資料表都有主索引鍵。

多可用區域資料庫叢集的參數群組

在多可用區域資料庫叢集中,資料庫叢集參數群組做為引擎組態值的容器,這些值會套用到多可用區域資料庫叢集的每個資料庫執行個體。

在多可用區域資料庫叢集中,DB parameter group (資料庫參數群組) 會設定為資料庫引擎和資料庫引擎版本的預設資料庫參數群組。資料庫叢集參數群組中的設定用於叢集中的所有資料庫執行個體。

如需參數群組的詳細資訊,請參閱 使用多可用區域資料庫叢集的資料庫叢集參數群組

RDS 具有多可用區域資料庫叢集的 Proxy

您可以使用 Amazon RDS Proxy 為多可用區域資料庫叢集建立代理。透過使用 RDS Proxy,您的應用程式可以集區和共用資料庫連線,以提高其擴展能力。每個代理都會執行連線多工 ,也稱為連線重複使用。使用多工時,RDSProxy 會使用一個基礎資料庫連線來執行交易的所有操作。RDS Proxy 也可以將多可用區域資料庫叢集的次要版本升級停機時間縮短至一秒或更短。如需 RDS Proxy 優點的詳細資訊,請參閱 Amazon RDS Proxy

若要設定多可用區域資料庫叢集的代理,請在建立叢集時選擇建立RDS代理。如需建立和管理 RDS Proxy 端點的指示,請參閱 使用 Amazon RDS 代理端點

複本延遲和多可用區域資料庫叢集

複本延遲指的是寫入器資料庫執行個體上的最新交易,與多可用區域資料庫叢集中讀取器資料庫執行個體上最新套用交易之間的時間差異。Amazon CloudWatch 指標ReplicaLag代表此時間差異。如需 CloudWatch 指標的詳細資訊,請參閱 使用 Amazon 監控 RDS 指標 CloudWatch

雖然多可用區域資料庫叢集可達到高寫入效能,但由於以引擎為基礎的的複寫性質,複本延遲仍可能出現。任何容錯移轉都必須先解決複本延遲情況,然後才能提升新的寫入器資料庫執行個體,因此監控和管理複本延遲是需考慮的因素。

對於RDS我的SQL多可用區域資料庫叢集,容錯移轉時間取決於兩個剩餘讀取器資料庫執行個體的複本延遲。兩個讀取器資料庫執行個體必須套用未套用的交易,然後才能將其中一個提升到新的寫入器資料庫執行個體。

對於 RDS PostgreSQL 多可用區域資料庫叢集,容錯移轉時間取決於兩個剩餘讀取器資料庫執行個體的最低複本延遲。具有最低複本延遲的讀取器資料庫執行個體必須套用未套用的交易,然後才能將其提升到新的寫入器資料庫執行個體。

如需示範如何在複本延遲超過設定時間量時建立 CloudWatch 警示的教學課程,請參閱 教學課程:為 Amazon 的多可用區域資料庫叢集複本延遲建立 Amazon CloudWatch 警示 RDS

複本延遲的常見原因

通常,如果寫入工作負載過高,讀取器資料庫執行個體就無法有效套用交易,進而發生複本延遲。多種工作負載可能會發生暫時或連續的複本延遲。以下是一些常見原因的例子:

  • 寫入器資料庫執行個體上進行高寫入並行或大批次更新,導致讀取器資料庫執行個體上的套用程序落後。

  • 繁重的讀取工作負載使用一或多個讀取器資料庫執行個體上的資源。執行緩慢或大型查詢可能會影響套用程序,且可能導致複本延遲。

  • 修改大量資料或DDL陳述式的交易有時會導致複本延遲暫時增加,因為資料庫必須保留遞交順序。

緩解複本延遲

對於 for MySQL 和 RDS for Postgre RDS的多可用區域資料庫叢集SQL,您可以透過減少寫入器資料庫執行個體的負載來減輕複本延遲。您還可以使用流量控制來減少複本延遲。流量控制的運作機制是調節寫入器資料庫執行個體上的寫入作業,確保複本延遲不會繼續無限制增長。寫入調節的運作機制是在交易結尾新增延遲,藉此降低寫入器資料庫執行個體的寫入輸送量。雖然流量控制不能保證消除延遲,但可以幫助減少許多工作負載的整體延遲。下列各節提供將流程控制與 RDS for MySQL 和 RDS for Postgre 搭配使用的相關資訊SQL。

使用 RDS for My 的流量控制來減少複本延遲SQL

當您使用 RDS 作為我的SQL多可用區域資料庫叢集時,流量控制會預設使用動態參數 開啟rpl_semi_sync_master_target_apply_lag。此參數指定您要用於複本延遲的上限。當複本延遲接近此設定的限制時,流量控制會調節寫入器資料庫執行個體上的寫入交易,以嘗試將複本延遲包含在指定的值以下。在某些情況下,複本延遲可能會超過指定限制。根據預設,此參數設定為 120 秒。若要關閉流量控制,請將此參數設定為其最大值 86,400 秒 (一天)。

若要查看流量控制注入的目前延遲,請執行下列查詢以顯示參數 Rpl_semi_sync_master_flow_control_current_delay

SHOW GLOBAL STATUS like '%flow_control%';

您的輸出應該類似以下內容:

+-------------------------------------------------+-------+ | Variable_name | Value | +-------------------------------------------------+-------+ | Rpl_semi_sync_master_flow_control_current_delay | 2010 | +-------------------------------------------------+-------+ 1 row in set (0.00 sec)
注意

延遲以微秒為單位顯示。

當您開啟RDS適用於 MySQL Multi-AZ 資料庫叢集的 Performance Insights 時,您可以監控與陳述SQL式對應的等待事件,指出流量控制項延遲查詢。當流量控制引入延遲時,您可以在 Performance Insights 儀表板上檢視與SQL陳述式/wait/synch/cond/semisync/semi_sync_flow_control_delay_cond對應的等待事件。若要查看這些指標,請確認已開啟 Performance Schema。如需 Performance Insights 的詳細資訊,請參閱 利用 RDSAmazon上的 Performance Insights 來監控資料庫負載

使用 RDS for Postgre 的流量控制來減少複本延遲SQL

當您使用 RDS作為 PostgreSQL 多可用區域資料庫叢集時,流程控制會部署為延伸。它會為資料庫叢集中的所有資料庫執行個體啟動背景工作者。預設情況下,讀取器資料庫執行個體上的背景工作者,會向寫入器資料庫執行個體上的背景工作者傳達目前的複本延遲情況。如果任何讀取器資料庫執行個體上的延遲超過兩分鐘,寫入器資料庫執行個體上的背景工作者就會在交易結尾新增延遲。若要控制延遲閾值,請使用參數 flow_control.target_standby_apply_lag

當流量控制調節 PostgreSQL 程序時, 中的Extension等待事件pg_stat_activity和 Performance Insights 會指出這一點。函數 get_flow_control_stats 顯示有關目前正在新增多少延遲的詳細資訊。

流程控制可以使大多數具有短但高度並行交易的線上交易處理 (OLTP) 工作負載受益。如果延遲是由長時間執行的交易 (如批次操作) 引起的,流量控制提供的效益就沒有這麼大。

若要關閉流量控制功能,請從 shared_preload_libraries 移除擴充功能並重新啟動資料庫執行個體。

多可用區域資料庫叢集快照

在設定的備份時段期間,Amazon 會RDS建立並儲存多可用區域資料庫叢集的自動備份。RDS 會建立資料庫叢集的儲存磁碟區快照,備份整個叢集,而不只是個別執行個體。

您也可以手動備份多可用區域資料庫叢集。對於非常長期的備份,請考慮將快照資料匯出至 Amazon S3。如需詳細資訊,請參閱為 Amazon 建立多可用區域資料庫叢集快照 RDS

您可將多可用區域資料庫叢集還原到特定的時間點,從而建立新的多可用區域資料庫叢集。如需說明,請參閱 將多可用區域資料庫叢集還原至指定時間

或者,您可以將多可用區域資料庫叢集快照還原至單一可用區域部署或多可用區域資料庫執行個體部署。如需說明,請參閱「從多可用區域資料庫叢集快照還原至資料庫執行個體」。