本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
以下是藍/綠部署的最佳實務。
藍/綠部署的一般最佳實務
建立藍/綠部署時,請考慮下列一般最佳實務。
-
切換前,請在綠色環境中徹底測試資料庫執行個體。
-
在綠色環境中將您的資料庫保留唯讀狀態。建議您在綠色環境上小心啟用寫入操作,因為它們可能會在綠色環境中造成複寫衝突。它們也可能會在切換後於生產資料庫中產生非預期的資料。
-
使用藍/綠部署實作結構描述變更時,請僅進行複寫相容的變更。
例如,您可以在資料表結尾新增資料欄,而不會中斷從藍色部署到綠色部署的複寫。不過,結構描述變更 (例如重新命名資料欄或重新命名資料表) 會中斷綠色部署的複寫。
如需有關複寫相容變更的詳細資訊,請參閱 MySQL 文件中的在來源和複本上使用不同的資料表定義進行複寫
,以及 PostgreSQL 邏輯複寫文件中的限制 。 注意
此限制不適用於使用實體複寫的 RDS for PostgreSQL 藍/綠部署。如需詳細資訊,請參閱具有實體複寫的藍/綠部署 RDS for PostgreSQL 限制。
-
建立藍/綠部署之後,如有必要,請處理延遲載入。在切換之前,請確定資料載入完成。如需詳細資訊,請參閱藍/綠部署的延遲載入和儲存初始化。
-
當您切換藍/綠部署時,請遵循切換最佳實務。如需詳細資訊,請參閱切換最佳實務。
RDS for MySQL 藍/綠部署最佳實務
當您從 RDS for MySQL 資料庫執行個體建立藍/綠部署時,請考慮下列最佳實務。
-
避免使用未針對複寫最佳化的非交易式儲存引擎,例如 MyISAM。
-
最佳化僅供讀取複本和用於二進位日誌複寫的綠色環境。如果資料庫引擎支援,請啟用 GTID、平行和防撞複寫,以確保資料一致性和耐用性,然後再建立藍/綠部署。如需詳細資訊,請參閱使用 GTID型複寫。
-
如果綠色環境發生複本延遲,請考慮下列事項:
-
暫時將綠色資料庫
innodb_flush_log_at_trx_commit
參數群組中的 參數設為 1。複寫追上後,在切換之前還原到預設值。如果臨時參數值發生意外關機或當機,請重建綠色環境,以避免未偵測到的資料損毀。 -
為了減少寫入延遲並改善複寫輸送量,請將綠色多可用區域資料庫執行個體暫時變更為單一可用區域資料庫執行個體。在切換之前重新啟用異地同步備份。
-
RDS for PostgreSQL 藍/綠部署最佳實務
當您從 RDS for PostgreSQL 資料庫執行個體建立藍/綠部署時,請考慮下列最佳實務。
主題
RDS for PostgreSQL 藍/綠部署的一般最佳實務
當您從 RDS for PostgreSQL 資料庫執行個體建立藍/綠部署時,請考慮下列一般最佳實務。
-
建立藍/綠部署之前,請先將所有 PostgreSQL 延伸模組更新至最新版本。如需詳細資訊,請參閱在 中升級 PostgreSQL 資料庫RDS的 PostgreSQL 延伸模組。
-
長時間執行的交易可能會導致嚴重的複本延遲。若要減少複本延遲,請考慮執行下列動作:
-
減少長時間執行的交易,這些交易可能會延遲到綠色環境趕上藍色環境之後。
-
減少藍色環境的大量操作,直到綠色環境趕上藍色環境。
-
在建立藍/綠部署之前,對忙碌資料表啟動手動清空凍結操作。
-
對於 PostgreSQL 第 12 版及更新版本,請停用大型或忙碌資料表上的
index_cleanup
參數,以增加藍色資料庫的正常維護速率。如需詳細資訊,請參閱盡快清空資料表。注意
在清空期間定期略過索引清除可能會導致索引膨脹,這可能會降低掃描效能。最佳實務是,只有在使用藍/綠部署時,才使用此方法。一旦部署完成,我們建議繼續定期索引維護和清除。
-
-
慢速複寫可能會導致寄件者和接收者經常重新啟動,進而延遲同步。若要確保它們保持作用中狀態,請在
0
藍色環境中將wal_sender_timeout
參數設定為 ,並在綠色0
環境中將wal_receiver_timeout
參數設定為 ,以停用逾時。 -
若要防止從藍色環境移除預先寫入日誌 (WAL) 區段,請將 PostgreSQL 第 13 版及更低版本的
wal_keep_segments
參數設定為 15625。對於 14 版和更新版本,如果有足夠的可用儲存空間,請將wal_keep_size
參數設定為 1 TiB。
具有實體複寫的藍/綠部署 RDS for PostgreSQL 最佳實務
透過實體複寫,Amazon RDS 會建立來源資料庫執行個體的僅供讀取複本。如需相關參數、監控、調校和故障診斷,請參閱使用 Amazon RDS for PostgreSQL 的僅供讀取複本。
如需藍/綠部署何時使用實體複寫而非邏輯複寫的說明,請參閱藍/綠部署的 PostgreSQL 複寫方法。
具有邏輯複寫的藍/綠部署 RDS for PostgreSQL 最佳實務
當您建立使用邏輯複寫的藍/綠部署時,請考慮下列最佳實務。如需藍/綠部署何時使用邏輯複寫而非實體複寫的說明,請參閱 藍/綠部署的 PostgreSQL 複寫方法。
-
如果您的資料庫有足夠的可用記憶體,請增加藍色環境中
logical_decoding_work_mem
資料庫參數的值。這樣做允許減少磁碟上的解碼,並改用記憶體。如需詳細資訊,請參閱 PostgreSQL 文件。 -
您可以使用
ReplicationSlotDiskUsage
CloudWatch 指標監控寫入磁碟的交易溢位。此指標提供複寫槽磁碟用量的洞見,有助於識別交易資料何時超過記憶體容量並存放在磁碟上。您可以使用FreeableMemory
CloudWatch 指標來監控可用記憶體。如需詳細資訊,請參閱Amazon RDS 的 Amazon CloudWatch 執行個體層級指標。 -
在 RDS for PostgreSQL 第 14 版及更新版本中,您可以使用
pg_stat_replication_slots
系統檢視來監控邏輯溢位檔案的大小。
-
-
如果您使用的是
aws_s3
延伸模組,請在建立綠色環境後,透過 IAM 角色授予綠色資料庫執行個體對 Amazon S3 的存取權。這允許匯入和匯出命令在轉換之後繼續運作。如需說明,請參閱 設定對 Amazon S3 儲存貯體的存取權。 -
檢閱 UPDATE 和 DELETE 陳述式的效能,並評估在 WHERE 子句中使用的資料欄上建立索引是否可以最佳化這些查詢。這可以在綠色環境中重新播放操作時增強效能。
-
如果您使用的是觸發條件,請確定它們不會干擾名稱開頭為 'rds' 之
pg_catalog.pg_publication
、 和pg_catalog.pg_replication_slots
物件的建立pg_catalog.pg_subscription
、更新和捨棄。 -
如果您為綠色環境指定較高的引擎版本,請在所有資料庫上執行
ANALYZE
操作以重新整理pg_statistic
資料表。主要版本升級期間不會傳輸最佳化工具統計資料,因此您必須重新產生所有統計資料,以避免效能問題。如需主要版本升級期間的其他最佳實務,請參閱如何為 RDS for Postgre 執行主要版本升級SQL。 -
如果觸發在來源上使用來操作資料,
ENABLE ALWAYS
請避免將觸發設定為ENABLE REPLICA
或 。否則,複寫系統會傳播變更並執行觸發,這會導致重複。