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