Aurora Serverless v1 的運作方式 - Amazon Aurora

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

Aurora Serverless v1 的運作方式

接下來,您可了解 Aurora Serverless v1 的運作方式。

Aurora Serverless v1 架構

下圖顯示 Aurora Serverless v1 架構的概觀。

Aurora Serverless v1 架構

您將指定 Aurora Capacity Units (ACU),而不用佈建和管理資料庫伺服器。每個 ACU 是大約 2 GB 的記憶體、對應的 CPU 和聯網的組合。資料庫儲存會以 10 GiB 至 128 tebibytes (TiB) 的範圍自動擴展,與標準的 Aurora 資料庫叢集儲存相同。

您可指定 ACU 的最小值與最大值。最小 Aurora 容量單位是資料庫叢集可縮減到的最低 ACU。最大 Aurora 容量單位是資料庫叢集可擴展到的最高 ACU。Aurora Serverless v1 會根據您的設定自動建立 CPU 使用率、連線數及可用記憶體閾值的規模調整規則。

Aurora Serverless v1 管理 AWS 區域 中的資源暖集區,以最小化擴展時間。當 Aurora Serverless v1 將資源新增至 Aurora 資料庫叢集時,它會使用路由器機群,將作用中用戶端連線切換至新資源。在任何特定時間點,您只需為您的 Aurora 資料庫叢集中正在使用的 ACU 付費。

Aurora Serverless v1 的自動調整規模

分配給 Aurora Serverless v1 資料庫叢集的容量,將根據用戶端應用程式產生的負載無縫擴展或縮減。在這裡,負載是 CPU 使用率和連線的數量。當容量受到上述任何一種限制時,Aurora Serverless v1 擴充。Aurora Serverless v1 也會在偵測到這樣做可以得到解決的效能問題時進行擴充。

您可以檢視 Aurora Serverless v1 中 AWS Management Console 叢集的規模調整事件。在自動調整規模期間,Aurora Serverless v1 會重設 EngineUptime 指標。重設指標值的值並不意味著無縫規模調整有問題,也不意味著 Aurora Serverless v1 中斷了連線。這只是新容量的正常運作時間的起點。進一步了解指標,請參閱在 Amazon Aurora 叢集中監控指標

當您的 Aurora Serverless v1 資料庫叢集沒有作用中的連線時,它可以縮小至零容量 (0 ACU)。如需進一步了解,請參閱Aurora Serverless v1 的暫停和繼續

當它需要執行規模調整操作時,Aurora Serverless v1 首先嘗試識別規模調整點,一個沒有查詢正在處理的時刻。Aurora Serverless v1 可能無法找到規模調整點,原因如下:

  • 長時間執行的查詢

  • 進行中的交易

  • 暫存資料表或資料表鎖定

若要增加 Aurora Serverless v1 資料庫叢集尋找規模調整點時的成功率,建議您避免長時間執行的查詢和長時間執行的交易。如要深入了解封鎖規模調整操作及如何避免這些操作,請參閱使用 Aurora Serverless v1 的最佳實務

Aurora Serverless v1 預設會嘗試尋找擴展點 5 分鐘 (300 秒)。您可以在建立或修改叢集時,指定其他逾時期間。逾時期間可介於 60 秒到 10 分鐘 (600 秒) 之間。如果 Aurora Serverless v1 在指定的期間內找不到擴展點,則自動擴展逾時。

預設情況下,如果自動調整規模在超時之前找不到規模調整點,Aurora Serverless v1 會將叢集保持在目前的容量。您可以在透過選取 Force the capacity change (強制變更容量) 選項建立或修改 Aurora Serverless v1 資料庫叢集時,變更此預設行為。如需詳細資訊,請參閱 容量變更時的逾時動作

容量變更時的逾時動作

如果自動擴展在找不到擴展點的情況下逾時,預設情況下 Aurora 會保留目前的容量。您可選取 Force the capacity change (強制變更容量) 選項,選擇讓 Aurora 強制變更。當您建立叢集時,此選項在 Create database (建立資料庫) 頁面的 Autoscaling timeout and action (自動擴展逾時與動作) 區段可供使用。

依預設,不選取 Force the capacity change (強制變更容量) 選項。不勾選此選項,若擴展操作逾時而沒有找到擴展點,可以讓 Aurora Serverless v1 資料庫叢集的容量保持不變。

選取此選項會導致 Aurora Serverless v1 資料庫叢集強制執行容量變更,即使沒有規模調整點也一樣。選取此選項之前,請注意此選項的結果:

  • 任何處理中的交易都會中斷,並會出現下列錯誤訊息。

    Aurora MySQL 版本 2 — ERROR 1105 (HY000):由於無縫擴展,最後一筆交易已終止。請再試一次。

    一旦您的 Aurora Serverless v1 資料庫叢集可供使用,您就可以重新提交交易。

  • 暫存資料表和鎖定的連線會被中斷。

    我們建議僅於應用程式可從中斷的連線或未完成的交易復原時,才選取 Force the capacity change (強制變更容量) 選項。

當您建立 Aurora Serverless v1 資料庫叢集時在 AWS Management Console中所做的選擇,將會存放在 ScalingConfigurationInfo 物件的 SecondsBeforeTimeoutTimeoutAction 屬性中。TimeoutAction 屬性的值設定為建立叢集時的下列值之一:

  • RollbackCapacityChange – 當您選取 Roll back the capacity change (回復容量變更) 選項時,會設定此值。這是預設行為。

  • ForceApplyCapacityChange – 當您選取 Force the capacity change (強制變更容量) 選項時,會設定此值。

您可以通過使用describe-db-clustersAWS CLI命令獲取現有Aurora Serverless v1數據庫集群上此屬性的值,如下所示。

對於LinuxmacOS、或Unix:

aws rds describe-db-clusters --region region \ --db-cluster-identifier your-cluster-name \ --query '*[].{ScalingConfigurationInfo:ScalingConfigurationInfo}'

在Windows中:

aws rds describe-db-clusters --region region ^ --db-cluster-identifier your-cluster-name ^ --query "*[].{ScalingConfigurationInfo:ScalingConfigurationInfo}"

例如,下面顯示了美國西部 (加利佛尼亞北部) 區域中名為 west-coast-sles 的 Aurora Serverless v1 資料庫叢集的查詢和回應。

$ aws rds describe-db-clusters --region us-west-1 --db-cluster-identifier west-coast-sles --query '*[].{ScalingConfigurationInfo:ScalingConfigurationInfo}' [ { "ScalingConfigurationInfo": { "MinCapacity": 1, "MaxCapacity": 64, "AutoPause": false, "SecondsBeforeTimeout": 300, "SecondsUntilAutoPause": 300, "TimeoutAction": "RollbackCapacityChange" } } ]

正如回應所示,此 Aurora Serverless v1 資料庫叢集會使用預設設定。

如需更多詳細資訊,請參閱 建立 Aurora Serverless v1 資料庫叢集。建立 Aurora Serverless v1 後,您可以隨時修改逾時動作和其他容量設定。若要瞭解如何操作,請參閱修改 Aurora Serverless v1 資料庫叢集

Aurora Serverless v1 的暫停和繼續

在經過一段時間沒有活動後,您可以選擇暫停您的 Aurora Serverless v1 資料庫叢集。您可指定資料庫叢集暫停之前的無活動時間。當您選取此選項時,預設的無活動時間為 5 分鐘,但您可以變更此值。這是選用的設定。

資料庫叢集暫停時不會產生任何運算或記憶體活動,您僅會因為使用儲存空間而付費。如果在 Aurora Serverless v1 資料庫叢集暫停時請求資料庫連線,資料庫叢集會自動繼續並處理連線請求。

當資料庫叢集恢復活動時,它具有與 Aurora 暫停叢集時相同的容量。ACU 的數目取決於在暫停叢集之前 Aurora 擴增或縮減叢集的程度。

注意

若資料庫叢集已暫停超過七日,該資料庫叢集可能會以快照的方式進行備份。在此情況下,當有連線請求時,Aurora 即會從快照還原資料庫叢集。

決定 Aurora Serverless v1 的資料庫連線數量上限

以下範例適用於與 MySQL 5.7 相容的 Aurora Serverless v1 資料庫叢集。您可以使用 MySQL 用戶端或查詢編輯器 (如果您已設定其存取權)。如需詳細資訊,請參閱在查詢編輯器中執行查詢

找出資料庫連線數上限
  1. 使用 AWS CLI 尋找 Aurora Serverless v1 資料庫叢集的容量範圍。

    aws rds describe-db-clusters \ --db-cluster-identifier my-serverless-57-cluster \ --query 'DBClusters[*].ScalingConfigurationInfo|[0]'

    結果顯示其容量範圍為 1–4 個 ACU。

    { "MinCapacity": 1, "AutoPause": true, "MaxCapacity": 4, "TimeoutAction": "RollbackCapacityChange", "SecondsUntilAutoPause": 3600 }
  2. 執行以下 SQL 查詢以尋找連線數量上限。

    select @@max_connections;

    顯示的結果是叢集的最小容量,即 1 個 ACU。

    @@max_connections 90
  3. 將叢集擴展到 8–32 個 ACU。

    如需擴展的詳細資訊,請參閱修改 Aurora Serverless v1 資料庫叢集

  4. 確認容量範圍。

    { "MinCapacity": 8, "AutoPause": true, "MaxCapacity": 32, "TimeoutAction": "RollbackCapacityChange", "SecondsUntilAutoPause": 3600 }
  5. 尋找連線數目上限。

    select @@max_connections;

    顯示的結果是叢集的最小容量,即 8 個 ACU。

    @@max_connections 1000
  6. 將叢集擴展至可能的上限,256–256 個 ACU。

  7. 確認容量範圍。

    { "MinCapacity": 256, "AutoPause": true, "MaxCapacity": 256, "TimeoutAction": "RollbackCapacityChange", "SecondsUntilAutoPause": 3600 }
  8. 尋找連線數目上限。

    select @@max_connections;

    顯示的結果是 256 個 ACU。

    @@max_connections 6000
    注意

    max_connections 值不會隨著 ACU 的數量線性擴縮。

  9. 將叢集縮小回 1–4 個 ACU。

    { "MinCapacity": 1, "AutoPause": true, "MaxCapacity": 4, "TimeoutAction": "RollbackCapacityChange", "SecondsUntilAutoPause": 3600 }

    這一次,max_connections 值為 4 個 ACU。

    @@max_connections 270
  10. 將叢集縮小為 2 個 ACU。

    @@max_connections 180

    如果您已將叢集設定為在閒置一定的時間後暫停,則叢集會縮小到 0 個 ACU。但是,max_connections 不會降至低於 1 個 ACU 的值。

    @@max_connections 90

Aurora Serverless v1 的參數群組

建立 Aurora Serverless v1 資料庫叢集時,您可以選擇特定的 Aurora 資料庫引擎和相關的資料庫叢集參數群組。不同於已佈建 Aurora 資料庫叢集,Aurora Serverless v1 資料庫叢集具有單一讀取/寫入資料庫執行個體,該執行個體僅設定為資料庫叢集參數群組 — 它沒有單獨的資料庫參數群組。在自動調整規模期間,Aurora Serverless v1 必須能夠變更叢集的參數,才能最適合增加或減少的容量。因此,使用 Aurora Serverless v1 資料庫叢集,您會對特定資料庫引擎類型的參數所做的一些變更可能不適用。

例如,Aurora PostgreSQL–型 Aurora Serverless v1 資料庫叢集無法使用 apg_plan_mgmt.capture_plan_baselines 和可能在已佈建 Aurora PostgreSQL 資料庫叢集上使用以進行查詢計劃管理的其他參數。

您可以使用 describe-engine-default-cluster-parameters CLI 命令並查詢. AWS 區域 下列為您可用於 --db-parameter-group-family 選項的值。

Aurora MySQL 第 2 版

aurora-mysql5.7

Aurora PostgreSQL 11 版

aurora-postgresql11

Aurora PostgreSQL 第 13 版

aurora-postgresql13

我們建議您使用 AWS 存取金鑰 ID 和 AWS 私密存取金鑰設定 AWS CLI,並在使用 AWS CLI 命令前設定 AWS 區域。將區域提供給 CLI 組態可讓您在執行命令時無法輸入 --region 參數。如要進一步了解如何設定 AWS CLI,請參閱《AWS Command Line Interface 使用者指南》中的組態基本概念

下列範例會從 Aurora MySQL 2 的預設資料庫叢集群組取得參數清單。

對於LinuxmacOS、或Unix:

aws rds describe-engine-default-cluster-parameters \ --db-parameter-group-family aurora-mysql5.7 --query \ 'EngineDefaults.Parameters[*].{ParameterName:ParameterName,SupportedEngineModes:SupportedEngineModes} | [?contains(SupportedEngineModes, `serverless`) == `true`] | [*].{param:ParameterName}' \ --output text

在Windows中:

aws rds describe-engine-default-cluster-parameters ^ --db-parameter-group-family aurora-mysql5.7 --query ^ "EngineDefaults.Parameters[*].{ParameterName:ParameterName,SupportedEngineModes:SupportedEngineModes} | [?contains(SupportedEngineModes, 'serverless') == `true`] | [*].{param:ParameterName}" ^ --output text

為 Aurora Serverless v1 修改參數值

正如 Amazon Aurora 的參數組 RDS 所述,無論其類型為何 (DB 叢集參數群組、DB 參數群組),都無法直接變更預設參數群組中的值。相反地,您可以根據預設的資料庫叢集參數群組為 Aurora 資料庫引擎建立自訂參數群組,並依該參數群組所需變更設定。例如,您可能想要變更Aurora Serverless v1資料庫叢集的某些設定,以記錄查詢或將資料庫引擎特定的日誌上傳到 Amazon CloudWatch。

建立自訂資料庫叢集參數群組
  1. 登入 AWS Management Console,並在 https://console.aws.amazon.com/rds/ 開啟 Amazon RDS 主控台。

  2. 選擇 Parameter groups (參數群組)

  3. 選擇 Create parameter group (建立參數群組) 以開啟「參數群組詳細資訊」窗格。

  4. 為您要用於 Aurora Serverless v1 資料庫叢集的資料庫引擎,選擇適當的預設資料庫叢集群組。請務必選擇下列選項:

    1. 對於 Parameter group family (參數群組系列),請為選擇的資料庫引擎選擇適當的系列。請確保您選擇名稱中的字首為 aurora-

    2. Type (類型) 中,選擇 DB Cluster Parameter Group (資料庫叢集參數群組)

    3. Group name (群組名稱) Description (描述) 中,為您或可能需要使用 Aurora Serverless v1 資料庫叢集及其參數的其他人輸入有意義的名稱。

    4. 選擇建立

您的自訂資料庫叢集參數群組會新增至您的 AWS 區域 中可用的參數群組清單。當您建立新的 Aurora Serverless v1 資料庫叢集時,您可使用自訂的資料庫叢集參數群組。您也可以修改現有的 Aurora Serverless v1 資料庫叢集,以使用自訂的資料庫叢集參數群組。Aurora Serverless v1 資料庫叢集開始使用您的自訂資料庫叢集參數群組後,您可以使用 AWS Management Console 或 AWS CLI 變更動態參數的值。

您也可以使用主控台來檢視自訂資料庫叢集參數群組中的值與預設資料庫叢集參數群組的 side-by-side 比較,如下列螢幕擷取畫面所示。

發佈至 Aurora MySQL 和 Aurora 資料庫叢集 Postgre Aurora Serverless v1 SQL CloudWatch 記錄檔

當您變更作用中資料庫叢集上的參數值時,Aurora Serverless v1 會啟動無縫規模調整,以套用參數變更。若您的 Aurora Serverless v1 資料庫叢集處於暫停狀態,它會恢復並開始規模調整,以便可以進行變更。參數群組的規模調整操作變更會永遠強制變更容量,因此請注意,如果在規模調整期間找不到規模調整點,修改參數可能會導致連線中斷。

為 Aurora Serverless v1 記錄日誌。

依預設,會啟用的Aurora Serverless v1錯誤日誌並自動上傳到 Amazon CloudWatch。您也可以讓資料Aurora Serverless v1庫叢集將 Aurora 資料庫引擎特定的記錄檔上傳至。 CloudWatch為此,請在您的自訂資料庫叢集參數群組中啟用組態參數。然後,您的Aurora Serverless v1資料庫叢集將所有可用的日誌上傳到 Amazon CloudWatch。此時,您可以用 CloudWatch 來分析記錄資料、建立警示和檢視指標。

對於 Aurora MySQL,下表顯示您可以啟用的記錄檔。啟用後,它們會自動從您的Aurora Serverless v1資料庫叢集上傳到 Amazon CloudWatch。

Aurora MySQL 日誌 描述

general_log

建立一般日誌。設定為 1 可開啟。預設為關閉 (0)。

log_queries_not_using_indexes

將任何查詢記錄到不使用索引的慢查詢日誌。預設為關閉 (0)。設定為 1 可開啟此日誌。

long_query_time

防止快速執行的查詢在慢查詢日誌中記錄。可以設定為介於 0 到 3,1536,000 之間的浮點數。預設值為 0 (非作用中)。

server_audit_events

日誌中要擷取的事件清單。支援的值為 CONNECTQUERYQUERY_DCLQUERY_DDLQUERY_DMLTABLE

server_audit_logging

設定為 1 以開啟伺服器稽核日誌記錄。如果開啟此選項,您可以透過在server_audit_events參數中列出稽核事件 CloudWatch 來指定要傳送的稽核事件。

slow_query_log

建立慢查詢日誌。設定為 1 以開啟慢查詢日誌。預設為關閉 (0)。

如需詳細資訊,請參閱搭配 Amazon Aurora 我的SQL資料庫叢集使用進階稽核

對於 Aurora PostgreSQL,下表顯示您可以啟用的記錄檔。啟用後,系統會自動將資Aurora Serverless v1料庫叢集與常規錯誤日誌一 CloudWatch 起上傳到 Amazon。

Aurora PostgreSQL 日誌 描述

log_connections

依預設為啟用,且無法變更。它會記錄所有新用戶端連線的詳細資訊。

log_disconnections

依預設為啟用,且無法變更。記錄所有用戶端的連線中斷。

log_hostname

默認情況下關閉,無法更改。不會記錄主機名稱。

log_lock_waits

預設值為 0 (關閉)。設定為 1 可等待日誌鎖定。

log_min_duration_statement

記錄陳述式之前執行的最短持續時間 (以毫秒為單位)。

log_min_messages

設定所記錄的訊息層級。支援的值為 debug5debug4debug3debug2debug1infonoticewarningerrorlogfatalpanic

若要將效能資料記錄到 postgres 日誌中,則將值設定為 debug1

log_temp_files

記錄超過指定 KB 的暫存檔案的使用。

log_statement

控制已記錄的特定 SQL 陳述式。支援的值為 noneddlmodall。預設值為 none

為Aurora Serverless v1資料庫叢集開啟 Aurora MySQL 或 Aurora PostgreSQL 的記錄檔之後,您可以在中檢視記錄檔。 CloudWatch

使用 Amazon 查看Aurora Serverless v1日誌 CloudWatch

Aurora Serverless v1自動將自訂資料庫叢集參數群組中啟用的 CloudWatch 所有日誌上傳 (「發佈」) 到 Amazon。您不需要選擇或指定日誌類型。只要您啟用日誌組態參數,就會立即開始上傳日誌。如果您稍後停用日誌參數,則會停止後續上傳。不過,所有已發佈的記錄都會保 CloudWatch 留在您刪除之前。

如需 CloudWatch 與 Aurora MySQL 記錄搭配使用的詳細資訊,請參閱在 Amazon 中監控日誌事件 CloudWatch

如需 CloudWatch 和 Aurora 的詳細 PostgreSQL 請參閱。將 Aurora 郵政SQL日誌發佈到 Amazon CloudWatch 日誌

檢視 Aurora Serverless v1 資料庫叢集的日誌
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 選擇您的 AWS 區域。

  3. 選擇 Log groups (日誌群組)。

  4. 從清單中選擇 Aurora Serverless v1 資料庫叢集日誌。若是錯誤日誌,命名模式如下。

    /aws/rds/cluster/cluster-name/error

例如,於下列的螢幕擷取畫面中,您可以找到為名為 western-sles 的 Aurora PostgreSQL Aurora Serverless v1 資料庫叢集發佈的日誌清單。您還可以找到幾個 Aurora MySQL Aurora Serverless v1 資料庫叢集 west-coast-sles 的清單。選擇感興趣的日誌,開始探索其內容。

發佈至 Aurora MySQL 和 Aurora 資料庫叢集 Postgre Aurora Serverless v1 SQL CloudWatch 記錄檔

Aurora Serverless v1 和維護

系統會自動為您執行 Aurora Serverless v1 資料庫叢集的維護,例如套用最新功能、修正程式和安全性更新。Aurora Serverless v1 有維護時段,您可以在 Aurora Serverless v1 資料庫叢集的維護與備份 AWS Management Console 中查看此資訊。您可以找到可能執行維護的日期和時間,以及Aurora Serverless v1資料庫叢集是否有任何維護擱置中,如下圖所示。

範例 Aurora Serverless v1 資料庫叢集的維護時段無待處理的維護

您可以在建立 Aurora Serverless v1 資料庫叢集時設定維護時段,也可以稍後再修改維護時段。如需詳細資訊,請參閱調整偏好的資料庫叢集維護時段

維護時段是用於排程的主要版本升級。擴展期間會立即套用次要版本升級和修補程式。縮放會根據您對下列項目的設定進行TimeoutAction

  • ForceApplyCapacityChange— 會立即套用變更。

  • RollbackCapacityChange— Aurora 會在第一次嘗試修補程式後 3 天後強制更新叢集。

就像在沒有適當擴展點的情況下強制執行的任何變更一樣,這可能會中斷您的工作負載。

Aurora Serverless v1 會盡可能地以非中斷式的方式執行維護。需要維護時,Aurora Serverless v1 資料庫叢集會規模調整其容量以處理必要的操作。在縮放之前,Aurora Serverless v1 會尋找縮放點。如有必要,它最多可以使用三天。

在找不到規模調整點的每一天結束時,Aurora Serverless v1 就會建立叢集事件。此事件會通知您待處理的維護,以及需要擴展以執行維護的需求。該通知包括 Aurora Serverless v1 可強制資料庫叢集規模調整的日期。

如需詳細資訊,請參閱容量變更時的逾時動作

Aurora Serverless v1 和容錯移轉

若 Aurora Serverless v1 資料庫叢集的資料庫執行個體變得無法使用或可用區域 (AZ) 失敗,Aurora 會在不同的 AZ 中重新建立資料庫執行個體。但是,Aurora Serverless v1 叢集不是多可用區域叢集。這是因為它是由單一可用區域中的單一資料庫執行個體所組成。因此,這項容錯移轉機制需要的時間比佈建或 Aurora Serverless v2 執行個體的 Aurora 叢集更長。Aurora Serverless v1 容錯移轉的時間未定,因為這取決於特定 AWS 區域 內其他可用區域的需求和容量可用性。

因為 Aurora 會區分運算容量和儲存體,叢集的儲存體磁碟區會分布在多個可用區域內。即使中斷影響資料庫執行個體或相關聯的可用區域,您的資料也能維持在可用狀態。

Aurora Serverless v1 和快照

Aurora Serverless v1 叢集的叢集磁碟區一律會加密。您可以選擇加密金鑰,但無法停用加密。如要複製或共用 Aurora Serverless v1 叢集的快照,您可以使用自己的 AWS KMS key 加密該快照。如需詳細資訊,請參閱資料庫叢集快照複製。若要進一步了解加密和 Amazon Aurora,請參閱 加密 Amazon Aurora 資料庫叢集