

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

# Amazon Aurora 藍/綠部署的限制和考量事項
<a name="blue-green-deployments-considerations"></a>

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

**Topics**
+ [藍/綠部署的限制](#blue-green-deployments-limitations)
+ [藍/綠部署的 Aurora Global Database 限制](#blue-green-deployments-limitations-agd)
+ [藍/綠部署考量](#blue-green-deployments-consider)

## 藍/綠部署的限制
<a name="blue-green-deployments-limitations"></a>

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

**Topics**
+ [藍/綠部署的一般限制](#blue-green-deployments-limitations-general)
+ [藍/綠部署的 Aurora MySQL 限制](#blue-green-deployments-limitations-mysql)
+ [Aurora PostgreSQL 藍/綠部署限制](#blue-green-deployments-limitations-postgres-logical)

### 藍/綠部署的一般限制
<a name="blue-green-deployments-limitations-general"></a>

下列一般限制適用於藍/綠部署：
+ 您無法停止和啟動屬於藍/綠部署一部分的叢集。
+ 藍/綠部署不支援使用 AWS Secrets Manager管理主要使用者密碼。
+ 如果您嘗試在藍色資料庫叢集強制執行恢復，則藍/綠部署會中斷，而轉換會遭到封鎖。
+ 在切換期間，藍色和綠色環境無法與 Amazon Redshift 進行零 ETL 整合。您必須先刪除整合再進行切換，然後重新建立整合。
+ 建立藍/綠部署時，必須在綠色環境上停用事件排程器 (`event_scheduler` 參數)。這樣可以防止在綠色環境中產生事件並導致不一致。
+ 在藍色資料庫叢集設定的自動擴展政策不會複製到綠色環境。您必須在轉換後進行重新設定，無論這些政策最初是在藍色或綠色環境中設定。
+ 您無法將未加密的資料庫叢集變更為加密的資料庫叢集。此外，您無法將加密的資料庫叢集變更為未加密的資料庫叢集。
+ 您無法將藍色資料庫叢集變更為高於其對應綠色資料庫叢集的引擎版本。
+ 藍色環境和綠色環境中的資源必須在同一 AWS 帳戶中。
+ 下列功能不支援藍/綠部署：
  + Amazon RDS Proxy
  + 跨區域僅供讀取複本
  + Aurora Serverless v1 資料庫叢集
  + CloudFormation

### 藍/綠部署的 Aurora MySQL 限制
<a name="blue-green-deployments-limitations-mysql"></a>

下列限制適用於 Aurora MySQL 藍/綠部署：
+ 來源資料庫叢集不能包含任何名為 `tmp` 的資料庫。具有此名稱的資料庫不會複製到綠色環境。
+ 藍色資料庫叢集不能是外部 binlog 複本。
+ 如果是已啟用恢復的來源資料庫叢集，則會在沒有恢復支援的情況下建立綠色資料庫叢集。這是因為恢復不適用於二進位日誌 (binlog) 複寫，但藍/綠部署需要此功能。如需詳細資訊，請參閱[恢復 Aurora 資料庫叢集](AuroraMySQL.Managing.Backtrack.md)。
+ 藍/綠部署不支援 AWS JDBC Driver for MySQL。如需詳細資訊，請參閱在 GitHub 的[已知限制](https://github.com/awslabs/aws-mysql-jdbc?tab=readme-ov-file#known-limitations)。

### Aurora PostgreSQL 藍/綠部署限制
<a name="blue-green-deployments-limitations-postgres-logical"></a>

下列限制適用於 Aurora PostgreSQL 藍/綠部署 ()。。
+ 除非在藍色資料庫叢集上將 `rds.logically_replicate_unlogged_tables` 參數設定為 `1`，否則不會將[未記錄的](https://www.postgresql.org/docs/16/sql-createtable.html#SQL-CREATETABLE-UNLOGGED)資料表複寫到綠色環境。在建立藍/綠部署之後不要修改此參數值，以避免可能在未記錄的資料表發生複寫錯誤。
+ 藍色資料庫叢集不能是邏輯來源 (發布者) 或複本 (訂閱用戶)。
+ 如果藍色資料庫叢集設定為外部資料包裝函式 (FDW) 延伸模組的外部伺服器，您必須使用叢集端點名稱，而非 IP 位址。這可讓組態在轉換之後保持運作狀態。
+ 在藍/綠部署中，每個資料庫都需要邏輯複寫槽。隨著資料庫數量的增加，資源負荷會增加，並可能導致複寫延遲，特別是當資料庫叢集未充分擴展時。此影響取決於資料庫工作負載和連線數量等因素。若要緩解此問題，請考慮擴展資料庫執行個體類別，或減少來源叢集的資料庫數目。
+ 針對 15.7 版和更新的 15 版，以及 16.3 版和更新的 16 版，僅支援Babelfish for Aurora PostgreSQL 的藍/綠部署。
+ 如果想要在 Aurora 複本中擷取執行計劃，您必須在呼叫 `apg_plan_mgmt.create_replica_plan_capture` 函數時提供藍色資料庫叢集端點。這可確保計劃擷取在轉換之後繼續運作。如需詳細資訊，請參閱[擷取複本中的 Aurora PostgreSQL 執行計畫](AuroraPostgreSQL.QPM.Plancapturereplicas.md)。
+ 在綠色環境中邏輯複寫[套用程序](https://www.postgresql.org/docs/current/logical-replication-architecture.html)為單執行緒。如果藍色環境產生大量寫入流量，則綠色環境可能無法跟上進度。這可能會導致複寫延遲或失敗，對於產生持續高寫入輸送量的工作負載尤其如此。請務必徹底測試工作負載。對於需要主要版本升級和處理大量寫入工作負載的案例，請考慮使用 [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/data-migrations.html) 或[自我管理邏輯複寫](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.MajorVersionUpgrade.html)等替代方法。
+ 在 Aurora 的藍/綠部署期間，不支援在分割資料表建立新的分割區。建立新的分割區涉及資料定義語言 (DDL) 操作 (例如 `CREATE TABLE`)，系統不會將這些操作從藍色環境複寫到綠色環境。不過，系統會將現有的分割資料表及其資料複寫至綠色環境。
+ 下列限制適用於 PostgreSQL 延伸模組：
  + 建立藍/綠部署時，必須在藍色環境中停用 `pg_partman` 延伸模組。延伸模組會執行 DDL 作業 (例如 `CREATE TABLE`)，其會中斷從藍色環境到綠色環境的邏輯複寫。
  + 建立藍/綠部署之後，所有綠色資料庫上的 `pg_cron` 延伸模組必須保持停用狀態。延伸模組具有以超級使用者身分執行的背景工作者，且會略過綠色環境的唯讀設定，這可能會造成複寫衝突。
  + `apg_plan_mgmt` 延伸模組必須在所有綠色資料庫上將 `apg_plan_mgmt.capture_plan_baselines` 參數設定為 `off`，以避免在藍色環境中擷取相同的計劃時，發生主索引鍵衝突。如需詳細資訊，請參閱[Aurora PostgreSQL 查詢計劃管理的概觀](AuroraPostgreSQL.Optimize.overview.md)。
  + 建立藍/綠部署時，必須在藍色環境上停用 `pglogical` 和 `pgactive` 延伸模組。將綠色環境切換為新的生產環境之後，您可以再次啟用延伸模組。此外，藍色資料庫不能是外部執行個體的邏輯訂閱者。
  + 如果您使用的是 `pgAudit` 延伸模組，其必須保留在藍色和綠色資料庫執行個體的自訂資料庫參數群組上的共用程式庫 (`shared_preload_libraries`) 中。如需詳細資訊，請參閱[設定 pgAudit 擴充功能](Appendix.PostgreSQL.CommonDBATasks.pgaudit.basic-setup.md)。

#### 藍/綠部署的邏輯複寫特定限制
<a name="blue-green-deployments-limitations-postgres"></a>

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

下表描述適用於 Aurora PostgreSQL 藍/綠部署的邏輯複寫限制。如需詳細資訊，請參閱 PostgreSQL 邏輯複寫文件中的[限制](https://www.postgresql.org/docs/current/logical-replication-restrictions.html)。


| 限制 | 說明 | 
| --- | --- | 
| 資料定義語言 (DDL) 陳述式 (例如 CREATE TABLE 和 CREATE SCHEMA) 不會從藍色環境複寫到綠色環境。 |  如果 Aurora 在藍色環境中偵測到 DDL 變更，則您的綠色資料庫會進入**複寫降級**狀態。您必須刪除藍/綠部署和所有綠色資料庫，然後重新建立該部署。  | 
| 系統不會將資料控制語言 (DCL) 陳述式 (例如 GRANT 和 REVOKE) 從藍色環境複寫到綠色環境。 |  如果 Aurora 偵測到有人嘗試在藍色環境中執行 DCL 陳述式，您將看到警告訊息。沒有可供變更此行為的組態或 API，因為其是藍/綠部署程序的限制。  | 
| 序列物件上的 NEXTVAL 作業不會在藍色環境與綠色環境之間同步。 |  在轉換期間，Aurora 會在綠色環境中遞增序列值，以符合藍色環境中的序列值。如果您有數千個序列，這可能會延遲轉換。  | 
| 藍色環境中的大型物件不會複寫到綠色環境。這包括現有的大型物件，以及藍/綠部署程序期間任何新建或修改的大型物件。 |  如果 Aurora 在藍色環境中偵測到 `pg_largeobject` 系統資料表中儲存的大型物件建立或修改，則您的綠色資料庫將進入**複寫降級**狀態。您必須刪除藍/綠部署和所有綠色資料庫，然後重新建立該部署。  | 
|  重新整理具體化視觀表會中斷複寫。  |  在藍色環境中重新整理具體化視觀表會中斷在綠色環境中的複寫。避免在藍色環境中重新整理具體化視觀表。轉換後，您可以使用 [REFRESH MATERIALIZED VIEW](https://www.postgresql.org/docs/current/sql-refreshmaterializedview.html) 命令手動重新整理，或安排重新整理。  | 
|  不允許在沒有主索引鍵的資料表上執行 UPDATE 和 DELETE 作業。  |  在建立藍/綠部署之前，請確定所有資料表都有主索引鍵或使用 `REPLICA IDENTITY FULL`。不過，只有在不存在主索引鍵或唯一索引鍵時才能使用 `REPLICA IDENTITY FULL`，因為其會影響複寫效能。如需詳細資訊，請參閱 [PostgreSQL 文件](https://www.postgresql.org/docs/current/logical-replication-restrictions.html)。  | 

## 藍/綠部署的 Aurora Global Database 限制
<a name="blue-green-deployments-limitations-agd"></a>

除了上述一般和引擎特定限制之外，下列限制適用於 Aurora Global Database 的藍/綠部署：
+ 所有操作都必須從與全球資料庫寫入器叢集相同的區域啟動。
+ 執行全域切換或全域容錯移轉會導致作用中的藍/綠部署失效。藍綠部署需要從新的主要區域刪除並重新建立。
+ 對於 Aurora PostgreSQL，如果您已在生產環境中啟用全域寫入轉送並建立藍/綠部署，則會在綠色叢集上停用寫入轉送。只有在綠色環境成為新的生產環境時，才會在藍/綠切換之後，才會在綠色環境中啟用。切換後，會在`-old1`叢集上停用寫入轉送。
+ 在建立藍/綠部署之後修改全域資料庫的拓撲，會導致作用中的藍/綠部署失效。藍綠部署必須從新的主要區域刪除並重新建立。
+ 自動化快照會根據最初在舊藍色環境中設定的備份保留天數進行保留。舊藍叢集的自動快照不會複製到綠色。
+ 在藍/綠轉換期間支援全域容錯移轉，但在藍/綠轉換期間不支援全域轉換。
+ 確保綠色環境的資料庫叢集和資料庫參數群組存在於名稱相同的所有次要區域中。如果任何區域中的參數群組無法使用，則會使用區域中的預設參數群組。
+ 在藍/綠部署切換期間，避免在任何全域資料庫成員上使用 RDS Proxy。

## 藍/綠部署考量
<a name="blue-green-deployments-consider"></a>

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

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

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

在切換藍/綠部署之後，請考慮將資源 ID 更新為新轉換之生產資源的 ID，以取得與生產資源搭配使用的整合功能和服務。具體來說，請考慮下列更新：
+ 如果您使用 RDS API 和資源 ID 執行篩選，請在切換後調整用於篩選的資源 ID。
+ 如果您使用 CloudTrail 來稽核資源，請調整 CloudTrail 的取用者，以在切換後追蹤新的資源 ID。如需詳細資訊，請參閱[在 AWS CloudTrail 中監控 Amazon Aurora API 呼叫](logging-using-cloudtrail.md)。
+ 如果您針對藍色環境中的資源使用資料庫活動串流，請調整您的應用程式，以在切換後監控新串流的資料庫事件。如需詳細資訊，請參閱[資料庫活動串流的支援區域和 Aurora 資料庫引擎](Concepts.Aurora_Fea_Regions_DB-eng.Feature.DBActivityStreams.md)。
+ 如果您使用 Performance Insights API，請在切換後調整 API 呼叫中的資源 ID。如需詳細資訊，請參閱[在 Amazon Aurora 上使用績效詳情監控資料庫負載](USER_PerfInsights.md)。

  您可以在切換後監控具有相同名稱的資料庫，但其不包含切換前的資料。
+ 如果您在 IAM 政策中使用資源 ID，請務必在必要時新增新轉換資源的資源 ID。如需詳細資訊，請參閱[Amazon Aurora 的 Identity and access management](UsingWithRDS.IAM.md)。
+ 如果您有與資料庫叢集相關聯的 IAM 角色，請務必在轉換後重新建立關聯。連接的角色不會自動複製到綠色環境。
+ 如果您使用 [IAM 資料庫身份驗證](UsingWithRDS.IAMDBAuth.md)對資料庫叢集進行身分驗證，請確定用於資料庫存取的 IAM 政策同時具有政策 `Resource` 元素下方列出的藍色和綠色資料庫。這是必要的，以便在切換後連線到綠色資料庫。如需詳細資訊，請參閱[建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)。
+ 如果您想要還原屬於藍/綠部署之資料庫叢集的手動資料庫叢集快照，請確定透過檢查取得快照的時間來還原正確的資料庫叢集快照。如需詳細資訊，請參閱[從資料庫叢集快照還原](aurora-restore-snapshot.md)。
+ 切換後，由於藍色環境的檢查點在綠色環境中無效，因此 AWS Database Migration Service (AWS DMS) 複寫任務無法繼續。您必須使用新檢查點重新建立 DMS 任務，才能繼續複寫。
+ Amazon Aurora 在藍色環境中*複製*基礎 Aurora 儲存磁碟區，進而建立綠色環境。綠色叢集磁碟區只會儲存對綠色環境所做的增量變更。若您刪除藍色環境中的資料庫叢集，綠色環境中的基礎 Aurora 儲存磁碟區大小會增加到完整大小。如需詳細資訊，請參閱[複製 Amazon Aurora 資料庫叢集的一個磁碟區](Aurora.Managing.Clone.md)。
+ 若您在藍/綠部署的綠色環境中將資料庫執行個體新增至資料庫叢集，則在切換時，新的資料庫執行個體不會取代藍色環境中的資料庫執行個體。不過，新的資料庫執行個體會保留在資料庫叢集中，並在新的生產環境中成為資料庫執行個體。
+ 在藍/綠部署的綠色環境中刪除資料庫叢集中的資料庫執行個體時，您無法建立新的資料庫執行個體，以在藍/綠部署中取代該執行個體。

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

  如果您在綠色環境中刪除資料庫叢集中的資料庫執行個體，則會產生下列行為：
  + 如果藍色環境中存在名稱相同的資料庫執行個體，則它不會切換至綠色環境中的資料庫執行個體。此資料庫執行個體不會透過將 `-oldn` 附加至資料庫執行個體名稱來重新命名。
  + 指向藍色環境中資料庫執行個體的任何應用程式都會在切換後繼續使用相同的資料庫執行個體。
+ 如果您使用資源標籤進行存取控制或操作管理，則需要了解在切換之前，藍色和綠色環境之間不會同步標籤變更。當您建立藍/綠部署時，藍環境的標籤會複製到綠色環境。建立之後，您對任一環境所做的任何標籤修改都不會自動同步。在切換期間，藍色環境標籤會取代綠色環境中的所有標籤。在建立藍/綠部署之前，請將所有必要的標籤套用至藍環境，或在切換後將必要的標籤重新套用至新的生產環境。如需標籤的詳細資訊，請參閱[標記 Amazon Aurora 和 Amazon RDS 資源](USER_Tagging.md)。