Amazon Aurora 連線管理 - Amazon Aurora

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

Amazon Aurora 連線管理

Amazon Aurora 一般牽涉到一個資料庫執行個體的叢集,而非單一執行個體。每個連線會由特定資料庫執行個體處理。連線到 Aurora 叢集時,您指定的主機名稱和連線埠會指向稱為端點的中繼處理常式。Aurora 會使用端點機制來抽象處理這些連線。因此,當某些資料庫執行個體無法使用時,您不必對所有主機名稱進行硬式編碼或編寫自己的邏輯來平衡和重新路由連線。

針對某些 Aurora 任務,不同的執行個體或執行個體群組會執行不同的角色。例如,主要執行個體會處理所有資料定義語言 (DDL) 和資料操作語言 (DML) 陳述式。最多會有 15 個 Aurora 複本可處理唯讀查詢流量。

使用端點,您可以將每個連線根據您的使用案例對應至適當的執行個體或執行個體群組。例如,若要執行 DDL 陳述式,您可以連線至屬於主要執行個體的執行個體。若要執行查詢,您可以連線至讀取器端點,Aurora 會自動在所有 Aurora 複本之間執行連線平衡。針對具有不同容量或組態之資料庫執行個體的叢集,您可以連線至與不同資料庫執行個體子集相關聯的自訂端點。針對診斷或調校,您可以連線至特定執行個體端點來檢查關於特定資料庫執行個體的詳細資訊。

Aurora 端點的類型

端點代表包含主機地址和連線埠的 Aurora 特定 URL。下列類型的端點可從 Aurora 資料庫叢集取得。

叢集端點

Aurora 資料庫叢集的「叢集端點」(或「寫入者端點」) 會連線至該資料庫叢集目前的主要資料庫執行個體。此端點為可執行寫入操作 (如 DDL 陳述式) 的端點。因此,當您先設定叢集時或當叢集僅包含單一資料庫執行個體時,該叢集端點為您要連線的端點。

每個 Aurora 資料庫叢集具有一個叢集端點和一個主要資料庫執行個體。

您會對資料庫叢集上的所有寫入操作,包括插入、更新、刪除和 DDL 變更使用該叢集端點。您也可以對讀取操作 (例如查詢) 使用叢集端點。

叢集端點可為資料庫叢集的讀寫連線提供容錯移轉支援。如果資料庫叢集目前的主要資料庫執行個體失敗,Aurora 會自動容錯移轉至新的主要資料庫執行個體。容錯移轉期間,資料庫叢集會繼續從新的主要資料庫執行個體對叢集端點提供連線請求,將對服務的中斷降到最低。

下列範例說明 Aurora MySQL 資料庫叢集的叢集端點。

mydbcluster.cluster-c7tj4example.us-east-1.rds.amazonaws.com:3306
讀取器端點

Aurora 資料庫叢集的讀取器端點可為資料庫叢集的唯讀連線提供連線平衡支援。對讀取操作 (例如查詢) 使用讀取器端點。藉由在唯讀 Aurora 複本上處理這些陳述式,此端點可降低主要執行個體上的額外負荷。它還有助於叢集擴展能力來處理同時的 SELECT 查詢,數量與叢集中的 Aurora 複本成比例。每個 Aurora 資料庫叢集有一個讀取器端點。

如果叢集包含一或多個 Aurora 複本,讀取器端點會平衡 Aurora 複本之間的每個連線要求。在這種情況下,您在該工作階段中只能執行唯讀陳述式,例如 SELECT。如果叢集只包含主要執行個體而沒有 Aurora 複本,則讀取者端點會連線到主要執行個體。在這種情況下,您可以透過端點執行寫入操作。

下列範例說明 Aurora MySQL 資料庫叢集的讀取器端點。

mydbcluster.cluster-ro-c7tj4example.us-east-1.rds.amazonaws.com:3306
自訂端點

Aurora 叢集的自訂端點代表您選擇的一組資料庫執行個體。當您連線到端點時,Aurora 會執行連線平衡,並選擇群組中的其中一個執行個體來處理連線。您可以定義此端點要參考的執行個體,並且決定端點的運作目的。

Aurora 資料庫叢集沒有自訂端點,除非您加以建立。您可以為每個佈建的 Aurora 叢集或 Aurora Serverless v2 叢集建立最多五個自訂端點。您無法對 Aurora Serverless v1 叢集使用自訂端點。

自訂端點會根據資料庫執行個體唯讀或讀取/寫入功能以外的準則,提供平衡的資料庫連線。例如,您可以定義自訂端點來連線至使用特定 AWS 執行個體類別或特定資料庫參數群組的執行個體。之後您可以將此自訂端點告知特定使用者群組。例如,您可以將內部使用者導向低容量的執行個體,用於報告產生或臨機操作 (一次性) 查詢,並將生產流量導向高容量執行個體。

由於連線可能進入與自訂端點相關聯的任何資料庫執行個體,建議您確定該群組內的所有資料庫執行個體具有類似的特質。這麼做可確保效能、記憶體容量等等對連線至該端點的每個人來說都是一致的。

此功能預期供具有專精類型工作負載的進階使用者使用,在其工作負載中,讓叢集中的所有 Aurora 複本保持相同並不切實際。利用自訂端點,您可以預測用於每個連線的資料庫執行個體的容量。使用自訂端點時,您一般不會對該叢集使用讀取器端點。

下列範例說明 Aurora MySQL 資料庫叢集中資料庫執行個體的自訂端點。

myendpoint.cluster-custom-c7tj4example.us-east-1.rds.amazonaws.com:3306
執行個體端點

「執行個體端點」會連線至 Aurora 叢集內的特定資料庫執行個體。資料庫叢集中的每個資料庫執行個體都有自己唯一的執行個體端點。因此,資料庫叢集目前的主要資料庫執行個體會有一個執行個體端點,而資料庫叢集中的每個 Aurora 複本也都會有一個執行個體端點。

執行個體端點對資料庫叢集的連線提供直接控制,使用叢集端點或讀取器端點的案例可能不適用。例如,您的用戶端應用程式可能需要根據工作負載類型進行更精細的連線平衡。在此情況下,您可以設定多個用戶端來連線至資料庫叢集中的不同 Aurora 複本,以分配讀取工作負載。如需在 Aurora PostgreSQL 容錯移轉之後使用執行個體端點來改善連線速度的範例,請參閱 Amazon Aurora PostgreSQL 的快速容錯移轉。如需在 Aurora MySQL 容錯移轉之後使用執行個體端點來改善連線速度的範例,請參閱 MariaDB Connector/J 容錯移轉支援 - 案例 Amazon Aurora

下列範例說明 Aurora MySQL 資料庫叢集中資料庫執行個體的執行個體端點。

mydbinstance.c7tj4example.us-east-1.rds.amazonaws.com:3306

檢視 Aurora 叢集的端點

在中 AWS Management Console,您會在每個叢集的詳細資料頁面中看到叢集端點、讀取器端點和任何自訂端點。您可以在每個執行個體的詳細資訊頁面中查看執行個體端點。連線時,您必須將相關聯的連線埠號碼 (後面接著冒號),附加到此詳細資訊頁面上顯示的端點名稱。

使用 AWS CLI,您可以在describe-db-clusters命令的輸出中看到寫入器、讀取器和任何自訂端點。例如,下列命令會顯示目前 AWS 區域中所有叢集的端點屬性。

aws rds describe-db-clusters --query '*[].{Endpoint:Endpoint,ReaderEndpoint:ReaderEndpoint,CustomEndpoints:CustomEndpoints}'

使用 Amazon RDS API,您可以透過呼叫描述 B ClusterEndpoints 函數擷取端點。

使用叢集端點

由於每個 Aurora 叢集有單一的內建叢集端點,其名稱和其他屬性是由 Aurora 管理,則您無法建立、刪除或修改這類型的端點。

您會在管理叢集、執行「擷取、轉換、載入 (ETL)」操作,或是開發和測試應用程式時使用叢集端點。叢集端點會連線至叢集的主要執行個體。主要執行個體是您可以建立資料表和索引、執行 INSERT 陳述式,以及執行其他 DDL 和 DML 操作的唯一資料庫執行個體。

叢集端點所指向的實體 IP 地址,會在容錯移轉機制將新資料庫執行個體提升為叢集的讀寫主要執行個體時變更。如果您使用任何形式的連線集區或其他多工處理,請準備好清除或減少任何快取 DNS time-to-live 資訊的。這麼做可確保您不會嘗試對變得無法使用或在容錯移轉之後現在為唯讀的資料庫執行個體建立讀寫連線。

使用讀取者端點

您可以為 Aurora 叢集的唯讀連線使用讀取器端點。此端點使用連線平衡機制來協助您的叢集處理密集型查詢工作負載。讀取器端點是您提供給應用程式以在叢集上執行報告或其他唯讀操作的端點。

讀取器端點可平衡與 Aurora 資料庫叢集中可用 Aurora 複本的連線。它不平衡單個查詢。如果要平衡每個查詢以分配資料庫叢集的讀取工作負載,請為每個查詢開啟與讀取器端點的新連線。

每個 Aurora 叢集有單一的內建讀取器端點,其名稱和其他屬性是由 Aurora 管理。您無法建立、刪除或修改這類型的端點。

如果您的叢集只包含主要執行個體而沒有 Aurora 複本,則讀取者端點會連線到主要執行個體。在這種情況下,您可以透過此端點執行寫入操作。

提示

透過 RDS Proxy,您可以為 Aurora 叢集建立其他的僅供讀取端點。這些端點執行與 Aurora 讀取器端點相同類型的連線平衡。如果讀取者執行個體變得無法使用,則應用程式可以更快速地重新連線至代理端點,而非 Aurora 讀取者端點。代理端點也可以利用其他代理功能,例如多工處理。如需更多詳細資訊,請參閱 將讀取器端點與 Aurora 叢集搭配使用

使用自訂端點

當您的叢集包含的資料庫執行個體具有不同容量和組態設定時,您可以使用自訂端點來簡化連線管理。

在過去,您可能是使用 CNAMES 機制從您的自己網域設定網域名稱服務 (DNS) 別名,以達成類似的結果。透過使用自訂端點,當叢集成長或縮減時,您可以避免更新 CNAME 記錄。自訂端點也表示您可以使用加密的 Transport Layer Security/Secure Sockets Layer (TLS/SSL) 連線。

不要對每個專業用途使用一個資料庫執行個體並連線至其執行個體端點,而是可以有多個專業資料庫執行個體的群組。在此情況下,每個群組會有自己的自訂端點。這樣,Aurora 可以在報告或處理生產或內部查詢等任務專用的所有執行個體之間執行連線平衡。自訂端點會在執行個體之間被動分配連線,並使用 DNS 隨機傳回其中一個執行個體的 IP 位址。如果某個群組內的其中一個資料庫執行個體變得無法使用,Aurora 會將後續的自訂端點連線導向與同一端點相關聯的其他資料庫執行個體中的一個。

指定自訂端點的屬性

自訂端點名稱的長度上限為 63 個字元。名稱格式如下:

endpoint_name.cluster-custom-customer_DNS_identifier.AWS_Region.rds.amazonaws.com

您不可以對同一 AWS 區域中的一個以上叢集重複使用相同的自訂端點名稱。客戶 DNS 識別碼是與您的特定相關聯 AWS 帳戶 的唯一識別碼 AWS 區域。

每個自訂端點有相關聯的類型,決定哪些資料庫執行個體符合資格可與該端點產生關聯。目前,類型可以是READERANY。自訂端點類型適用下列考量:

  • 您無法在 AWS Management Console中選取自訂端點類型。您透過中建立的所有自訂端點都 AWS Management Console 有一種類型ANY

    您可以使用 AWS CLI 或 Amazon RDS API 來設定和修改自訂端點類型。

  • 僅讀取器資料庫執行個體可以成為 READER 自訂端點的一部分。

  • 讀取器和寫入器資料庫執行個體都可以是 ANY 自訂端點。Aurora 會以相同概率,將 ANY 類型之叢集端點的連線導向任何相關的資料庫執行個體。ANY 類型適用於使用任何複寫拓撲的叢集。

  • 如果您嘗試使用未適當根據叢集的複寫組態的類型來建立自訂端點,Aurora 會傳回錯誤。

自訂端點的成員資格規則

新增資料庫執行個體至自訂端點或將它從自訂端點移除時,對該資料庫執行個體的任何現有連線會保持作用中。

您可以定義要從自訂端點包括或排除的資料庫執行個體清單。我們將這些清單分別稱為靜態排除清單。您可以使用包含/排除機制來進一步細分資料庫執行個體的群組,以及確定自訂端點集涵蓋叢集中的所有資料庫執行個體。每個自訂端點只能包含這些清單類型的其中一個。

在 AWS Management Console:

  • 此選擇會以核取方塊 Attach future instances added to this cluster (連線新增至此叢集的未來執行個體) 呈現。將該核取方塊保持未選取時,自訂端點會使用僅包含頁面上所指定資料庫執行個體的靜態清單。選取該核取方塊時,自訂端點會使用排除清單。在此情況下,自訂端點會呈現叢集中的所有資料庫執行個體 (包括您未來所新增的任何項目),在頁面上保持未選取的那些除外。

  • 主控台不允許您指定端點類型。使用主控台建立的任何自訂端點都屬於類型 ANY

    因此,當資料庫執行個體由於容錯移轉或升級而在寫入器與讀取器之間變更角色時,Aurora 不會變更自訂端點的成員資格。

在 AWS CLI 和 Amazon RDS API 中:

  • 您可以指定端點類型。因此,當端點類型設為時READER,端點成員資格會在容錯移轉和升級期間自動調整。

    例如,具有類型的自訂端點READER包含 Aurora 複本,然後將該複本升級為寫入器資料庫執行個體。新的寫入器執行個體不再是自訂端點的一部分。

  • 您可以將個別成員新增至清單,並在其變更角色後,將其從清單中移除。使用命modify-db-cluster-endpoint AWS CLI 令或修改數據庫 ClusterEndpoint API 操作。

您可以將一個資料庫執行個體與多個自訂端點建立關聯。例如,假設您將新資料庫執行個體新增至叢集,或是 Aurora 透過自動擴展機制自動新增資料庫執行個體。在這些情況下,資料庫執行個體會新增至符合其資格的所有自訂端點。資料庫執行個體要新增到哪些端點,取決於READER或的自訂端點類型ANY,以及為每個端點定義的任何靜態或排除清單。例如,如果端點包含資料庫執行個體的靜態清單,新增加的 Aurora 複本不會新增至該端點。相反地,如果端點有排除清單,新增加的 Aurora 複本如果名稱未列在排除清單,且其角色符合自訂端點的類型,即會新增至端點。

如果 Aurora 複本變得無法使用,則會保持與任何自訂端點相關聯。例如,當它狀況不良、已停止、重新開機等等,它會保留部分自訂端點。不過,除非它再次變得可供使用,否則您無法透過這些端點連線至它。

管理自訂端點

由於新建立的 Aurora 叢集沒有自訂端點,則您必須自行建立和管理這些物件。您可以使用 AWS Management Console AWS CLI、或 Amazon RDS API 執行此操作。

注意

您還必須為從快照還原的 Aurora 叢集建立和管理自訂端點。快照中不會包含自訂端點。如果還原的叢集位於與原始叢集相同的區域,您會在還原之後建立它們,並選擇端點名稱。

若要從中使用自訂端點 AWS Management Console,請導覽至 Aurora 叢集的詳細資料頁面,並使用「自訂端點」區段下的控制項。

若要從中使用自訂端點 AWS CLI,您可以使用下列作業:

若要透過 Amazon RDS API 使用自訂端點,您可以使用下列函數:

建立自訂端點

若要使用建立自訂端點 AWS Management Console,請移至叢集詳細資料頁面,然後在「端點」區段中選擇Create custom endpoint動作。選擇自訂端點的名稱,該名稱是您的使用者 ID 和區域的唯一。若要選取即使在叢集展開時仍保持相同的資料庫執行個體清單,請將核取方塊 Attach future instances added to this cluster (連線新增至此叢集的未來執行個體) 保持未選取。選擇該核取方塊時,自訂端點會在您將它們新增至叢集時動態新增任何新的執行個體。

您無法在ANY中選取 READER 或 AWS Management Console的自訂端點類型。您透過 AWS Management Console 建立的所有自訂端點會具有 ANY 類型。

若要使用建立自訂端點 AWS CLI,請執行create-db-cluster-endpoint命令。

下列命令會建立連線到特定叢集的自訂端點。一開始,端點會與叢集中的所有 Aurora 複本相關聯。後續命令會將它與叢集中特定的資料庫執行個體集相關聯。

對於LinuxmacOS、或Unix:

aws rds create-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample \ --endpoint-type reader \ --db-cluster-identifier cluster_id aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample \ --static-members instance_name_1 instance_name_2

在 Windows 中:

aws rds create-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample ^ --endpoint-type reader ^ --db-cluster-identifier cluster_id aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample ^ --static-members instance_name_1 instance_name_2

若要使用 RDS API 建立自訂端點,請執行建立資料庫作業ClusterEndpoint

檢視自訂端點

若要使用檢視自訂端點 AWS Management Console,請移至叢集的叢集詳細資料頁面,然後查看「端點」區段下方。本節僅包含有關自訂端點的資訊。內建端點的詳細資訊會列在主要的 Details (詳細資訊) 中。若要查看特定自訂端點的詳細資訊,請選取其名稱,以帶出該端點的詳細資訊頁面。

以下螢幕擷取畫面顯示最初為空白的 Aurora 叢集的自訂端點的清單。

為該叢集建立一些自訂端點之後,它們會顯示在 Endpoints (端點) 區段下。

按一下詳細資訊頁面會顯示端點目前與其關聯的資料庫執行個體。

若要查看新增至叢集的新資料庫執行個體是否也會自動新增至端點的其他詳細資訊,請開啟端點的 Edit (編輯) 頁面。

若要使用檢視自訂端點 AWS CLI,請執行describe-db-cluster-endpoints指令。

下列命令會顯示與特定區域中的特定叢集相關聯的自訂端點。輸出會同時包括內建端點和任何自訂端點。

對於LinuxmacOS、或Unix:

aws rds describe-db-cluster-endpoints --region region_name \ --db-cluster-identifier cluster_id

在 Windows 中:

aws rds describe-db-cluster-endpoints --region region_name ^ --db-cluster-identifier cluster_id

以下顯示來自 describe-db-cluster-endpoints 命令的一些範例輸出。EndpointTypeWRITERREADER 代表叢集的內建讀寫和唯讀端點。EndpointTypeCUSTOM 代表您建立並選擇相關聯資料庫執行個體的端點。其中一個端點有非空白的 StaticMembers 欄位,代表它與精確的一組資料庫執行個體相關聯。另一個端點有非空白的 ExcludedMembers 欄位,代表該端點與所有資料庫執行個體相關聯 (列在 ExcludedMembers 下的除外)。這種第二個類型的自訂端點會成長,以容納您新增至叢集的新執行個體。

{ "DBClusterEndpoints": [ { "Endpoint": "custom-endpoint-demo.cluster-c7tj4example.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo", "EndpointType": "WRITER" }, { "Endpoint": "custom-endpoint-demo.cluster-ro-c7tj4example.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo", "EndpointType": "READER" }, { "CustomEndpointType": "ANY", "DBClusterEndpointIdentifier": "powers-of-2", "ExcludedMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "available", "EndpointType": "CUSTOM", "Endpoint": "powers-of-2.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "StaticMembers": [ "custom-endpoint-demo-04", "custom-endpoint-demo-08", "custom-endpoint-demo-01", "custom-endpoint-demo-02" ], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:powers-of-2" }, { "CustomEndpointType": "ANY", "DBClusterEndpointIdentifier": "eight-and-higher", "ExcludedMembers": [ "custom-endpoint-demo-04", "custom-endpoint-demo-02", "custom-endpoint-demo-07", "custom-endpoint-demo-05", "custom-endpoint-demo-03", "custom-endpoint-demo-06", "custom-endpoint-demo-01" ], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "available", "EndpointType": "CUSTOM", "Endpoint": "eight-and-higher.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "StaticMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHYQKFU6J6NV5FHU", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:eight-and-higher" } ] }

若要使用 RDS API 檢視自訂端點,請執行描述的 ClusterEndpoints .html 作業

編輯自訂端點

您可以編輯自訂端點的屬性,以變更與該端點相關聯的資料庫執行個體。您也可以變更靜態清單和排除清單之間的端點。如果需要這些端點屬性的詳細資訊,請參閱 自訂端點的成員資格規則 文件。

您可以在編輯動作的變更進行中時繼續連線至或使用自訂端點。

若要使用編輯自訂端點 AWS Management Console,您可以在叢集詳細資訊頁面上選取端點,或顯示端點的詳細資料頁面,然後選擇「編輯」動作。

若要使用編輯自訂端點 AWS CLI,請執行modify-db-cluster-endpoint指令。

下列命令會變更套用至自訂端點的資料庫執行個體集,並選擇性地在靜態或排除清單的行為之間切換。--static-members--excluded-members 參數會採用以空格分隔的資料庫執行個體識別符清單。

對於LinuxmacOS、或Unix:

aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint \ --static-members db-instance-id-1 db-instance-id-2 db-instance-id-3 \ --region region_name aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint \ --excluded-members db-instance-id-4 db-instance-id-5 \ --region region_name

在 Windows 中:

aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint ^ --static-members db-instance-id-1 db-instance-id-2 db-instance-id-3 ^ --region region_name aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint ^ --excluded-members db-instance-id-4 db-instance-id-5 ^ --region region_name

若要使用 RDS API 編輯自訂端點,請執行修改資料庫ClusterEndpoint. html 作業。

刪除自訂端點

若要使用刪除自訂端點 AWS Management Console,請移至叢集詳細資訊頁面,選取適當的自訂端點,然後選取刪除動作。

若要使用刪除自訂端點 AWS CLI,請執行delete-db-cluster-endpoint指令。

下列命令會刪除自訂端點。您不需要指定相關聯的叢集,但必須指定區域。

對於LinuxmacOS、或Unix:

aws rds delete-db-cluster-endpoint --db-cluster-endpoint-identifier custom-end-point-id \ --region region_name

在 Windows 中:

aws rds delete-db-cluster-endpoint --db-cluster-endpoint-identifier custom-end-point-id ^ --region region_name

若要使用 RDS API 刪除自訂端點,請執行刪除資料庫作業ClusterEndpoint

E 自訂端點的nd-to-end AWS CLI 範例

下列教學課程使用具有 Unix shell 語法的 AWS CLI 範例,說明您可能會定義包含多個「小型」資料庫執行個體和一些「大型」資料庫執行個體的叢集,並建立自訂端點以連接到每組資料庫執行個體。若要在自己的系統上執行類似的命令,您應該熟悉 AWS CLI 使用 Aurora 叢集的基本知識,以及為區域、子網路群組和 VPC 安全性群組等參數提供自己的值。

此範例示範初始設定步驟:建立 Aurora 叢集和新增資料庫執行個體至叢集。這是異質叢集,表示不是所有資料庫執行個體都有相同的容量。大多數執行個體都使用執行個體類別db.r4.4xlarge,但最後兩個資料庫執行個體使用 AWS db.r4.16xlarge 這些範例 create-db-instance 命令中的每個會將其輸出列印至畫面,並將 JSON 的副本儲存在檔案中,供後續檢查。

aws rds create-db-cluster --db-cluster-identifier custom-endpoint-demo --engine aurora-mysql \ --engine-version 8.0.mysql_aurora.3.02.0 --master-username $MASTER_USER --manage-master-user-password \ --db-subnet-group-name $SUBNET_GROUP --vpc-security-group-ids $VPC_SECURITY_GROUP \ --region $REGION for i in 01 02 03 04 05 06 07 08 do aws rds create-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --engine aurora --db-cluster-identifier custom-endpoint-demo --db-instance-class db.r4.4xlarge \ --region $REGION \ | tee custom-endpoint-demo-${i}.json done for i in 09 10 do aws rds create-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --engine aurora --db-cluster-identifier custom-endpoint-demo --db-instance-class db.r4.16xlarge \ --region $REGION \ | tee custom-endpoint-demo-${i}.json done

較大的執行個體保留供專業類型的報告查詢使用。為了讓它們不可能被提升為主要執行個體,下列範例會將其提升層變更至最低優先順序。此範例會指定 --manage-master-user-password 選項來產生主要使用者密碼,並在 Secrets Manager 中管理該密碼。如需詳細資訊,請參閱 使用 Aurora 和密碼管理 AWS Secrets Manager。或者,您可以使用 --master-password 選項,自行指定和管理密碼。

for i in 09 10 do aws rds modify-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --region $REGION --promotion-tier 15 done

假設您只要對最資源密集的查詢使用兩個「較大的」執行個體。若要這樣做,您可以先建立自訂唯讀端點。然後,您可以新增成員的靜態列表,以便端點僅連線到這些資料庫執行個體。這些執行個體已處於最低的提升層級,使它們兩個都不可能被提升為主要執行個體。如果已將它們其中之一提升為主要執行個體,將會變得無法透過此端點連線,因為我們指定的是 READER 類型而非 ANY 類型。

下列範例示範建立和修改端點命令,而範例 JSON 輸出顯示自訂端點的初始和修改的狀態。

$ aws rds create-db-cluster-endpoint --region $REGION \ --db-cluster-identifier custom-endpoint-demo \ --db-cluster-endpoint-identifier big-instances --endpoint-type reader { "EndpointType": "CUSTOM", "Endpoint": "big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "DBClusterEndpointIdentifier": "big-instances", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "ExcludedMembers": [], "CustomEndpointType": "READER", "Status": "creating", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances" } $ aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier big-instances \ --static-members custom-endpoint-demo-09 custom-endpoint-demo-10 --region $REGION { "EndpointType": "CUSTOM", "ExcludedMembers": [], "DBClusterEndpointIdentifier": "big-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "CustomEndpointType": "READER", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances", "StaticMembers": [ "custom-endpoint-demo-10", "custom-endpoint-demo-09" ], "Status": "modifying", "Endpoint": "big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "DBClusterIdentifier": "custom-endpoint-demo" }

叢集的預設 READER 端點可以連線至小型或大型資料庫執行個體,使得當叢集變得忙碌時,要預測查詢效能和可擴展性變得不切實際。若要在資料庫執行個體集之間清楚劃分工作負載,您可以忽略預設的 READER 端點,並建立連線至所有其他資料庫執行個體的第二個自訂端點。以下範例會透過建立自訂端點,然後新增排除清單來執行此動作。您之後新增至叢集的任何資料庫執行個體,將會自動新增至此端點。ANY 類型表示此端點與總共八個執行個體相關聯:一個主要執行個體和另外七個 Aurora 複本。如果範例使用 READER 類型,則自訂端點只會與七個 Aurora 複本相關聯。

$ aws rds create-db-cluster-endpoint --region $REGION --db-cluster-identifier custom-endpoint-demo \ --db-cluster-endpoint-identifier small-instances --endpoint-type any { "Status": "creating", "DBClusterEndpointIdentifier": "small-instances", "CustomEndpointType": "ANY", "EndpointType": "CUSTOM", "Endpoint": "small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "StaticMembers": [], "ExcludedMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY" } $ aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier small-instances \ --excluded-members custom-endpoint-demo-09 custom-endpoint-demo-10 --region $REGION { "DBClusterEndpointIdentifier": "small-instances", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:c7tj4example:cluster-endpoint:small-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY", "CustomEndpointType": "ANY", "Endpoint": "small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "EndpointType": "CUSTOM", "ExcludedMembers": [ "custom-endpoint-demo-09", "custom-endpoint-demo-10" ], "StaticMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "modifying" }

以下範例會檢查此叢集的端點狀態。叢集仍有其原始叢集端點,其 EndPointTypeWRITER,您仍將它用於管理、ETL 和其他寫入操作。它仍會有其原始 READER 端點,但您不會使用它,因為對它的每個連線都可能會被導向至「小型」或「大型」資料庫執行個體。自訂端點讓此行為能被預測,以保證連線使用其中一個「小型」或「大型」資料庫執行個體 (根據您指定的端點)。

$ aws rds describe-db-cluster-endpoints --region $REGION { "DBClusterEndpoints": [ { "EndpointType": "WRITER", "Endpoint": "custom-endpoint-demo.cluster-c7tj4example.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo" }, { "EndpointType": "READER", "Endpoint": "custom-endpoint-demo.cluster-ro-c7tj4example.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo" }, { "Endpoint": "small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "CustomEndpointType": "ANY", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "ExcludedMembers": [ "custom-endpoint-demo-09", "custom-endpoint-demo-10" ], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [], "EndpointType": "CUSTOM", "DBClusterEndpointIdentifier": "small-instances", "Status": "modifying" }, { "Endpoint": "big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "CustomEndpointType": "READER", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances", "ExcludedMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [ "custom-endpoint-demo-10", "custom-endpoint-demo-09" ], "EndpointType": "CUSTOM", "DBClusterEndpointIdentifier": "big-instances", "Status": "available" } ] }

最後的範例示範對自訂端點的後續資料庫連線如何連線至 Aurora 叢集中的各種資料庫執行個體。small-instances 端點一律會連線至 db.r4.4xlarge 資料庫執行個體,它是此叢集中編號較低的主機。

$ mysql -h small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-02 | +-------------------------+ $ mysql -h small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-07 | +-------------------------+ $ mysql -h small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-01 | +-------------------------+

big-instances 端點一律會連線至 db.r4.16xlarge 資料庫執行個體,它是此叢集中編號最高的兩個主機。

$ mysql -h big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-10 | +-------------------------+ $ mysql -h big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-09 | +-------------------------+

使用執行個體端點

Aurora 叢集中的每個資料庫執行個體會有其自己的內建執行個體端點,其名稱和其他屬性是由 Aurora 管理。您無法建立、刪除或修改這類型的端點。如果您使用 Amazon RDS,您可能很熟悉執行個體端點。不過,透過 Aurora,您通常會比執行個體端點更常使用寫入者和讀取者端點。

在 day-to-day Aurora 作業中,使用執行個體端點的主要方法是診斷會影響 Aurora 叢集中某個特定執行個體的容量或效能問題。連線至特定執行個體時,您可以檢查其狀態變數、指標等等。這麼做可幫助您判斷該執行個體中所發生情況,與叢集中其他執行個體所發生情況的差異。

在進階使用案例中,您可能會以不同方式設定一些資料庫執行個體。在此案例中,請使用執行個體端點來直接連線至較小型、較大型或與其他執行個體具有不同特質的執行個體。同時,設定容錯移轉優先順序,使得此特殊資料庫執行個體是要用做主要執行個體的最後選擇。在此情況下,我們建議您使用自訂端點而非執行個體端點。這麼做可以在您新增更多資料庫執行個體至您的叢集時簡化連線管理和高可用性。

Aurora 端點如何與高可用性搭配使用

若為高可用性很重要的叢集,請針對讀寫或一般用途連線使用寫入者端點,以及針對唯讀連線使用讀取者端點。寫入者和讀取者端點比執行個體端點更能善加管理資料庫執行個體容錯移轉。與執行個體端點不同的是,如果叢集中的資料庫執行個體變得無法使用,寫入者和讀取者端點會自動變更它們要連線到哪個資料庫執行個體。

如果資料庫叢集的主要資料庫執行個體失敗,Aurora 會自動容錯移轉至新的主要資料庫執行個體。它會透過將現有的 Aurora 複本提升為新的主要資料庫執行個體,或是建立新的主要資料庫執行個體來完成。如果發生容錯移轉,您可以使用寫入者端點來重新連線至新提升或建立的主要資料庫執行個體,或使用讀取者端點來重新連線至資料庫叢集的其中一個 Aurora 複本。在容錯移轉期間,在 Aurora 複本提升為新的主要資料庫執行個體之後,讀取器端點可能會短暫直接連線至資料庫叢集的新主要資料庫執行個體。

如果您要設計自己的應用程式邏輯來管理執行個體端點的連線,則可手動或以程式設計方式探索資料庫叢集中可用資料庫執行個體的結果集。使用describe-db-clusters AWS CLI 命令或 Descri beDBClusters RDS API 作業來尋找資料庫叢集和讀取器端點、資料庫執行個體,無論資料庫執行個體是否為讀取器,以及其促銷層。接著,您可以在容錯移轉後確認其執行個體類別,並連線至適當的執行個體端點。

如需容錯移轉的詳細資訊,請參閱 Aurora 資料庫叢集的容錯能力