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

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

RDS Proxy 與其支援的引擎版本完全相容。您可以針對大部分的應用程式啟用 RDS Proxy,而不需要變更程式碼。

區域和版本可用性

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

RDS Proxy 的配額和限制

下列配額和限制適用於 RDS Proxy:

  • 每個 AWS 帳戶 ID 限制為 20 個代理伺服器。如果您的應用程式需要更多 Proxy,請透過. AWS Management Console在「Ser vice Quotas」頁面中,選取 Amazon Relational Database Service (Amazon RDS) 並找到代理伺服器以請求增加配額。 AWS 可以自動增加您的配額或等待審核您的請求 AWS Support。

  • 每個代理最多可以有 200 個相關聯的 Secrets Manager 秘密。因此,每個代理可在任何指定時間連接至多達 200 個不同的使用者帳戶。

  • 每個代理都有一個默認端點。您也可以為每個代理伺服器新增最多 20 個代理主機端點。您可以建立、檢視、修改和刪除這些端點。

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

  • 您的 RDS Proxy 必須位於與資料庫相同的 Virtual Private Cloud (VPC) 中。代理不可以公開存取,但資料庫可以。例如,如果您要在本機主機上建立資料庫的原型,則無法連線到 Proxy,除非您設定必要的網路需求以允許連線到 Proxy。這是因為您的本機主機不在 Proxy 的 VPC 之外。

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

  • 如果您將 RDS Proxy 與已啟用 IAM 驗證的 RDS 資料庫執行個體 搭配使用,請檢查使用者驗證。所有透過代理連線的使用者都必須透過登入憑證進行身分驗證。如需 RDS Proxy 中 Secrets Manager 和 IAM 支援的詳細資訊,請參閱 設定資料庫認證 AWS Secrets Manager設定 AWS Identity and Access Management (IAM) 政策

  • 使用 SSL 主機名稱驗證時,您無法將 RDS Proxy 與自訂 DNS 搭配使用。

  • 每個代理都可以與單一目標資料庫執行個體相關聯。不過,您可以將多個代理與同一個資料庫執行個體建立關聯。

  • 文字大小大於 16 KB 的任何陳述式會導致代理將工作階段鎖定至目前的連線。

  • 某些區域具有要在建立 Proxy 時考量的可用區域 (AZ) 限制。美國東部 (維吉尼亞北部) 區域不支援 use1-az3 可用區域中的 RDS Proxy。美國西部 (加利佛尼亞北部) 區域不支援 usw1-az2 可用區域中的 RDS Proxy。在建立 Proxy 時,若選取子網路,請確定您未在上述可用區域中選取子網路。

  • 目前,RDS Proxy 不支援任何全域條件內容金鑰。

    如需有關全域條件內容索引鍵的詳細資訊,請參閱《IAM 使用者指南》中的 AWS 全域條件內容索引鍵

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

RDS for MariaDB 的其他限制

下列額外限制適用於具有 RDS for MariaDB 資料庫的 RDS Proxy:

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

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

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

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

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

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

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

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

重要

對於與 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 代理伺服器不支援在主要版本 SQL 伺服器 2022 上執行的 SQL 伺服器資料庫執行個體的 RDS。

  • RDS 代理不支援在主要版本 SQL 伺服器 2014 上執行的 SQL 伺服器資料庫執行個體的 RDS。

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

RDS for MySQL 的其他限制

下列額外限制適用於具有 RDS for MySQL 資料庫的 RDS Proxy:

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

  • 目前,所有代理都在 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 可以變更連線狀態,而不會造成釘選。如需最新的鎖定行為,請參閱 避免鎖定

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

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

重要

對於與 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 代理目前不支援串流複寫模式。

  • 使用適用於 PostgreSQL 16 的 RDS,對scram_iterations值的修改僅會影響代理伺服器和資料庫之間的驗證程序。具體來說,如果您設定ClientPasswordAuthTypescram-sha-256,對該scram_iterations值進行的任何自訂都不會影響 client-to-proxy 密碼驗證。相反地, client-to-proxy 密碼驗證的迭代值固定為 4096。

重要

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

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

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