使用 Amazon RDS Proxy - Amazon Relational Database Service

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

使用 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 無法立即從連線集區提供服務的代理佇列或限流應用程式連線。雖然延遲可能會增加,但您的應用程式可以繼續擴展,而不會突然失敗或讓資料庫無法負荷。如果連線請求超過您指定的限制,RDSProxy 會拒絕應用程式連線 (亦即,它會捨棄負載)。同時,它還為RDS可用容量的負載維持可預測的效能。

您可以減少處理登入憑證,並為每個新連線建立安全連線的負荷。RDS Proxy 可以代表資料庫處理其中某些工作。

RDS Proxy 與其支援的引擎版本完全相容。您可以為大多數應用程式啟用 RDS Proxy,無需變更程式碼。

區域和版本可用性

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需RDS使用 RDS Proxy 的 Amazon 版本和區域可用性的詳細資訊,請參閱 Amazon RDS 代理支援的區域和資料庫引擎

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 個代理端點。您可以建立、檢視、修改和刪除這些端點。

  • 對於複寫組態中的RDS資料庫執行個體,您只能將代理與寫入器資料庫執行個體建立關聯,而不是將僅供讀取複本建立關聯。

  • 您的 RDS Proxy 必須與資料庫位於相同的虛擬私有雲端 (VPC)。代理不可以公開存取,但資料庫可以。例如,如果您在本機主機上設計資料庫的原型,除非您設定必要的網路需求以允許與代理的連線,否則無法連線至您的代理。這是因為您的本機主機位於代理的 之外VPC。

  • 您無法將 RDS Proxy 與租用設定為 VPC的 搭配使用dedicated

  • 如果您將 RDS Proxy 與已啟用IAM身分驗證的RDS資料庫執行個體 搭配使用,請檢查使用者身分驗證。所有透過代理連線的使用者都必須透過登入憑證進行身分驗證。如需 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 Proxy 與 RDS Custom for SQL Server 搭配使用。

  • 若要反映代理的任何資料庫參數群組修改,即使您選擇立即套用變更,也需要重新啟動執行個體。對於叢集層級參數,需要全叢集重新啟動。

如需每個資料庫引擎的其他限制,請參閱下列各節:

RDS MariaDB 的其他限制

下列其他限制適用於 RDS Proxy 搭配 RDS for MariaDB 資料庫:

  • 目前,所有代理都在 MariaDB 的連接埠 3306 上接聽。代理仍會使用您在資料庫設定中指定的連接埠來連線至您的資料庫。

  • 您無法在 Amazon EC2執行個體中使用 RDS Proxy 搭配自我管理的 MariaDB 資料庫。

  • 您無法將 RDS Proxy 與資料庫read_only參數群組中 參數設定為 的 RDS for MariaDB 資料庫執行個體搭配使用1

  • RDS Proxy 不支援 MariaDB 壓縮模式。例如,其不支援 mysql 命令的 --compress-C 選項使所用的壓縮。

  • 某些SQL陳述式和函數可以變更連線狀態,而不會導致釘選。如需最新的鎖定行為,請參閱 避免固定代理 RDS

  • RDS Proxy 不支援 MariaDB auth_ed25519外掛程式。

  • RDS Proxy 不支援 MariaDB 資料庫的 Transport Layer Security (TLS) 1.3 版。

  • 當 RDS Proxy 重複使用相同的資料庫連線執行另一個查詢時,處理GET DIAGNOSTIC命令的資料庫連線可能會傳回不正確的資訊。當 RDS Proxy 多工資料庫連線時,可能會發生這種情況。如需詳細資訊,請參閱RDS代理主機概念概觀

重要

對於與 MariaDB 資料庫相關聯的代理,請勿在初始化查詢中 sql_auto_is_null 將配置參數設置為 true 或非零值。這樣做可能會導致應用程式行為不正確。

Microsoft SQL Server RDS 的其他限制

下列其他限制適用於 RDS Proxy with RDS for Microsoft SQL Server 資料庫:

  • 您需要為代理建立的 Secrets Manager 秘密數目取決於資料庫執行個體使用的定序。例如,假設您的資料庫執行個體使用區分大小寫的定序。如果您的應用程式同時接受 "Admin" 和 "admin" ,則您的代理需要兩個單獨的秘密。如需有關SQL伺服器定序的詳細資訊,請參閱 Microsoft SQL Server 文件。

  • RDS Proxy 不支援使用 Active Directory 的連線。

  • 您無法對不支援權杖屬性的用戶端使用IAM身分驗證。如需詳細資訊,請參閱使用 Microsoft SQL Server 連線至代理的考量

  • @@IDENTITY@@ROWCOUNT、和 SCOPE_IDENTITY 的結果未必永遠準確。作為解決方法,請在同一工作階段陳述式中擷取其值,以確保它們傳回正確的資訊。

  • 如果連線使用多個作用中結果集 (MARS),RDS則 Proxy 不會執行初始化查詢。如需 的相關資訊MARS,請參閱 Microsoft SQL Server 文件。

  • 目前,RDSProxy 不支援在主要版本 RDS SQL Server SQL2022 上執行的伺服器資料庫執行個體。

  • RDS Proxy 不支援在主要版本 RDS SQL Server SQL2014 上執行的 Server 資料庫執行個體。

  • RDS Proxy 不支援無法處理單一TLS記錄中多個回應訊息的用戶端應用程式。

My RDS 的其他限制SQL

下列其他限制適用於 RDS Proxy with RDS for MySQL 資料庫:

  • RDS Proxy 不支援 MySQL sha256_passwordcaching_sha2_password身分驗證外掛程式。這些外掛程式會實作使用者帳戶密碼的 SHA-256 雜湊。

  • 目前,所有代理都在連接埠 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

  • 不支援在多陳述式查詢中使用 ROW_COUNT()函數。

  • RDS Proxy 不支援無法處理單一TLS記錄中多個回應訊息的用戶端應用程式。

重要

對於與 MySQL 資料庫相關聯的代理,請勿在初始化查詢中將組態參數設定為 sql_auto_is_nulltrue或非零值。這樣做可能會導致應用程式行為不正確。

Postgre RDS 的其他限制SQL

下列其他限制適用於 RDS Proxy 搭配 RDS for PostgreSQL 資料庫:

  • RDS Proxy 不支援 Postgre 的工作階段固定篩選條件SQL。

  • 目前,所有代理都在 Postgre 的連接埠 5432 上接聽SQL。

  • 對於 Postgre SQL,RDSProxy 目前不支援透過發出 來取消用戶端的查詢CancelRequest。例如,使用 Ctrl+C 在互動式 psql 工作階段中取消長時間執行的查詢時,就是這種情況。

  • PostgreSQL 函數上次執行的結果不一定準確。作為解決方法,請將 INSERT陳述式與 RETURNING子句搭配使用。

  • RDS Proxy 目前不支援串流複寫模式。

  • 使用 RDS for PostgreSQL 16,對 scram_iterations 值的修改只會影響代理與資料庫之間的身分驗證程序。具體而言,如果您ClientPasswordAuthType將 設定為 scram-sha-256,對 scram_iterations值進行的任何自訂都不會影響 client-to-proxy密碼身分驗證。反之,密碼身分驗證的 client-to-proxy迭代值會修正為 4096。

重要

對於具有 PostgreSQL 資料庫的現有代理,如果您將資料庫身分驗證修改為SCRAM僅供使用,代理會變成最長 60 秒無法使用。若要避免發生此問題,請執行下列其中一項:

  • 確定資料庫同時允許 SCRAMMD5 身分驗證。

  • 若只要使用 SCRAM 身分驗證,請建立新代理、將您的應用程式流量遷移至新代理,然後刪除先前與資料庫相關聯的代理。