跳至內容

如何解決在 Amazon RDS for PostgreSQL 和 Aurora PostgreSQL 相容版中建立藍/綠部署時發生的錯誤?

2 分的閱讀內容
0

我想解決在 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 和 Amazon Aurora PostgreSQL 相容版本中建立藍/綠部署時發生的錯誤。

解決方法

檢閱藍/綠部署的限制並找出您的錯誤

檢閱 Amazon RDSAurora PostgreSQL 相容版的藍/綠部署限制。

若要找出部署的特定錯誤訊息,請完成以下步驟:

  1. 開啟 Amazon RDS console (Amazon RDS 主控台)。
  2. 在導覽窗格中,選擇 Databases (資料庫)。
  3. 選取您的藍/綠部署。
  4. 選擇 Logs & events (日誌和事件) 索引標籤。
  5. 檢閱日誌中的錯誤訊息。

解決邏輯複寫組態錯誤

如果您建立藍/綠部署但未啟用邏輯複寫,那麼您會收到以下錯誤訊息:

「Blue/Green Deployments require a DB instance with logical replication enabled.Before you create a Blue/Green Deployment for a DB instance, associate the DB instance with a custom DB instance parameter group that enables logical replication.」

若要啟用邏輯複寫,請完成以下步驟:

  1. 建立自訂參數群組修改現有群組
  2. rds.logical_replication 參數設為 1。
  3. 將自訂參數群組套用到資料庫執行個體。

**注意:**您無法修改預設參數群組值。

解決不相容的複寫參數

如果您建立藍/綠部署時,複寫插槽不足以對應資料庫數量,那麼您會收到以下錯誤訊息:

「Creation of blue/green deployment failed due to incompatible parameter(s): max_replication_slots, and max_logical_replication_workers.」

若要解決此問題,請完成以下步驟:

  1. 執行以下查詢以檢視資料庫清單:

    SELECT datname FROM pg_database;
  2. 修改自訂參數群組中的以下參數:
    max_replication_slots 設為高於資料庫總數的值。
    max_wal_sendersmax_logical_replication_workers 設為等於使用中邏輯複寫插槽數的值。
    max_worker_processes 設為 max_logical_replication_workersautovacuum_max_workersmax_parallel_workers 總和的值。

  3. 建立新的藍/綠部署

解決外部複寫插槽錯誤

如果您在存在外部複寫插槽時建立藍/綠部署,那麼您會收到以下錯誤訊息:

「Replica creation is canceled due to external replication.」

若要解決此問題,請完成以下步驟:

  1. 執行以下命令以檢查現有的複寫插槽:

    SELECT * FROM pg_replication_slots WHERE slot_type NOT LIKE 'physical';
  2. 執行以下命令以刪除已識別的插槽:

    SELECT pg_drop_replication_slot(slot_name);

    **注意:**將 slot_name 替換為複寫插槽的名稱。

解決部署後發生的 DDL 變更

如果您在建立藍/綠部署後變更資料定義語言 (DDL) 或修改大型物件,則會收到以下錯誤訊息:

「DDL changes aren't supported for blue/green deployments.These changes aren't replicated from the blue environment to the green environment, and switchover will be blocked.Your green databases now have a status of REPLICATION_DEGRADED.Delete and recreate your blue/green deployment and avoid future DDL changes.」

若要解決此問題,請刪除藍/綠部署。然後,建立新的藍/綠部署

部署後,請勿變更藍色環境中的 DDL 和大型物件。

解決資料表主索引鍵錯誤

如果您更新或刪除不具主索引鍵之資料表中的記錄,那麼您會收到以下錯誤訊息:

「Logical replication target relation 'public.image_audit' has neither REPLICA IDENTITY index nor PRIMARY KEY and published relation does not have REPLICA IDENTITY FULL」

若要解決此問題,請為需要更新或刪除的資料表新增主索引鍵。然後,執行以下命令以設定 REPLICA IDENTITY FULL

ALTER TABLE table_name REPLICA IDENTITY FULL;

**注意:**將 table_name 替換為您的資料表名稱。

解決 PG_CRON 擴充功能衝突

如果您在部署中使用 pg_cron 擴充功能,那麼您可能會收到以下錯誤訊息:

「role 'rdsrepladmin' cannot SET ROLE to 'rds_superuser'」

由於 pg_cron 擴充功能的背景工作程序會以超級使用者身分執行並略過唯讀設定,因此可能會發生複寫衝突。

若要解決此問題,請在建立藍/綠部署後,在所有綠色資料庫上關閉 pg_cron 擴充功能。在整個部署期間,請讓該擴充功能維持關閉。