本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon RDS Proxy for Aurora
透過使用 Amazon RDS Proxy,您可以允許應用程式集區和共用資料庫連線,以改善其擴展能力。 RDSProxy 透過自動連線至待命資料庫執行個體,同時保留應用程式連線,讓應用程式對資料庫故障更具彈性。您也可以使用 RDS Proxy 強制執行資料庫的 AWS Identity and Access Management (IAM) 身分驗證,並安全地存放登入資料 AWS Secrets Manager。
使用 RDS Proxy,您可以處理資料庫流量中無法預測的突增。否則,這些突增可能會導致因過度訂閱連線或以快速速率建立新連線而導致問題。 RDSProxy 會建立資料庫連線集區,並重複使用此集區中的連線。此方法可避免每次開啟新資料庫連線時的記憶體和CPU額外負荷。若要保護資料庫免於過度訂閱,您可以控制建立的資料庫連線數目。
RDS 無法立即從連線集區提供的應用程式連線的代理佇列或調節。雖然延遲可能會增加,但您的應用程式可以繼續擴展,而不會突然失敗或讓資料庫無法負荷。如果連線請求超過您指定的限制,RDSProxy 會拒絕應用程式連線 (也就是,它會捨棄負載)。同時,它為RDS可用容量的負載維持可預測的效能。
您可以減少額外負荷來處理憑證,並為每個新連線建立安全連線。 RDSProxy 可以代表資料庫處理其中一些工作。
RDS Proxy 與其支援的引擎版本完全相容。您可以為大多數應用程式啟用 RDS Proxy,無需變更程式碼。如需受支援引擎版本的清單,請參閱 Amazon RDS 代理支援的區域和 Aurora 資料庫引擎。
主題
區域和版本可用性
如需特定 中 RDS Proxy 資料庫引擎版本支援和可用性的相關資訊 AWS 區域,請參閱 Amazon RDS 代理支援的區域和 Aurora 資料庫引擎。
RDS Proxy 的配額和限制
下列配額和限制適用於 RDS Proxy:
-
每個 AWS 帳戶 ID 限制為 20 個代理。如果您的應用程式需要更多代理,請透過 中的 Service Quotas 頁面請求增加 AWS Management Console。在Service Quotas頁面中,選取 Amazon Relational Database Service (Amazon RDS) 並尋找 Proxies 以請求提高配額。 AWS 可以自動增加您的配額或等待 審核您的請求 AWS Support。
-
每個代理最多可以有 200 個相關聯的 Secrets Manager 秘密。因此,每個代理可在任何指定時間連接至多達 200 個不同的使用者帳戶。
-
每個代理都有預設端點。您也可以為每個代理新增最多 20 個代理端點。您可以建立、檢視、修改和刪除這些端點。
-
在 Aurora 叢集中,所有使用預設代理端點的連線都會由 Aurora 寫入器執行個體處理。若要針對讀取密集型工作負載執行負載平衡,您可以為代理建立唯讀端點。該端點會將連線傳遞至叢集的讀取器端點。這樣,您的代理連線可以利用 Aurora 讀取可擴展性。如需詳細資訊,請參閱代理端點概觀。
-
您可以搭配 Aurora Serverless v2 叢集使用 RDS Proxy,但不能搭配 Aurora Serverless v1 叢集使用。
-
您的 RDS Proxy 必須與資料庫位於相同的虛擬私有雲端 (VPC)。代理不可以公開存取,但資料庫可以。例如,如果您在本機主機上設計資料庫的原型,除非您設定必要的網路需求以允許與代理的連線,否則無法連線至您的代理。這是因為您的本機主機位於代理的 之外VPC。
注意
對於 Aurora 資料庫叢集,您可以開啟交叉VPC存取。若要這樣做,請為代理建立額外的端點,並使用該端點指定不同的 VPC、子網路和安全群組。如需詳細資訊,請參閱跨越存取 Aurora 資料庫 VPCs。
-
您無法搭配其租用設定為 VPC的 使用 RDS Proxy
dedicated
。 -
如果您使用 RDS Proxy 搭配Aurora 資料庫叢集,請檢查使用者身分驗證。 IAM所有透過代理連線的使用者都必須透過登入憑證進行身分驗證。如需 Secrets Manager 和 RDS Proxy 中IAM支援的詳細資訊,請參閱 AWS Secrets Manager 為RDS代理伺服器設定資料庫認證和 設定 RDS Proxy 的 AWS Identity and Access Management (IAM) 政策。
-
使用SSL主機名稱驗證DNS時,您無法將 RDS Proxy 與自訂搭配使用。
-
每個代理都可以與單一目標資料庫叢集相關聯。不過,您可以將多個代理與同一個資料庫叢集建立關聯。
文字大小大於 16 KB 的任何陳述式會導致代理將工作階段鎖定至目前的連線。
-
某些區域具有要在建立 Proxy 時考量的可用區域 (AZ) 限制。美國東部 (維吉尼亞北部) 區域不支援
use1-az3
可用區域中的 RDS Proxy。美國西部 (加利佛尼亞北部) 區域不支援usw1-az2
可用區域中的 RDS Proxy。在建立 Proxy 時,若選取子網路,請確定您未在上述可用區域中選取子網路。 -
目前,RDSProxy 不支援任何全域條件內容金鑰。
如需全域條件內容索引鍵的詳細資訊,請參閱IAM《 使用者指南》中的AWS 全域條件內容索引鍵。
-
您無法搭配 RDS Custom for SQL Server 使用 RDS Proxy。
-
若要反映代理的任何資料庫參數群組修改,即使您選擇立即套用變更,仍需要重新啟動執行個體。對於叢集層級參數,需要全叢集重新啟動。
-
當您註冊代理目標時,您的代理會自動建立
rdsproxyadmin
資料庫使用者。刪除或修改rdsproxyadmin
使用者或其許可可能會影響代理到應用程式的可用性。
如需每個資料庫引擎的其他限制,請參閱下列各節:
Aurora My 的其他限制SQL
下列其他限制適用於 RDS Proxy with Aurora MySQL 資料庫:
-
RDS 身分
caching_sha2_password
驗證的代理支援需要安全的 (TLS) 連線。 -
RDS 的代理支援
caching_sha2_password
已知與特定 go-sql 驅動程式版本存在相容性問題。 -
使用 MySQL 8.4 C 驅動程式時,如果參數計數超過預備陳述式中的預留位置計數,
mysql_stmt_bind_named_param
API可能會形成格式不正確的封包。這會導致不正確的回應。如需詳細資訊,請參閱我的SQL錯誤報告。 -
目前,所有代理都在連接埠 3306 for My 上接聽SQL。代理仍會使用您在資料庫設定中指定的連接埠來連線至您的資料庫。
-
您無法在EC2執行個體中使用 RDS Proxy 搭配自我管理的 MySQL 資料庫。
-
您無法將 RDS Proxy 與資料庫
read_only
參數群組中 參數設定為 的 RDS for MySQL 資料庫執行個體搭配使用1
。 -
RDS Proxy 不支援我的SQL壓縮模式。例如,其不支援
mysql
命令的--compress
或-C
選項使所用的壓縮。 -
當 RDS Proxy 重複使用相同的資料庫連線來執行另一個查詢時,處理
GET DIAGNOSTIC
命令的資料庫連線可能會傳回不正確的資訊。當 RDS Proxy 多工資料庫連線時,可能會發生這種情況。 -
某些SQL陳述式和函數
SET LOCAL
可以變更連線狀態,而不會導致鎖定。如需最新的鎖定行為,請參閱 避免綁定 RDS Proxy。 -
不支援在多陳述式查詢中使用
ROW_COUNT()
函數。 -
RDS Proxy 不支援無法處理單一TLS記錄中多個回應訊息的用戶端應用程式。
重要
對於與 MySQL 資料庫相關聯的代理,請勿在初始化查詢中將組態參數設定為 sql_auto_is_null
true
或非零值。這樣做可能會導致應用程式行為不正確。
Aurora Postgre 的其他限制SQL
下列其他限制適用於具有 Aurora PostgreSQL 資料庫的 RDS Proxy:
RDS Proxy 不支援 Postgre 的工作階段鎖定篩選條件SQL。
-
目前,所有代理都會接聽 Postgre 的連接埠 5432SQL。
-
對於 PostgreSQL,RDSProxy 目前不支援透過發出 來取消用戶端的查詢
CancelRequest
。例如,使用 Ctrl+C 在互動式 psql 工作階段中取消長時間執行的查詢時,就是這種情況。 -
PostgreSQL 函數上次執行
的結果不一定準確。做為解決方法,請使用 INSERT 陳述式搭配 RETURNING
子句。 RDS Proxy 目前不支援串流複寫模式。
-
default
資料庫必須存在。 -
如果您使用
ALTER ROLE
或SET ROLE
來變更使用者角色,則當使用者與代理的後續連線遇到鎖定時,可能不會使用此角色設定。為了防止這種情況,在使用代理時,請在代理的初始化查詢SET ROLE
中使用 。如需詳細資訊,請參閱 中的初始化查詢建立 RDS Proxy。
重要
對於具有 PostgreSQL 資料庫的現有代理,如果您將資料庫身分驗證修改為SCRAM
僅供使用,代理會變成最長 60 秒無法使用。若要避免發生此問題,請執行下列其中一項:
確定資料庫同時允許
SCRAM
和MD5
身分驗證。若只要使用
SCRAM
身分驗證,請建立新代理、將您的應用程式流量遷移至新代理,然後刪除先前與資料庫相關聯的代理。