本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CLI Amazon Aurora 的自訂端點範例
下面的教程使用 AWS CLI Unix shell 語法示例顯示如何定義具有多個「小」數據庫實例和一些「大」數據庫實例的集群,並創建自定義端點以連接到每組數據庫實例。若要在您自己的系統上執行類似的命令,您應該熟悉使用 Aurora 叢集和 AWS CLI 用法來提供您自己的參數值,例如地區、子網路群組和VPC安全性群組。
此範例示範初始設定步驟:建立 Aurora 叢集和新增資料庫執行個體至叢集。這是異質叢集,表示不是所有資料庫執行個體都有相同的容量。大多數執行個體使用 AWS 執行個體類別db.r4.4xlarge
,但最後兩個資料庫執行個體使用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" }
以下範例會檢查此叢集的端點狀態。叢集仍然具有其原始叢集端點,使用EndPointType
的WRITER
,您仍然可以將其用於管理和其他寫入作業。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 -pmysql>
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 -pmysql>
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 -pmysql>
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 -pmysql>
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 -pmysql>
select @@aurora_server_id;+-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-09 | +-------------------------+