使用 ACUs自動暫停和繼續將 擴展至零 Aurora Serverless v2 - Amazon Aurora

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

使用 ACUs自動暫停和繼續將 擴展至零 Aurora Serverless v2

您可以指定 Aurora Serverless v2 資料庫執行個體縮減為零ACUs,如果沒有使用者活動在指定期間內啟動的任何連線,則會自動暫停。您可以指定資料庫叢集的最小值為零,藉此達成此ACU目的。當執行個體處於暫停狀態時,您不需要支付執行個體容量的費用。啟用 Aurora 叢集的自動暫停和恢復功能 (自動暫停),這些叢集使用量很低,或長時間沒有活動,可協助您管理資料庫機群的成本。

注意

自動暫停功能適用於 Aurora Serverless v2 同時搭配 Aurora PostgreSQL 和 Aurora MySQL。您可能需要升級 Aurora 資料庫引擎版本,才能利用此功能。如需最低容量ACUs為 0 的引擎版本,請參閱 Aurora Serverless v2 容量

概觀 Aurora Serverless v2 自動暫停功能

Aurora Serverless v2 資料庫執行個體可以在沒有使用者連線的一段時間後自動暫停,並在連線請求送達時自動繼續。所以此 Aurora Serverless v2 自動暫停/恢復功能有助於管理沒有嚴格服務層級目標的系統成本 (SLO)。例如,您可以為用於開發和測試的叢集啟用此功能,或在資料庫繼續時可接受短暫暫停的內部應用程式啟用此功能。如果您的工作負載處於閒置期間,並且可以容忍執行個體繼續期間的連線稍有延遲,請考慮使用自動暫停搭配您的 Aurora Serverless v2 執行個體以降低成本。

您可以指定 是否 Aurora Serverless v2 叢集中的資料庫執行個體可以自動暫停或不暫停,以及每個執行個體在暫停之前必須閒置多久。為所有 啟用自動暫停行為 Aurora Serverless v2 Aurora 叢集中的資料庫執行個體,您可以將叢集的最小容量值設定為零ACUs。

如果您先前利用 Aurora Serverless v1 功能在閒置一段時間ACUs後擴展到零,您可以升級到 Aurora Serverless v2 並使用其對應的自動暫停功能。

自動暫停功能可節省成本的優點類似於使用停止/啟動叢集功能。自動暫停 Aurora Serverless v2 具有比啟動已停止叢集更快的繼續,以及自動決定何時暫停和繼續每個資料庫執行個體的程序的額外優勢。

自動暫停功能也提供額外精細度,以控制叢集內運算資源的成本。即使寫入器執行個體和叢集中的其他讀取器隨時保持作用中狀態,您也可以讓某些讀取器執行個體暫停。您可以透過指派讀取器執行個體來暫停 2-15 範圍內的容錯移轉優先順序,而這些執行個體可以獨立於其他執行個體。

寫入器執行個體和容錯移轉優先順序為 0 和 1 的所有讀取器執行個體一律會同時暫停和繼續。因此,此群組中的執行個體在指定的時間間隔內沒有任何連線後會暫停。

Aurora 資料庫叢集可以包含寫入器和讀取器資料庫執行個體的組合,並已佈建 和 Aurora Serverless v2 資料庫執行個體。因此,為了有效地使用此功能,了解自動暫停機制的下列層面會很有幫助:

  • 資料庫執行個體可能自動暫停的情況。

  • 可能阻止資料庫執行個體暫停的時間。例如,啟用某些 Aurora 功能或在叢集上執行特定類型的操作,即使沒有這些執行個體的任何連線,也可能會阻止執行個體暫停。

  • 執行個體暫停時監控和計費的後果。

  • 哪些動作會導致資料庫執行個體繼續處理。

  • 資料庫執行個體的容量在暫停和恢復事件期間如何變更。

  • 如何在資料庫執行個體暫停之前控制閒置間隔。

  • 如何編寫應用程式邏輯的程式碼,以在資料庫執行個體繼續處理時處理期間。

的先決條件和限制 Aurora Serverless v2 自動暫停功能

使用自動暫停功能之前,請檢查要使用的引擎版本。此外,請檢查自動暫停是否可搭配您打算使用的其他 Aurora 功能運作。如果您使用的是不支援它的引擎版本,則無法開啟自動暫停。對於不相容的功能,如果您將它們與自動暫停結合使用,則不會收到任何錯誤。如果叢集使用任何不相容的功能或設定,Aurora Serverless v2 執行個體不會自動暫停。

某些條件或設定會阻止 Aurora Serverless v2 執行個體自動暫停。如需詳細資訊,請參閱其中 的情況 Aurora Serverless v2 不會自動暫停

開啟和關閉自動暫停功能

您可以在叢集層級開啟和關閉自動暫停功能。若要這樣做,您可以使用與調整叢集最小和最大容量時相同的程序。自動暫停功能以最小容量 0 表示ACUs。

開啟 的自動暫停 Aurora Serverless v2 叢集中的 執行個體

請遵循 設定叢集的 Aurora Serverless v2 容量範圍 中的程序。針對最小容量,請選擇 0ACUs。當您選擇最小容量為 0 時ACUs,您也可以指定執行個體在自動暫停之前閒置的時間長度。

下列CLI範例示範如何在啟用自動暫停功能且自動暫停間隔設定為十分鐘 (600 秒) 的情況下建立 Aurora 叢集。

aws rds create-db-cluster \ --db-cluster-identifier my-serverless-v2-cluster \ --region eu-central-1 \ --engine aurora-mysql \ --engine-version 8.0 \ --serverless-v2-scaling-configuration MinCapacity=0,MaxCapacity=4,SecondsUntilAutoPause=600 \ --master-username myuser \ --manage-master-user-password

下列CLI範例示範如何開啟現有 Aurora 叢集的自動暫停功能。此範例會將自動暫停間隔設定為一小時 (3600 秒)。

aws rds modify-db-cluster --db-cluster-identifier serverless-v2-cluster \ --serverless-v2-scaling-configuration MinCapacity=0,MaxCapacity=80,SecondsUntilAutoPause=3600 aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query 'DBClusters[*].ServerlessV2ScalingConfiguration|[0]' { "MinCapacity": 0, "MaxCapacity": 80.0, "SecondsUntilAutoPause": 3600 }

可設定 Aurora Serverless v2 自動暫停逾時間隔

逾時間隔會以 Aurora 叢集的 ServerlessV2ScalingConfiguration 屬性表示。如果最小容量設定為零,您可以在建立或修改 Aurora 叢集 AWS Management Console 時,在 中指定此間隔ACUs。您可以在建立或修改 Aurora 叢集時使用 AWS CLI --serverless-v2-scaling-configuration 參數,在 中指定它。您可以在建立或修改 Aurora 叢集時使用 RDS API ServerlessV2ScalingConfiguration 參數,在 中指定它。

您可以設定的最短間隔為 300 秒 (5 分鐘)。如果您未指定間隔,則這是預設值。您可以設定的間隔上限為 86,400 秒 (一天)。

假設您透過將叢集的最小容量變更為非零值來關閉叢集的自動暫停功能。在這種情況下,間隔屬性會從ServerlessV2ScalingConfiguration屬性中移除。該屬性的不存在可額外確認該叢集的自動暫停功能已關閉。如果您稍後重新開啟自動暫停,您可以在該時間再次指定任何自訂間隔。

繼續自動暫停 Aurora Serverless v2 執行個體

  • 當您連線到暫停的 Aurora Serverless v2 執行個體,它會自動恢復並接受連線。

  • 未包含有效登入資料的連線嘗試仍會導致資料庫執行個體繼續。

  • 如果您透過寫入器端點連線,Aurora 會在自動暫停時繼續寫入器資料庫執行個體。同時,Aurora 會繼續任何容錯移轉優先順序為 0 或 1 的自動暫停讀取器執行個體,這表示其容量與寫入器執行個體的容量相關聯。

  • 如果您透過讀取器端點連線,Aurora 會隨機選擇讀取器執行個體。如果該讀取器執行個體暫停,Aurora 會繼續它。Aurora 也會先繼續寫入器執行個體,因為如果任何讀取器執行個體處於作用中狀態,寫入器執行個體必須一律處於作用中狀態。當 Aurora 恢復該寫入器執行個體時,這也會導致容錯移轉提升方案中的任何讀取器執行個體為零,一個則繼續。

  • 如果您透過RDS資料 將請求傳送至叢集API,Aurora 會在寫入器執行個體暫停時繼續執行。然後,Aurora 會處理資料API請求。

  • 當您變更資料庫叢集參數群組中組態參數的值時,Aurora 會自動繼續任何暫停的 Aurora Serverless v2 所有叢集中使用該叢集參數群組的 執行個體。同樣地,當您變更資料庫參數群組中的參數值時,Aurora 會自動繼續任何暫停的 Aurora Serverless v2 使用該資料庫參數群組的 執行個體。當您修改叢集以指派不同的叢集參數群組時,或當您修改執行個體以指派不同的資料庫參數群組時,都會套用相同的自動恢復行為。

  • 執行恢復請求會自動繼續 Aurora Serverless v2 如果已暫停,則為寫入器執行個體。Aurora 會在寫入器執行個體繼續後處理恢復請求。您可以恢復到 Aurora Serverless v2 執行個體已暫停。

  • 取得叢集快照或刪除快照不會造成任何 Aurora Serverless v2 執行個體以繼續。

  • 建立 Aurora 複製會導致 Aurora 恢復正在複製之叢集的寫入器執行個體。

  • 如果暫停的執行個體在完成繼續之前收到大量的連線請求,則某些工作階段可能無法連線。我們建議針對具有一些 的 Aurora 叢集的連線實作重試邏輯 Aurora Serverless v2 已啟用自動暫停的 執行個體。例如,您可以重試任何失敗的連線三次。

  • Aurora 可以執行某些類型的次要內部維護,而無需喚醒執行個體。不過,在叢集維護時段期間發生的一些維護類型確實需要 Aurora 才能繼續執行個體。維護完成後,如果在指定的間隔後沒有活動,執行個體會自動再次暫停。

    注意

    Aurora 不會自動為引擎特定的排程任務繼續暫停執行個體,例如 PostgreSQL pg_cron延伸模組或 MySQL 事件排程器中的任務。若要確保此類任務執行,請在排程時間之前手動啟動與執行個體的連線。Aurora 不會在資料庫執行個體暫停時發生排程時間的任何任務佇列。當執行個體稍後繼續時,會略過此類任務。

  • 如果 Aurora 叢集在 Aurora Serverless v2 執行個體會自動暫停,Aurora 可能會繼續執行個體,然後將該執行個體提升為寫入者。如果一個或多個資料庫執行個體在執行個體暫停時從叢集中移除,則可能會發生相同的情況。在這種情況下,執行個體會在繼續時立即成為寫入器。

  • 變更叢集屬性的操作也會導致任何自動暫停 Aurora Serverless v2 執行個體以繼續。例如,自動暫停的執行個體會繼續執行下列操作:

    • 變更叢集的擴展範圍。

    • 升級 叢集的引擎版本。

    • 從暫停的執行個體描述或下載日誌檔案。您可以透過啟用日誌上傳到 CloudWatch 並分析日誌,來檢查暫停執行個體的歷史日誌資料 CloudWatch。

關閉 的自動暫停 Aurora Serverless v2 叢集中的 執行個體

請遵循 設定叢集的 Aurora Serverless v2 容量範圍 中的程序。針對最小容量,選擇 0.5 或更高的值。當您關閉自動暫停功能時,執行個體閒置的間隔會重設。如果您再次開啟自動暫停,您可以指定新的逾時間隔。

下列CLI範例示範如何關閉現有 Aurora 叢集的自動暫停功能。describe-db-clusters 輸出顯示,當最小容量設定為非零值時,會移除 SecondsUntilAutoPause 屬性。

aws rds modify-db-cluster --db-cluster-identifier serverless-v2-cluster \ --serverless-v2-scaling-configuration MinCapacity=2,MaxCapacity=80 aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query 'DBClusters[*].ServerlessV2ScalingConfiguration|[0]' { "MinCapacity": 2, "MaxCapacity": 80.0 }

如何 Aurora Serverless v2 自動暫停功能可運作

您可以使用下列資訊來規劃自動暫停功能的使用情況。了解執行個體暫停、繼續或保持作用中的狀態,可協助您平衡可用性、回應能力和成本節省之間的權衡。

發生的情況 Aurora Serverless v2 執行個體暫停

當 Aurora Serverless v2 資料庫執行個體會在一段沒有連線的期間後暫停:

  • Aurora 會在指定的間隔過後開始暫停執行個體,而沒有與執行個體的連線,無論ACUs執行個體當時有多少。

  • 暫停機制並非瞬間。同時 Aurora Serverless v2 即將自動暫停的執行個體可能會短暫等待,以趕上 Aurora 儲存體的所有變更。

  • 該執行個體的執行個體費用會保留。執行個體暫停時,ServerlessV2Usage指標的值為 0。

  • 執行個體的狀態值不會變更。狀態仍顯示為「可用」。

  • 執行個體會停止寫入資料庫日誌檔案。除了為 CPUUtilization和 註冊零百分比ACUUtilization,以及為 註冊零以外 CloudWatch,它會停止將指標傳送到 ServerlessDatabaseCapacity

  • Aurora 在 發出事件時 Aurora Serverless v2 資料庫執行個體開始暫停、完成暫停,以及暫停機制中斷或不成功。如需這些事件的詳細資訊,請參閱 資料庫執行個體事件

自動暫停時會發生什麼情況 Aurora Serverless v2 執行個體繼續

當 Aurora Serverless v2 資料庫執行個體會在自動暫停後繼續,適用下列條件:

  • 執行個體繼續時,會套用變更中的任何參數pending-reboot變更。

  • Aurora 會在每個 時發出執行個體層級事件 Aurora Serverless v2 資料庫執行個體會開始繼續、完成繼續,以及執行個體因某種原因而無法繼續。如需這些事件的詳細資訊,請參閱 資料庫執行個體事件

  • 任何請求的連線會在資料庫執行個體完成恢復後建立。因為一般的恢復時間可能約為 15 秒,我們建議您將任何用戶端逾時設定調整為超過 15 秒。例如,在JDBC驅動程式設定中,您可以調整 connectTimeoutsslResponseTimeout設定的值超過 15 秒。

注意

如果 Aurora Serverless v2 執行個體保持暫停超過 24 小時,Aurora 可以將執行個體置於更深層的睡眠中,這需要更長的時間才能恢復。在這種情況下,恢復時間可以是 30 秒或更長的時間,大約等同於重新啟動執行個體。如果您的資料庫閒置期間超過一天,建議您將連線逾時設定為 30 秒或更久。

執行個體計費如何用於自動暫停 Aurora Serverless v2 叢集

雖然 Aurora Serverless v2 執行個體已自動暫停,其執行個體費用為零。在此期間,ServerlessV2Usage指標為零。Aurora 儲存體和叢集中未與該特定資料庫執行個體綁定的其他層面 AWS 仍需付費。

其中 的情況 Aurora Serverless v2 不會自動暫停

  • 如果資料庫叢集的最小容量值高於零 ACUs,則 Aurora Serverless v2 叢集中的 執行個體不會自動暫停。如果您有現有的叢集具有 Aurora Serverless v2 在自動暫停功能可用之前來自 的 執行個體,最低容量設定為 0.5ACUs。若要搭配這類叢集使用自動暫停功能,請將最小容量設定修改為零ACUs。

  • 如果任何使用者起始的連線開放給 Aurora Serverless v2 執行個體,執行個體不會暫停。當修補和升級等活動正在進行時,執行個體也不會暫停。Aurora 用於運作狀態檢查的管理連線不會計入活動,也不會阻止執行個體暫停。

  • 在 Aurora PostgreSQL 叢集中,已啟用邏輯複寫,或已啟用 Binlog 複寫的 Aurora MySQL 叢集中,寫入器執行個體和容錯移轉提升層中的任何讀取器執行個體為零,不會自動暫停。Aurora 會執行固定的最低活動量,以檢查複寫連線的運作狀態。

    對於啟用複寫的叢集,您仍然可以在自動暫停的來源叢集中擁有 Aurora 讀取器執行個體。若要這樣做,請將容錯移轉優先順序設定為零或一個以外的值。如此一來,它們就可以與寫入器執行個體分開暫停。

  • 如果您的 Aurora 叢集有關聯的 RDS Proxy,代理會維持叢集中每個資料庫執行個體的開放連線。因此,任何 Aurora Serverless v2 這類叢集中的 執行個體不會自動暫停。

  • 如果您的叢集是 Aurora 全域資料庫中的主要叢集,Aurora 不會自動暫停 Aurora Serverless v2 寫入器執行個體。這是因為寫入器執行個體需要持續的活動層級,才能管理全域資料庫中的其他叢集。由於寫入器執行個體保持作用中,任何 Aurora Serverless v2 容錯移轉優先順序為零或一個的讀取器執行個體也不會自動暫停。

  • Aurora Serverless v2 Aurora Global Database 次要叢集中的 執行個體不會自動暫停。如果資料庫叢集提升為獨立叢集,則自動暫停功能會在符合所有其他條件時生效。

  • 在與 Redshift ETL有關聯零整合的叢集中,寫入器執行個體和容錯移轉提升方案零和一個中的任何讀取器執行個體不會自動暫停。

  • 除了執行個體主資料庫連接埠上的活動之外,如果 Aurora PostgreSQL 執行個體已啟用 Babelfish 功能,T 連接埠SQL上的任何連線和活動都會防止執行個體自動暫停。

自動暫停如何搭配叢集停止/啟動功能運作

您可以在啟用自動暫停功能時停止和啟動 Aurora 叢集。某些執行個體是否暫停並不重要。當您再次啟動叢集時,任何已暫停 Aurora Serverless v2 執行個體會自動繼續。

當 Aurora 叢集停止時,任何暫停 Aurora Serverless v2 執行個體不會根據連線嘗試自動繼續。再次啟動叢集後,暫停和繼續的一般機制 Aurora Serverless v2 執行個體適用。

自動暫停的維護和升級如何運作 Aurora Serverless v2 叢集

  • 雖然 Aurora Serverless v2 執行個體會自動暫停,如果您嘗試升級 Aurora 叢集,Aurora 會繼續執行個體並進行升級。

  • Aurora 會定期繼續任何自動暫停 Aurora Serverless v2 執行個體來執行維護,例如次要版本升級和參數群組等屬性的變更。

  • 在 之後 Aurora Serverless v2 執行個體會因升級或套用維護等管理操作而喚醒,Aurora 會等待至少 20 分鐘,然後再次暫停該執行個體。這是為了允許任何背景操作完成。如果執行個體接續經歷多個管理操作,二十分鐘期間也會避免暫停和繼續執行個體多次。

之間的自動暫停行為差異 Aurora Serverless v2 以及 Aurora Serverless v1

  • 中的恢復時間已改善 Aurora Serverless v2 相較於 Aurora Serverless v1。 如果執行個體暫停不到 24 小時,則恢復時間通常約為 15 秒。如果執行個體暫停超過 24 小時,則恢復時間可能會更長。

  • 的方式 Aurora Serverless v2 適用於多可用區域叢集,表示叢集中的某些資料庫執行個體可能會在其他資料庫執行個體處於作用中狀態時暫停。寫入器執行個體會在任何讀取器執行時繼續,因為需要寫入器來協調叢集中的特定活動。因為 Aurora Serverless v1 不使用讀取器執行個體,整個叢集一律會暫停或處於作用中狀態。

  • 當讀取器端點隨機挑選要連線的讀取器執行個體時,該讀取器執行個體可能已經處於作用中狀態或可能已自動暫停。因此,存取讀取器執行個體的時間可能會有所不同,而且難以預測。使用 的多可用區域叢集 Aurora Serverless v2 因此, 和 自動暫停可能受益於為特定唯讀使用案例設定自訂端點,而不是將所有唯讀工作階段導向讀取器端點。

  • Aurora Serverless v2 執行個體會進行與佈建執行個體相同的維護操作。由於 Aurora 會在需要此類維護時自動繼續執行個體,您可能會發現 Aurora Serverless v2 執行個體繼續的頻率高於 Aurora Serverless v1 叢集已執行。

方法 Aurora Serverless v2 自動暫停適用於不同類型的 Aurora 叢集

自動暫停功能的考量取決於 Aurora 叢集中有多少執行個體、讀取器執行個體的容錯移轉提升層,以及所有執行個體是否 Aurora Serverless v2 或 的組合 Aurora Serverless v2 和 已佈建。

啟用自動暫停功能時,您可以安排 Aurora 叢集,在高可用性、快速回應和可擴展性之間取得適當的平衡,以符合您的使用案例。您可以透過選擇 Aurora Serverless v2 執行個體、佈建的執行個體,以及叢集中資料庫執行個體的容錯移轉提升方案。

下列類型的組態示範叢集高可用性和成本最佳化之間的不同權衡:

  • 對於開發和測試系統,您可以使用 設定單一可用區域資料庫叢集 Aurora Serverless v2 資料庫執行個體。單一執行個體提供所有讀取和寫入請求。當叢集在大量時間間隔內未使用時,資料庫執行個體會暫停。此時,叢集的資料庫運算成本也會暫停。

  • 對於執行高可用性為優先應用程式的系統,但叢集仍有完全閒置的期間,您可以設定多可用區域叢集,其中寫入器和讀取器資料庫執行個體都是 Aurora Serverless v2。 將讀取器執行個體設定為容錯移轉優先順序零或一,讓寫入器和讀取器執行個體同時暫停和繼續。現在,您可以在叢集處於作用中狀態時獲得快速容錯移轉的優勢。當叢集保持閒置狀態的時間超過自動暫停閾值時,這兩個執行個體的資料庫執行個體費用都會暫停。當叢集繼續處理時,第一個資料庫工作階段需要短暫的連線時間。

  • 假設您的叢集持續處於作用中狀態,且活動量極少,且任何連線都需要快速回應。在這種情況下,您可以建立具有多個 的叢集 Aurora Serverless v2 讀取器執行個體,並將某些讀取器執行個體的容量與寫入器分離。為寫入器執行個體和一個讀取器執行個體指定容錯移轉優先順序零或一個。為其他讀取器執行個體指定大於一個的優先順序。如此一來,較高優先順序層中的讀取器執行個體可以自動暫停,即使寫入器和其中一個讀取器保持作用中。

    在這種情況下,您可以採用一些其他技術,以確保叢集在閒置期間仍縮減至低容量時,持續保持可用狀態:

    • 您可以針對寫入器和優先順序 0 或 1 讀取器使用佈建的執行個體。如此一來,兩個資料庫執行個體就永遠不會自動暫停,並且隨時可用於提供資料庫流量和執行容錯移轉。

    • 您可以設定包含 的自訂端點 Aurora Serverless v2 執行個體,但不是寫入器或提升方案 0 或 1 讀取器。如此一來,您可以將不敏感的唯讀工作階段導向至可能自動暫停的讀取器。您可以避免將讀取器端點用於此類請求,因為 Aurora 可能會將讀取器端點連線導向至永遠清醒的讀取器執行個體,或導向至其中一個自動暫停的執行個體。使用自訂端點可讓您根據對快速回應或額外擴展容量的偏好,將連線導向不同的執行個體群組。

方法 Aurora Serverless v2 自動暫停適用於資料庫叢集中的寫入器執行個體

當 Aurora 資料庫叢集只包含單一資料庫執行個體時,自動暫停和繼續資料庫執行個體的機制非常簡單。這僅取決於寫入器執行個體上的活動。對於用於開發和測試的叢集,或用於執行高可用性不重要的應用程式,您可能具有此類組態。請注意,在單一執行個體叢集中,Aurora 會透過讀取器端點將連線導向寫入器資料庫執行個體。因此,對於單一執行個體資料庫叢集,嘗試連線至讀取器端點會導致自動暫停的寫入器資料庫執行個體繼續。

下列其他因素適用於具有多個資料庫執行個體的 Aurora 叢集:

  • 在 Aurora 資料庫叢集中,寫入器資料庫執行個體通常經常存取。因此,即使一或多個讀取器資料庫執行個體自動暫停,您可能會發現寫入器資料庫執行個體仍然處於作用中狀態。

  • 讀取器資料庫執行個體上的某些活動需要提供寫入器資料庫執行個體。因此,在所有讀取器執行個體也暫停之前,寫入器資料庫執行個體都無法暫停。即使應用程式未直接存取寫入器執行個體,繼續任何讀取器執行個體也會自動繼續寫入器執行個體。

  • Aurora Serverless v2 容錯移轉提升方案中的讀取器執行個體零和一個規模,以保持其容量與寫入器執行個體同步。因此,當 Aurora Serverless v2 寫入器執行個體會繼續,所以 Aurora Serverless v2 位於提升方案零或一的讀取器執行個體。

方法 Aurora Serverless v2 自動暫停適用於多可用區域叢集

在包含寫入器和一或多個讀取器資料庫執行個體的 Aurora 資料庫叢集中,有些 Aurora Serverless v2 其他資料庫執行個體處於作用中狀態時,資料庫執行個體可能會暫停。寫入器執行個體和容錯移轉優先順序為 0 和 1 的任何讀取器執行個體一律會同時暫停和繼續所有。優先順序不是 0 或 1 的讀取器執行個體可以與其他執行個體分開暫停和繼續。

當您將此功能用於具有多個讀取器執行個體的叢集時,您可以管理成本,而不會犧牲高可用性。寫入器執行個體和另一個一或兩個讀取器執行個體可隨時保持作用中,而其他讀取器執行個體在不需要處理大量讀取流量時可能會暫停。

讀取器執行個體是否可以自動暫停取決於其容量是否可以獨立擴展,或容量是否與寫入器資料庫執行個體的容量綁定。該擴展屬性取決於讀取器資料庫執行個體的容錯移轉優先順序。當讀取器的優先順序為零或一時,讀取器的容量會追蹤寫入器資料庫執行個體的容量。因此,若要允許讀取器資料庫執行個體在最廣泛的情況下自動暫停,請將優先順序設定為高於 的值。

恢復讀取器執行個體的時間可能略長於恢復寫入器執行個體的時間。若要在執行個體可能暫停時取得最快的回應,請連線至叢集端點。

方法 Aurora Serverless v2 自動暫停適用於具有佈建執行個體的叢集

Aurora 資料庫叢集中的任何佈建資料庫執行個體都不會自動暫停。僅限 Aurora Serverless v2 資料庫執行個體搭配db.serverless執行個體類別,可以使用自動暫停功能。

當您的 Aurora 叢集包含任何佈建的資料庫執行個體時,任何 Aurora Serverless v2 寫入器執行個體不會自動暫停。這是因為寫入器執行個體在任何讀取器執行個體作用中時仍維持可用狀態的要求。的事實是 Aurora Serverless v2 writer 保持作用中狀態也表示任何 Aurora Serverless v2 容錯移轉優先順序為 0 和 1 的讀取器執行個體不會在包含任何佈建執行個體的混合叢集中自動暫停。

監控使用自動暫停的 Aurora 叢集

若要監控 Aurora,您應該已經熟悉 中的監控程序,使用 Amazon CloudWatch 監控 Amazon Aurora 指標以及 中列出的 CloudWatch 指標Aurora 的指標參考。請注意,當您監控使用自動暫停功能的 Aurora 叢集時,有一些特殊考量:

  • 可能會有一段時間 Aurora Serverless v2 執行個體不會記錄日誌資料和大多數指標,因為執行個體已暫停。和 的執行個體暫停 CloudWatch 時傳送到 的唯一指標為零百分比ACUUtilizationCPUUtilization而 則為零ServerlessDatabaseCapacity

  • 您可以檢查 Aurora Serverless v2 執行個體暫停的頻率高於或低於您的預期。若要這樣做,請檢查ServerlessDatabaseCapacity指標從非零值變更為零的頻率,以及它保持零的時間長度。如果執行個體的暫停時間不如預期,則不會節省盡可能多的成本。如果執行個體暫停和恢復的頻率高於您的預期,則您的叢集在回應連線請求時可能會有不必要的延遲。如需影響 是否和頻率的因素的相關資訊 Aurora Serverless v2 執行個體可以暫停,請參閱 的先決條件和限制 Aurora Serverless v2 自動暫停功能其中 的情況 Aurora Serverless v2 不會自動暫停、 和 故障診斷 Aurora Serverless v2 自動暫停

  • 您也可以檢查記錄 自動暫停和繼續操作的日誌檔案 Aurora Serverless v2 執行個體。如果執行個體在逾時間隔過期後未暫停,此日誌檔案也包含自動暫停未發生的原因。如需詳細資訊,請參閱監控Aurora Serverless v2暫停和繼續活動

檢查 是否 Aurora Serverless v2 執行個體已暫停

判斷 Aurora Serverless v2 執行個體處於暫停狀態,您可以觀察執行個體的ACUUtilization指標。執行個體暫停時,該指標的值為零。

雖然 Aurora Serverless v2 執行個體已暫停,其狀態值仍列為可用。暫停時也適用 Aurora Serverless v2 執行個體正在繼續。這是因為即使連線發生些微延遲,您仍然可以成功連線到這類執行個體。

與 Aurora 執行個體可用性相關的任何指標都會將執行個體暫停的期間視為執行個體可用的時間。

自動暫停和自動恢復操作的事件

Aurora 發出 的事件 Aurora Serverless v2 當自動暫停和自動恢復操作開始、完成或取消時的 執行個體。與自動暫停功能相關的事件是透過 RDS-EVENT-0370 RDS-EVENT-0374。如需這些事件的詳細資訊,請參閱 資料庫執行個體事件

自動暫停如何與績效詳情和增強型監控搭配使用

雖然 Aurora Serverless v2 執行個體已暫停,Aurora 不會透過績效詳情或增強型監控來收集該執行個體的監控資訊。執行個體恢復時,Aurora 繼續收集這類監控資訊之前,可能會有短暫的延遲。

如何 Aurora Serverless v2 自動暫停功能會與 Aurora 指標互動

雖然 Aurora Serverless v2 執行個體已暫停,不會發出大多數 CloudWatch 指標或將任何資訊寫入其資料庫日誌。執行個體暫停 CloudWatch 時傳送到 的唯一指標,對於 CPUUtilization和 為零百分比ACUUtilization,對於 為零ServerlessDatabaseCapacity

當 CloudWatch 是與執行個體或叢集可用性和運作時間相關的運算統計資料時,Aurora Serverless v2 執行個體在暫停期間被視為可用。

當您啟動 AWS CLI 或 RDSAPI動作來描述或下載暫停的日誌時 Aurora Serverless v2 執行個體會自動繼續,以提供日誌資訊。

CloudWatch 指標範例

下列 AWS CLI 範例示範如何觀察執行個體隨時間變更的容量。在此期間,執行個體會自動暫停,然後繼續。暫停時,ServerlessDatabaseCapacity指標會報告 0 的值。為了判斷執行個體是否在這段期間的任何時間點暫停,我們會檢查該期間內的最小容量是否為零。

下列 Linux 範例代表 Aurora Serverless v2 執行個體已自動暫停一段時間。我們ServerlessDatabaseCapacity每分鐘取樣一次,時間是三分鐘。ACU 最小值 0.0 會確認執行個體在每分鐘的某些時間點暫停。

$ aws cloudwatch get-metric-statistics \ --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '3 minutes ago')" --end-time "$(date -d 'now')" --period 60 \ --statistics Minimum \ --namespace "AWS/RDS" --dimensions Name=DBInstanceIdentifier,Value=my-autopause-instance \ --output text | sort -k 3 ServerlessDatabaseCapacity DATAPOINTS 0.0 2024-08-02T22:11:00+00:00 None DATAPOINTS 0.0 2024-08-02T22:12:00+00:00 None DATAPOINTS 0.0 2024-08-02T22:13:00+00:00 None

接下來,我們會嘗試連線到已暫停的 Aurora Serverless v2 執行個體。在此範例中,我們刻意使用不正確的密碼,讓連線嘗試不會成功。即使失敗,連線嘗試仍會導致 Aurora 恢復暫停的執行個體。

$ mysql -h my_cluster_endpoint.rds.amazonaws.com -u admin -pwrong-password ERROR 1045 (28000): Access denied for user 'admin'@'ip_address' (using password: YES)

下列 Linux 範例示範暫停的執行個體已繼續,保持閒置約五分鐘,然後回到暫停狀態。執行個體以 2.0 的容量繼續ACUs。然後,它會稍微向上擴展,例如執行一些內部清理。由於在五分鐘的逾時期間內,它未收到任何使用者連線嘗試,因此ACUs直接從 4.0 進入暫停狀態。

$ aws cloudwatch get-metric-statistics \ --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '8 minutes ago')" --end-time "$(date -d 'now')" --period 60 \ --statistics Minimum \ --namespace "AWS/RDS" --dimensions Name=DBInstanceIdentifier,Value=my-autopause-instance \ --output text | sort -k 3 ServerlessDatabaseCapacity DATAPOINTS 0.0 2024-08-02T22:13:00+00:00 None DATAPOINTS 2.0 2024-08-02T22:14:00+00:00 None DATAPOINTS 3.0 2024-08-02T22:15:00+00:00 None DATAPOINTS 3.0 2024-08-02T22:16:00+00:00 None DATAPOINTS 4.0 2024-08-02T22:17:00+00:00 None DATAPOINTS 4.0 2024-08-02T22:18:00+00:00 None DATAPOINTS 4.0 2024-08-02T22:19:00+00:00 None DATAPOINTS 0.0 2024-08-02T22:20:00+00:00 None

如果報告旨在顯示執行個體擴展處理工作負載的速度,我們可能會Maximum為 統計資訊指定 ,而不是 Minimum。對於容量規劃和成本估算,我們可能會指定更長的期間並使用 Average統計資料。如此一來,我們可以判斷在高活動量、低活動量和暫停狀態期間的一般容量值。若要在暫停和恢復的確切時間內檢查行為,我們可能會指定一秒的期間,並檢查較短的時間間隔。輸出中的時間戳記值,例如 2024-08-02T22:13:00+00:00,示範為 --start-time--end-time選項指定精確參數的格式。

故障診斷 Aurora Serverless v2 自動暫停

如果您發現 Aurora Serverless v2 執行個體未如預期般經常暫停,請檢查下列可能原因:

  • 確認您執行的 Aurora 版本支援最低容量為零 ACUs。如需不同 Aurora 版本的容量範圍,請參閱 Aurora Serverless v2 容量

  • 確認叢集的最小容量值設定為零 ACUs。

  • 確認有問題的執行個體實際使用 Aurora Serverless v2 執行個體類別 db.serverless,不是其中一個佈建的執行個體類別。

  • 確認叢集未使用來自 的任何不相容功能或設定的先決條件和限制 Aurora Serverless v2 自動暫停功能

  • 檢查日誌檔案,顯示何時 Aurora Serverless v2 執行個體已暫停、繼續,或 Aurora 因為某些原因而無法暫停或繼續執行個體。如需詳細資訊,請參閱監控Aurora Serverless v2暫停和繼續活動

  • 檢查是否有任何用戶端或應用程式長時間保持連線開啟。相反地,請檢查使用RDS資料API或 Lambda 函數的任何應用程式是否經常傳送請求,讓執行個體永遠不會閒置到足以暫停的時間。您可以檢查 ConnectionAttempts和 等 CloudWatch 指標DatabaseConnections。如需詳細資訊,請參閱Amazon Aurora 的執行個體層級指標

  • 如果讀取器執行個體很少暫停,請檢查其容錯移轉優先順序。如果讀取器用於讀取擴展,而不是在容錯移轉時作為待命,請將它設定為 2-15 範圍內的優先順序。

  • 如果寫入器執行個體很少暫停,請檢查讀取器執行個體的使用情形。寫入器只能在整個叢集處於閒置狀態時暫停。這是因為連線到任何讀取器執行個體會導致寫入器繼續。

  • 如果您的應用程式在 連線請求期間收到逾時 Aurora Serverless v2 執行個體正在繼續,請考慮延長應用程式程式碼或基礎資料庫架構所使用的逾時間隔。較長的連線逾時可降低連線失敗的可能性,同時 Aurora Serverless v2 執行個體正在繼續。不過,較長的逾時也會讓您的應用程式較慢,以偵測叢集中的可用性問題。

    相反地,請考慮延長自動暫停間隔,讓應用程式不會經常遇到暫停的執行個體。

    如果自動暫停行為與應用程式的叢集回應之間沒有邏輯平衡,則該叢集可能不適合使用自動暫停功能。

  • 如果您預估您的 Aurora Serverless v2 執行個體將會暫停,請注意,有一些因素會導致精確預測變得不切實際。

    • 執行個體可能會定期繼續執行維護、次要版本升級或套用參數群組的變更。

    • 對於多可用區域叢集,在某些情況下,繼續一個執行個體也會使其他執行個體繼續。繼續任何讀取器一律會導致寫入器繼續。繼續寫入器一律會導致容錯移轉優先順序為 0 和 1 的任何讀取器繼續。

    我們建議您使用逼真的工作負載,測量幾天內的實際暫停時間。然後,使用這些測量來設定您可以預期執行個體暫停的時間比例的基準。

  • 您可能會發現內部操作,例如我的SQL清除、我的SQL事件排程器、PostgreSQL 自動清理或透過pg_cron延伸模組排程的 PostgreSQL 任務未執行或未完成。執行個體不會自動繼續執行不涉及使用者與資料庫連線的此類操作。如果自動暫停逾時過期時正在進行此類內部操作,則我的SQL清除和 PostgreSQL 自動清空等維護任務會取消。如果 Aurora 啟動暫停操作時正在進行,則來自 MySQL event scheduler 或 PostgreSQL pg_cron延伸模組的排程任務也會取消。

    如果您需要確保執行個體定期清醒以執行排定的操作,您可以在任務開始時間之前啟動連線以繼續執行個體。您也可以增加自動暫停逾時間隔,以便自動清空等操作可以在使用者活動完成後執行更長的時間。您也可以使用 Lambda 函數等機制,以在必要時自動繼續執行個體的方式,依排程執行資料庫操作。

的應用程式設計考量事項 Aurora Serverless v2 自動暫停功能

當 Aurora Serverless v2 資料庫執行個體會在自動暫停後繼續,從相對較小的容量開始,並從該處擴展。即使資料庫執行個體在自動暫停之前有較高的容量,此起始容量也適用。

將此功能與應用程式搭配使用,這些應用程式在建立連線時可容忍大約 15 秒的間隔。這會說明 的典型案例 Aurora Serverless v2 執行個體會因一或少量傳入連線而繼續。如果執行個體暫停超過 24 小時,則繼續的時間可能會更長。

如果您的應用程式已在使用 Aurora Serverless v1 及其自動暫停功能,您可能已經為連線嘗試設定了此類逾時間隔。如果您已經在使用 Aurora Serverless v2 搭配 Aurora 停止/啟動叢集功能,自動暫停的恢復時間 Aurora Serverless v2 執行個體通常比啟動已停止叢集的時間短得多。

在應用程式中編碼連線邏輯時,如果第一次嘗試傳回具有暫時性原因的錯誤,請重試連線。(如果錯誤是由於身分驗證失敗,請在重試之前更正憑證。) 恢復後立即發生的錯誤可能是逾時,或與資料庫限制相關的一些錯誤。重試可以在較罕見的情況下處理問題,其中 Aurora Serverless v2 由於同時連線請求數量過多,執行個體會繼續。在這種情況下,某些連線可能需要比平常更長的處理時間,或者可能超過第一次嘗試時同時連線的限制。

在應用程式開發和偵錯期間,請勿將用戶端工作階段或程式設計工具與資料庫的連線保持開啟。如果有任何使用者起始的連線開啟,無論連線是否執行任何SQL陳述式或交易,Aurora 都不會暫停執行個體。當一個 Aurora Serverless v2 Aurora 叢集中的執行個體無法暫停,叢集中的其他執行個體也可能無法暫停。如需詳細資訊,請參閱其中 的情況 Aurora Serverless v2 不會自動暫停

Aurora 在 發出事件時 Aurora Serverless v2 資料庫執行個體會開始繼續,完成繼續,如果執行個體因為某些原因而無法繼續。如需這些事件的詳細資訊,請參閱 資料庫執行個體事件