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

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

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

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

藍/綠部署的限制

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

藍/綠部署的一般限制

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

  • 您無法停止和啟動屬於藍/綠部署一部分的叢集。

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

  • 如果您嘗試在藍色資料庫叢集上強制恢復,則會中斷藍/綠部署並封鎖切換。

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

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

  • 在藍色資料庫叢集上設定的 Auto Scaling 政策不會複製到綠色環境。您必須在切換後重新設定它們,無論它們最初是在藍色或綠色環境中設定。

  • 您無法將未加密的資料庫叢集變更為加密的資料庫叢集。此外,您無法將加密的資料庫叢集變更為未加密的資料庫叢集

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

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

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

    • Amazon RDS Proxy

    • 跨區域僅供讀取複本

    • Aurora Serverless v1 資料庫叢集

    • 屬於 Aurora 全域資料庫的資料庫叢集。

    • AWS CloudFormation

藍/綠部署的 Aurora MySQL 限制

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

  • 來源資料庫叢集不能包含任何名為 的資料庫tmp。具有此名稱的資料庫不會複製到綠色環境。

  • 藍色資料庫叢集不能是外部 binlog 複本。

  • 如果已啟用恢復的來源資料庫叢集,則會在不恢復支援的情況下建立綠色資料庫叢集。這是因為恢復不適用於二進位日誌 (binlog) 複寫,這是藍/綠部署的必要項目。如需詳細資訊,請參閱恢復 Aurora 資料庫叢集

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

的藍/綠部署的 Aurora PostgreSQL 限制

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

  • 除非藍色資料庫叢集上的 參數設為 ,否則未記錄的資料表不會複寫至綠色環境。 rds.logically_replicate_unlogged_tables 1 請勿在建立藍/綠部署後修改此參數值,以避免未記錄資料表上可能的複寫錯誤

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

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

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

  • Babelfish for Aurora PostgreSQL 僅支援藍/綠部署 15.7 版和更新的 15 版,以及 16.3 版和更新的 16 版。

  • 如果想要在 Aurora 複本中擷取執行計劃,您必須在呼叫 apg_plan_mgmt.create_replica_plan_capture 函數時提供藍色資料庫叢集端點。這可確保計劃擷取在轉換之後繼續運作。如需詳細資訊,請參閱擷取複本中的 Aurora PostgreSQL 執行計畫

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

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

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

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

    • apg_plan_mgmt 延伸模組必須在所有綠色資料庫上將 apg_plan_mgmt.capture_plan_baselines 參數設定為 off,以避免在藍色環境中擷取相同的計劃時,發生主索引鍵衝突。如需詳細資訊,請參閱Aurora PostgreSQL 查詢計劃管理的概觀

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

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

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

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

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

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

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

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

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

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

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

重新整理具體化視觀表會中斷複寫。

在藍色環境中重新整理具體化視觀表會將複寫分解為綠色環境。避免在藍色環境中重新整理具體化視觀表。切換後,您可以使用 REFRESH MATERIALIZED VIEW 命令手動重新整理它們,或排程重新整理。

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

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

藍/綠部署考量

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

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

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

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

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

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

  • 如果您針對藍色環境中的資源使用資料庫活動串流,請調整您的應用程式,以在切換後監控新串流的資料庫事件。如需詳細資訊,請參閱資料庫活動串流支援的區域和 Aurora 資料庫引擎

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

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

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

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

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

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

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

  • Amazon Aurora 在藍色環境中複製基礎 Aurora 儲存磁碟區,進而建立綠色環境。綠色叢集磁碟區只會儲存對綠色環境所做的增量變更。若您刪除藍色環境中的資料庫叢集,綠色環境中的基礎 Aurora 儲存磁碟區大小會增加到完整大小。如需詳細資訊,請參閱複製 Amazon Aurora 資料庫叢集的一個磁碟區

  • 若您在藍/綠部署的綠色環境中將資料庫執行個體新增至資料庫叢集,則在切換時,新的資料庫執行個體不會取代藍色環境中的資料庫執行個體。不過,新的資料庫執行個體會保留在資料庫叢集中,並在新的生產環境中成為資料庫執行個體。

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

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

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

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

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