Aurora Serverless v2 的運作方式 - Amazon Aurora

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

Aurora Serverless v2 的運作方式

以下概觀描述 Aurora Serverless v2 如何運作。

Aurora Serverless v2 概觀

Amazon Aurora Serverless v2 適用於高要求、高度可變的工作負載。例如,您的資料庫使用量可能在短時間內很大,然後是長時間的輕度活動或完全沒有活動。某些範例是具有定期促銷活動的零售網站、遊戲或體育網站,以及在需要時產生報告的資料庫。其他則為開發和測試環境,及用量可能會迅速增加的新應用程式。對於這類類似案例和許多其他情況,並不一定可以使用佈建的模型事先正確設定容量。如果您過度佈建且具有未使用的容量,也可能會產生較高的成本。

相比之下,Aurora 佈建的叢集適用於穩定的工作負載。對於已佈建叢集,您可以選擇具有預先定義記憶體量、CPU 功率、I/O 頻寬等的資料庫執行個體類別。若您的工作負載發生變化,您可以手動修改寫入器和讀取器的執行個體類別。當您可以在預期的耗用模式之前調整容量,佈建的模型就能順利運作,並且在您變更集中寫入器和讀取器的執行個體類別時,短暫中斷是可以接受的。

Aurora Serverless v2 的架構完全是為了支援可即時擴展的無伺服器資料庫叢集。Aurora Serverless v2 旨在提供與已佈建寫入器和讀取器相同程度的安全性和隔離性。這些方面在多租戶無伺服器雲端環境中至關重要。動態擴展機制的額外負荷很小,因此可以快速回應資料庫工作負載的變化。其功能強大,足以滿足大幅增加的處理需求。

使用 Aurora Serverless v2,您可以建立 Aurora 資料庫叢集,而不必為每個寫入器和讀取器鎖定特定的資料庫容量。您指定最小和最大的容量範圍。Aurora 在該容量範圍內擴展叢集中的每個 Aurora Serverless v2 寫入器或讀取器。透過使用每個寫入器或讀取器都可以動態擴展的多可用區域叢集,您可以利用動態擴展和高可用性。

Aurora Serverless v2 根據您的最小和最大容量規格自動擴展資料庫資源。擴展速度很快,因為大多數擴展事件作業皆將寫入器或讀取器保留在同一主機上。在極少數狀況下,Aurora Serverless v2 寫入器或讀取器從一個主機移至另一個主機,Aurora Serverless v2 會自動管理連線。您無需變更資料庫用戶端應用程式程式碼或資料庫連線字串。

利用 Aurora Serverless v2,與已佈建叢集一樣,儲存容量和運算容量是獨立的。當我們提到 Aurora Serverless v2 容量和擴展時,總是在增加或減少運算容量。因此,即使 CPU 和記憶體容量縮減規模到低等級,您的叢集也可以包含許多 TB 的資料。

您無需佈建和管理資料庫伺服器,而是指定資料庫容量。如需 Aurora Serverless v2 容量的詳細資訊,請參閱 Aurora Serverless v2 容量。每個 Aurora Serverless v2 寫入器或讀取器的實際容量會隨時間而變化,依您的工作量而定。如需有關該機制的詳細資料,請參閱 Aurora Serverless v2 擴展

重要

利用 Aurora Serverless v1,您的叢集具有單一的運算容量度量,可在最小和最大容量值之間擴展。利用 Aurora Serverless v2,您的叢集除了寫入器之外還可包含讀取器。每個 Aurora Serverless v2 寫入器和讀取器可在容量值下限和上限之間進行擴展。因此,Aurora Serverless v2 叢集的總容量取決於您為資料庫叢集定義的容量範圍及叢集中寫入器和讀取器的數量。在任何特定時間點,您只需為您 Aurora 資料庫叢集中正在使用的 Aurora Serverless v2 容量付費。

Aurora 資料庫叢集的組態

對於每個 Aurora 資料庫叢集,您可以選擇 Aurora Serverless v2 容量、已佈建容量或兩者的任意組合。

您可以設定叢集,其中包含 Aurora Serverless v2 和已佈建容量,稱為混合組態叢集。例如,假設您需要比 Aurora Serverless v2 寫入器可用的更多讀取/寫入容量。在這種情況下,您可以使用非常大的已佈建寫入器來設定叢集。在該種情況下,您仍可為讀取器使用 Aurora Serverless v2。或者假設叢集的寫入工作負載有變化,但讀取工作負載穩定。在這種情況下,您可以使用 Aurora Serverless v2 寫入器和一個或多個已佈建讀取器來設定叢集。

您還可以設定一個資料庫叢集,其中所有容量皆由 Aurora Serverless v2 管理。為此,您可以建立一個新叢集,並從一開始就使用 Aurora Serverless v2。或者,您也可以將現有叢集中的所有已佈建容量替換為 Aurora Serverless v2。例如,舊版引擎的某些升級路徑需要從已佈建的寫入器開始,然後將其替換為 Aurora Serverless v2 寫入器。如需有關使用 Aurora Serverless v2 建立新資料庫叢集或將現有資料庫叢集切換至 Aurora Serverless v2 的程序,請參閱 建立 Aurora Serverless v2 資料庫叢集從已佈建叢集切換至 Aurora Serverless v2

如果您在資料庫叢集中完全不使用 Aurora Serverless v2,則資料庫叢集中的所有寫入器和讀取器都是已佈建的。這是大多數使用者熟悉的最古老、最常見的資料庫叢集。事實上,在 Aurora Serverless 之前,這種 Aurora 資料庫叢集並無特殊名稱。已佈建容量是常數。費用相對容易預測。但是,您必須提前預測您需要多少容量。在某些情況下,您的預測可能不準確,或者您的容量需求可能會發生變化。在這些情況下,您的資料庫叢集可能會變得佈建不足 (比您想要的速度慢) 或過度佈建 (比您想要的成本要高)。

Aurora Serverless v2 容量

Aurora Serverless v2 的測量單位是 Aurora 容量單元 (ACU)。Aurora Serverless v2 容量與您用於已佈建叢集的資料庫執行個體類別無關。

每個 ACU 是大約 2 GiB 的記憶體、對應的 CPU 和聯網的組合。您可以使用此度量單位指定資料庫容量範圍。ServerlessDatabaseCapacityACUUtilization 指標可協助您確定資料庫實際使用的容量,及該容量在指定範圍內的位置。

在任何時候,每個 Aurora Serverless v2 資料庫寫入器或讀取器皆有一個容量。容量表示為代表 ACU 的浮點數。每當寫入器或讀取器擴展時,容量都會增加或減少。此值每秒測量一次。對於要使用 Aurora Serverless v2 的每個資料庫叢集,您定義一個容量範圍:每個 Aurora Serverless v2 寫入器或讀取器可在其間擴展的最小和最大容量值。容量範圍對於資料庫叢集中的每個 Aurora Serverless v2 寫入器或讀取器都相同。每個 Aurora Serverless v2 寫入器或讀取器都有自己的能力,落在該範圍內的某個地方。

您可定義的最大 Aurora Serverless v2 容量為 128 個 ACU。如需選擇最大容量值時的所有注意事項,請參閱 選擇叢集的最大值 Aurora Serverless v2 容量設定

您可定義的最小 Aurora Serverless v2 容量為 0.5 個 ACU。若其小於或等於最大容量值,您可以指定更大的數字。將最小容量設定為較小的數字可使負載較輕的資料庫叢集消耗最少的運算資源。同時,它們隨時準備好立即接受連線,並在忙碌時擴充規模。

我們建議將最小值設定為允許每個資料庫寫入器或讀取器將應用程式的工作集保存在緩衝集區中的值。這樣,緩衝集區的內容在閒置期間不會被丟棄。如需選擇最小容量值時的所有注意事項,請參閱 選擇叢集的最小值 Aurora Serverless v2 容量設定

根據您在多可用區域資料庫叢集中設定讀取器的方式,讀取器的容量可以繫結至寫入器的容量,也可以獨立地調整。如需有關如何執行此作業的詳細資訊,請參閱 Aurora Serverless v2 擴展

監控 Aurora Serverless v2 涉及隨時間測量資料庫叢集中寫入器和讀取器的容量值。若資料庫未縮減規模至最小容量,則可採取諸如調整最小容量和最佳化資料庫應用程式等作業。如果資料庫持續達到其最大容量,則可採取諸如增加最大值之類的動作。您還可以最佳化資料庫應用程式,並將查詢負載分佈到更多讀取器中。

Aurora Serverless v2 容量的費用是以 ACU 小時計算的。如需有關如何計算 Aurora Serverless v2 費用的資訊,請參閱 Aurora 定價頁

假設叢集中的寫入者和讀取器總數為 N。在這種情況下,當您執行行任何資料庫操作時,叢集消耗大約 n x minimum ACUs。Aurora 本身可能會執行導致少量負載的監控或維護作業。當資料庫滿容量執行時,該叢集的消耗不超過 n x maximum ACUs

如需選擇適當的最小和最大 ACU 值的詳細資訊,請參閱選擇 Aurora 叢集的 Aurora Serverless v2 容量範圍。您指定的最小和最大 ACU 值也會影響某些 Aurora 組態參數對 Aurora Serverless v2 的運作方式。如需容量範圍和組態參數之間互動的詳細資訊,請參閱使用 Aurora Serverless v2 的參數群組

Aurora Serverless v2 擴展

對於每個 Aurora Serverless v2 寫入器或讀取器,Aurora 會持續追蹤 CPU、記憶體和網路等資源的使用率。這些測量統稱為負載。負載包括應用程式執行的資料庫作業。它還包括資料庫伺服器和 Aurora 管理任務的背景處理。當容量受到上述任何一種限制時,Aurora Serverless v2 擴充規模。Aurora Serverless v2 也會在偵測到這麼做可得到解決的效能問題時進行擴充。您可使用 Amazon 的重要 CloudWatch 指標 Aurora Serverless v2使用績效詳情監控 Aurora Serverless v2 效能 中的程序,監控資源使用率及其如何影響 Aurora Serverless v2 擴展。

資料庫叢集中的寫入器和讀取器的負載可能會有所不同。寫入器會處理所有資料定義語言 (DDL) 陳述式,如 CREATE TABLEALTER TABLEDROP TABLE。寫入器也會處理所有資料處理語言 (DML) 陳述式,例如 INSERTUPDATE。讀取器可以處理唯讀陳述式,例如 SELECT 查詢。

擴展是增加或減少資料庫 Aurora Serverless v2 容量的操作。搭配 Aurora Serverless v2,每個寫入器和讀取器都有自己的目前容量值,以 ACU 為單位。當 Aurora Serverless v2 目前容量太低而無法處理負載時,會將寫入器或讀取器擴展到更高的容量。當其目前容量高於需要時,它會將寫入器或讀取器縮減到更低的容量。

與每次資料庫叢集達到閾值時透過將容量加倍來進行擴展的 Aurora Serverless v1 不同,Aurora Serverless v2 可逐步增加容量。當您的工作負載需求開始達到寫入器或讀取器的目前資料庫容量時,Aurora Serverless v2會增加該寫入器或讀取器的 ACU 數量。Aurora Serverless v2 會按照所需的增量來調整容量,以便為所耗用的資源提供最佳效能。擴展以小至 0.5 ACU 的增量發生。目前容量越大,擴展增量就越大,因此可以發生更快的擴展。

由於Aurora Serverless v2擴展非常頻繁、精細且不中斷,因此不會以這樣的方式引起離散事件。 AWS Management Console Aurora Serverless v1相反地,您可以測量 Amazon CloudWatch 指標,例如ServerlessDatabaseCapacityACUUtilization和追蹤一段時間內的最小值、最大值和平均值。如要進一步了解 Aurora 指標,請參閱 在 Amazon Aurora 叢集中監控指標。如需監控 Aurora Serverless v2 的提示,請參閱 Amazon 的重要 CloudWatch 指標 Aurora Serverless v2

您可以選擇與關聯的寫入器同時擴展讀取器,也可以獨立於寫入器進行擴展。您可以透過為該讀取器指定提升層來執行此操作。

  • 提升層 0 和 1 中的讀取器與寫入器同時擴展。這種擴展行為使優先順序層 0 和 1 中的讀取器成為可用性的理想選擇。這是因為它們總是調整到適當的容量,以便在發生容錯移轉時從寫入器處接管工作負載。

  • 提升層 2 至 15級中的讀取器可獨立於寫入器擴展。每個讀取器保持在您為叢集指定的最小和最大 ACU 值範圍內。當讀取器獨立於關聯的寫入器資料庫進行擴展時,它可能會處於閒置狀態並縮減規模,而寫入器繼續處理大量交易。如果在較低的提升層中沒有其他讀取器可用,則它仍可用作容錯移轉目標。但是,如果將其提升為寫入器,則可能需要擴充規模以處理寫入器的全部工作負載。

如需提升層的詳細資訊,請參閱選擇 Aurora Serverless v2 讀取器的提升層

擴展點和來自 Aurora Serverless v1 相關逾時期間的概念不適用於 Aurora Serverless v2。Aurora Serverless v2 擴展可能發生在資料庫連線開啟、SQL 交易正在處理、資料表遭鎖定及臨時表正在使用時。Aurora Serverless v2 不會等待安靜點開始擴展。擴展不會中斷正在進行的任何資料庫作業。

如果您的工作負載需要比單一寫入器和單一讀取器所提供更多的讀取容量,您可以將多個 Aurora Serverless v2 讀取器新增至叢集。每個 Aurora Serverless v2 讀取器皆可在您為資料庫叢集指定的最小和最大容量值範圍內擴展。您可以使用叢集的讀取器端點,將唯讀工作階段導向讀取器,並減少寫入器的負載。

Aurora Serverless v2 是否執行擴展,以及一旦啟動後擴展發生的速度,還取決於叢集的最小和最大 ACU 設定。此外,這取決於讀取器是設定為與寫入器一起擴展還是獨立擴展。如需有關影響 Aurora Serverless v2 擴展因素的詳細資料,請參閱 Aurora Serverless v2 的效能和擴展

注意

目前,Aurora Serverless v2 寫入器和讀取器不會一直縮減為零 ACU。閒置的 Aurora Serverless v2 寫入程序和讀取器可以縮減規模到您為叢集指定的最小 ACU 值。

這種行為與 Aurora Serverless v1 不同,後者可能會在閒置一段時間後暫停,但在開啟新連接時需要一些時間才能恢復。當一段時間內不需要您的資料庫叢集與 Aurora Serverless v2 容量,您可以像使用已佈建的資料庫叢集一樣停止和啟動叢集。如需停止和啟動叢集的詳細資料,請參閱 停用和啟動 Amazon Aurora 資料庫叢集

Aurora Serverless v2 和高可用性

為 Aurora 資料庫叢集建立高可用性的方法,是使其成為多可用區域資料庫叢集。多可用區域 Aurora 資料庫叢集在多個可用區域 (AZ) 中始終具有可用的運算容量。該組態保持資料庫的正常執行,即使在出現嚴重停機的情況下也是如此。Aurora 會在出現影響寫入器甚至整個可用區域的問題時,執行自動容錯移轉。利用 Aurora Serverless v2,您可以選擇待命運算容量隨著寫入器的容量進行縱向擴展和縮減。這樣,第二個可用區域中的運算容量就可以隨時接管目前工作負載。同時,當資料庫閒置時,所有可用區域中的運算容量都可以縮減規模。如需 Aurora 如何與可用區域搭配使用 AWS 區域 的詳細資訊,請參閱Aurora 資料庫執行個體的高可用性

Aurora Serverless v2 多可用區域功能除了寫入器,也會使用讀取器。與 Aurora Serverless v1 相比,Aurora Serverless v2 對閱讀器的支援是新的。您可以將最多 15 個 Aurora Serverless v2 讀取器跨 3 個可用區域分散到 Aurora 資料庫叢集。

對於即使發生影響整個叢集或整個區域的問題也必須保持可用的關鍵業務應用程式,您可以設定 Aurora 全 AWS 域資料庫。您可於次要叢集中使用 Aurora Serverless v2 容量,以便其準備好在災難復原期間接管。當資料庫不忙碌時,它們還可以縮減規模。如需 Aurora 全球資料庫的詳細資訊,請參閱 使用 Amazon Aurora Global Database

Aurora Serverless v2 的運作原理類似於為容錯移轉和其他高可用性功能進行佈建。如需詳細資訊,請參閱 Amazon Aurora 的高可用性

假設您要確保 Aurora Serverless v2 叢集的最大可用性。除了寫入器之外,您還可建立讀取器。如果您將讀取器指派到提升層 0 或 1,則寫入器發生擴展時,讀取器也會一併發生。這樣,在發生容錯移轉時,具有相同容量的讀取器一律可以接管寫入器。

假設您希望在叢集繼續處理交易的同時為您的業務執行季度報告。如果新增 Aurora Serverless v2 讀取器至叢集,然後將其指派給提升層 2 到 15,您可以直接連接到該讀取器以執行報告。根據報告查詢的記憶體密集和 CPU 密集程度,該讀取器可以擴充規模以適應工作負載。然後,它可以在報告完成後再次縮減規模。

Aurora Serverless v2 和儲存

每個 Aurora 資料庫叢集的儲存,由分散在三個可用區域中的所有資料的六個副本組成。無論您的資料庫叢集是否包含除寫入器之外的任何讀取器,此內建資料複寫皆適用。如此,即使存在影響叢集運算容量的問題,您的資料也是安全的。

Aurora Serverless v2 儲存具有相同的可靠性和耐久性特性,如Amazon Aurora 儲存體與可靠性所述。這是因為無論運算容量使用 Aurora Serverless v2 或已佈建,Aurora 資料庫叢集的儲存運作方式都相同。

Aurora 叢集的組態參數

您可以為具有 Aurora Serverless v2 容量的叢集調整所有叢集和資料庫組態參數,方法與已佈建資料庫叢集相同。但是,對於 Aurora Serverless v2,一些與容量相關之參數的處理方式不同。在混合組態叢集中,您為這些與容量相關參數指定的參數值仍會套用至所有已佈建的寫入器和讀取器。

對於 Aurora Serverless v2 寫入器和讀取器,幾乎所有參數的運作方式都與已佈建項目相同。例外狀況是 Aurora 在擴展期間中自動調整的一些參數,及 Aurora 將某些參數保持在取決於最大容量設定的固定值。

例如,為緩衝區快取保留的記憶體量隨著寫入器或讀取器的擴展而增加,並隨著縮小而減少。如此,可在資料庫不忙時釋放記憶體。反之,Aurora 會根據最大容量設定,自動將最大連接數設定為適當的值。這樣,如果負載下降且 Aurora Serverless v2 縮減規模,則作用中連線不會遭到中斷。如需 Aurora Serverless v2 如何處理特定參數的資訊,請參閱 使用 Aurora Serverless v2 的參數群組