Amazon RDS 藍/綠部署的限制和考量事項 - Amazon Relational Database Service

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

Amazon RDS 藍/綠部署的限制和考量事項

Amazon RDS 中的藍/綠部署需要仔細考慮複寫槽、資源管理、執行個體大小,以及對資料庫效能的潛在影響等因素。下列各節提供指引,協助您最佳化部署策略,以確保資料庫環境的最短停機時間、無縫轉換和有效管理。

藍/綠部署的限制

下列限制適用於藍/綠部署。

藍/綠部署的一般限制

下列一般限制適用於藍/綠部署:

  • 藍/綠部署不支援使用 管理主要使用者密碼 AWS Secrets Manager。

  • 如果在藍色資料庫上啟用專用日誌磁碟區 (DLV),則必須在所有資料庫執行個體上啟用,包括僅供讀取複本。

  • 在切換期間,藍色和綠色環境無法與 Amazon Redshift 進行零 ETL 整合。您必須先刪除整合再進行切換,然後重新建立整合。

  • 建立藍/綠部署時,必須在綠色環境上停用事件排程器 (event_scheduler 參數)。這樣可以防止在綠色環境中產生事件並導致不一致。

  • 您無法將未加密的資料庫執行個體變更為加密的資料庫執行個體。此外,您無法將加密的資料庫執行個體變更為未加密的資料庫執行個體

  • 您無法將藍色資料庫執行個體變更為比其對應的綠色資料庫執行個體更高的引擎版本。

  • 藍色環境和綠色環境中的資源必須在同一 AWS 帳戶中。

  • 下列功能不支援藍/綠部署:

    • Amazon RDS Proxy

    • 階層式僅供讀取複本

    • 跨區域僅供讀取複本

    • AWS CloudFormation

    • Multi-AZ 資料庫叢集部署

      支援藍/綠部署進行多可用區域資料庫執行個體部署。如需異地同步備份部署的詳細資訊,請參閱設定和管理 Amazon 的多可用區部署 RDS

藍/綠部署的 RDS for MySQL 限制

下列限制適用於 RDS for MySQL 藍/綠部署:

  • 藍色資料庫執行個體不能是外部 binlog 複本。

  • 如果來源資料庫與自訂選項群組相關聯,則您無法在建立藍/綠部署時指定主要版本升級。

    在此情況下,您可以建立藍/綠部署,而無需指定主要版本升級。然後,您可以在綠色環境中升級資料庫。如需詳細資訊,請參閱升級資料庫執行個體引擎版本

  • 藍/綠部署不支援 AWS JDBC Driver for MySQL。如需詳細資訊,請參閱 GitHub 上的已知限制

具有實體複寫的藍/綠部署的 RDS for PostgreSQL 限制

下列限制適用於使用實體複寫的 RDS for PostgreSQL 藍/綠部署。如需藍/綠部署何時使用實體複寫而非邏輯複寫的說明,請參閱 藍/綠部署的 PostgreSQL 複寫方法

  • 建立綠色環境之後,您就無法執行手動主要版本升級。

  • 使用實體複寫的藍/綠部署不支援綠色環境中的結構描述變更,因為它是嚴格唯讀的。

  • 藍色資料庫執行個體不能是邏輯來源 (發佈者) 或複本 (訂閱者)。

具有邏輯複寫的藍/綠部署的 RDS for PostgreSQL 限制

下列限制適用於使用邏輯複寫的 RDS for PostgreSQL 藍/綠部署。如需藍/綠部署何時使用邏輯複寫而非實體複寫的說明,請參閱 藍/綠部署的 PostgreSQL 複寫方法

  • 除非藍色資料庫叢集上的 參數設為 ,否則未記錄的資料表不會複寫至綠色環境。。

  • 藍色資料庫執行個體不能是邏輯來源 (發佈者) 或複本 (訂閱者)。

  • 如果藍色資料庫執行個體設定為外部資料包裝函式 (FDW) 延伸模組的外部伺服器,您必須使用執行個體端點名稱,而非 IP 位址。這可讓組態在轉換之後保持運作狀態。

  • 在藍/綠部署中,每個資料庫都需要邏輯複寫插槽。隨著資料庫數量的增加,資源額外負荷會增加,並可能導致複寫延遲,特別是當資料庫執行個體規模不足時。影響取決於資料庫工作負載和連線數量等因素。若要緩解此問題,請考慮擴展資料庫執行個體類別,或減少來源執行個體上的資料庫數目。

  • 綠色環境中的邏輯複寫套用程序為單執行緒。如果藍色環境產生大量寫入流量,綠色環境可能無法跟上進度。這可能會導致複寫延遲或失敗,尤其是產生持續高寫入輸送量的工作負載。請務必徹底測試工作負載。對於需要主要版本升級和處理大量寫入工作負載的案例,請考慮使用 AWS Database Migration Service (AWS DMS)等替代方法。

  • 下列限制適用於 PostgreSQL 延伸模組:

    • 當您建立藍/綠部署時,必須在藍色環境中停用pg_partman延伸模組。延伸模組會執行 DDL 作業 (例如 CREATE TABLE),其會中斷從藍色環境到綠色環境的邏輯複寫。

    • 建立藍/綠部署之後,所有綠色資料庫上的 pg_cron 延伸模組必須保持停用狀態。延伸模組具有以超級使用者身分執行的背景工作者,且會略過綠色環境的唯讀設定,這可能會造成複寫衝突。

    • 建立藍/綠部署時,必須在藍色環境上停用 pglogicalpgactive 延伸模組。將綠色環境切換為新的生產環境之後,您可以再次啟用延伸模組。此外,藍色資料庫不能是外部執行個體的邏輯訂閱者。

    • 如果您使用的是 pgAudit延伸模組,則必須保留在藍色和綠色資料庫執行個體的自訂資料庫參數群組上的共用程式庫 (shared_preload_libraries) 中。如需詳細資訊,請參閱設定 pgAudit 擴充功能

藍/綠部署的邏輯複寫特定限制

PostgreSQL 具有某些與邏輯複寫相關的限制,其會在針對 RDS for PostgreSQL 資料庫執行個體建立藍/綠部署時轉換為限制。

下表描述適用於 RDS for PostgreSQL 藍/綠部署的邏輯複寫限制。如需詳細資訊,請參閱 PostgreSQL 邏輯複寫文件中的限制

限制 說明
資料定義語言 (DDL) 陳述式 (例如 CREATE TABLECREATE SCHEMA) 不會從藍色環境複寫到綠色環境。

如果 Amazon RDS 在藍色環境中偵測到 DDL 變更,則您的綠色資料庫會進入複寫降級狀態。您必須刪除藍/綠部署和所有綠色資料庫,然後重新建立該部署。

序列物件上的 NEXTVAL 作業不會在藍色環境與綠色環境之間同步。

在轉換期間,Amazon RDS 會在綠色環境中遞增序列值,以符合藍色環境中的序列值。如果您有數千個序列,這可能會延遲轉換。

藍色環境中的大型物件不會複寫至綠色環境。這包括現有的大型物件,以及藍/綠部署程序期間任何新建立或修改的大型物件。

如果 Amazon RDS 在藍色環境中偵測到 pg_largeobject 系統資料表中儲存的大型物件建立或修改,則您的綠色資料庫將進入複寫降級狀態。您必須刪除藍/綠部署和所有綠色資料庫,然後重新建立該部署。

具體化視觀表不會在綠色環境中自動重新整理。

在藍色環境中重新整理具體化視觀表不會在綠色環境中重新整理這些視觀表。切換後,您可以使用 REFRESH MATERIALIZED VIEW 命令手動重新整理它們,或排程重新整理。

不允許在沒有主索引鍵的資料表上執行 UPDATE 和 DELETE 作業。

建立藍/綠部署之前,請確定所有資料表都有主索引鍵或使用 REPLICA IDENTITY FULL。不過,只有在REPLICA IDENTITY FULL沒有主要金鑰或唯一金鑰時才能使用 ,因為它會影響複寫效能。如需詳細資訊,請參閱 PostgreSQL 文件

藍/綠部署考量

Amazon RDS 會使用每個資源的 DbiResourceId 追蹤藍/綠部署中的資源。此資源 ID 是資源 AWS 區域的唯一不可變識別符。

資源 ID 與資料庫執行個體 ID 不同。每個都會在 RDS 主控台的資料庫組態中列出。

當您切換藍/綠部署時,資源的名稱 (執行個體 ID) 會變更,但每個資源都保留相同的資源 ID。例如,資料庫執行個體識別符可能是藍色環境中的 mydb。切換後,相同的資料庫執行個體可能重新命名為 mydb-old1。不過,資料庫執行個體的資源 ID 在切換期間不會變更。因此,當您將綠色資源切換為新的生產資源時,其資源 IDs 與先前在生產環境中的藍色資源 IDs 不相符。

切換藍/綠部署之後,請考慮將資源 IDs 更新為新轉換的生產資源,以取得您用於生產資源的整合功能和服務。具體來說,請考慮下列更新:

  • 如果您使用 RDS API 和資源 ID 執行篩選,請在切換後調整用於篩選的資源 ID。

  • 如果您使用 CloudTrail 來稽核資源,請調整 CloudTrail 的取用者,以在切換後追蹤新的資源 ID。如需詳細資訊,請參閱在 中監控 RDS AmazonAPI呼叫 AWS CloudTrail

  • 如果您使用 Performance Insights API,請在切換後調整 API 呼叫中的資源 ID。如需詳細資訊,請參閱在 Amazon RDS 上使用績效詳情監控資料庫負載

    您可以在切換後監控具有相同名稱的資料庫,但其不包含切換前的資料。

  • 如果您在 IAM 政策中使用資源 IDs,請務必視需要新增新轉換資源的資源 IDs。如需詳細資訊,請參閱Amazon RDS 的身分和存取管理

  • 如果您有與資料庫執行個體相關聯的 IAM 角色,請務必在切換後重新建立關聯。連接的角色不會自動複製到綠色環境。

  • 如果您使用 IAM 資料庫身份驗證對資料庫執行個體進行身分驗證,請確定用於資料庫存取的 IAM 政策同時具有政策 Resource 元素下方列出的藍色和綠色資料庫。這是必要的,以便在切換後連線到綠色資料庫。如需詳細資訊,請參閱建立並使用 IAM 政策進行 IAM 資料庫存取

  • 如果您使用 AWS Backup 來管理藍/綠部署中資源的自動備份,請在切換 AWS Backup 後調整 所使用的資源 IDs。如需詳細資訊,請參閱使用 AWS Backup 管理 Amazon 的自動備份 RDS

  • 如果您想要還原屬於藍/綠部署之資料庫執行個體的手動或自動資料庫快照,請確定透過檢查取得快照的時間來還原正確的資料庫快照。如需詳細資訊,請參閱還原至資料庫執行個體

  • 如果您想要描述先前的藍色環境資料庫執行個體自動備份,或將其還原到某個時間點,請將資源 ID 用於操作。

    因為資料庫執行個體的名稱會在切換期間變更,所以您無法將其先前的名稱用於 DescribeDBInstanceAutomatedBackupsRestoreDBInstanceToPointInTime 操作。

    如需詳細資訊,請參閱將資料庫執行個體還原至 Amazon RDS 的指定時間

  • 若您在藍/綠部署的綠色環境中將僅供讀取複本新增至資料庫執行個體,則在切換時,新的僅供讀取複本不會取代藍色環境中的僅供讀取複本。不過,新的僅供讀取複本會在切換後保留在新的生產環境中。

  • 切換後,由於藍色環境中的檢查點在綠色環境中無效,因此 AWS Database Migration Service (AWS DMS) 複寫任務無法繼續。您必須使用新檢查點重新建立 DMS 任務,才能繼續複寫。

  • 在藍/綠部署的綠色環境中刪除資料庫執行個體時,您無法建立新的資料庫執行個體,以在藍/綠部署中取代該執行個體。

    如果您使用與所刪除資料庫執行個體相同的名稱和 Amazon Resource Name (ARN) 建立的新資料庫執行個體,則它具有不同的 DbiResourceId,因此不屬於綠色環境。

    如果您刪除綠色環境中的資料庫執行個體,則會產生下列行為:

    • 如果藍色環境中存在名稱相同的資料庫執行個體,則它不會切換至綠色環境中的資料庫執行個體。此資料庫執行個體不會透過將 -oldn 新增至資料庫執行個體名稱來重新命名。

    • 指向藍色環境中資料庫執行個體的任何應用程式都會在切換後繼續使用相同的資料庫執行個體。

    相同的行為適用於資料庫執行個體和僅供讀取複本。