全部產品
Search
文件中心

ApsaraDB RDS:藍綠部署

更新時間:Dec 05, 2025

藍綠部署是一種通過冗餘部署實現服務版本升級的策略,其基於現有的生產環境(藍色環境)複製出一套即時同步的測試環境(綠色環境),以用於測試與灰階驗證。通過調整虛擬IP與真實節點之間的映射關係,實現生產環境與測試環境的快速切換,應用側無需改造,最大限度地減少服務停機時間,並提供快速復原的能力。

重要

藍綠部署當前僅對白名單使用者開放,如需使用,請提交工單

功能簡介

什麼是藍綠部署

藍綠部署會建立兩套完全相同的部署環境(藍色環境和綠色環境),分別對應舊版本(藍色環境)和新版本(綠色環境)。藍色環境對外提供服務,綠色環境用於升級前的測試,通過DTS雙向資料同步鏈路,綠色環境與藍色環境保持同步。在藍綠部署中,綠色執行個體的規格與藍色執行個體保持一致。

  • 藍色環境:生產環境,當前正在對外提供服務的環境,可讀寫。

  • 綠色環境:測試環境,唯讀。

藍綠部署通過將流量從當前生產環境(藍色環境)轉寄至測試環境(綠色環境),使您能夠在真實環境中驗證最新版本的功能和效能。藉助藍綠部署,您可以快速發現潛在缺陷,最佳化資料庫效能,並在短暫且可控的停機時間內引入更新的資料庫功能。

此外,藍綠部署具備復原能力,確保在出現問題時能夠迅速恢複到變更前版本,從而為系統升級提供更高的可靠性與靈活性。這顯著降低了資料庫版本升級的風險,最大限度地減少了對業務的影響。

適用情境

藍綠部署的典型適用情境是資料庫大版本和小版本升級,升級流程如下:

  1. 新版本部署:

    • 建立綠色環境,資料庫版本選擇新版本。此時綠色環境作為測試環境,不對外提供服務。

    • 可以在綠色環境中進行充分的功能測試和效能驗證,確保新版本的穩定性。

  2. 切換藍色環境和綠色環境:

    • 當新版本驗證無誤後,切換藍色環境和綠色環境。

    • 通過調整虛擬IP與真實節點之間的映射關係實現切換,在切換前後,藍色環境中的執行個體ID和IP地址將保持不變,操作簡單且迅速。

  3. 監控與復原:

    • 如果新版本上線後出現嚴重問題,可立即切換回舊版本,恢複舊版本的服務。

    • 復原過程非常迅速,能夠顯著縮短故障恢復。

  4. 問題修複與重新部署:

    • 在修複新版本的問題後,可以將其重新部署到綠色環境中,並再次進行驗證。

    • 待驗證通過後,再次切換藍色環境和綠色環境。

優勢

  • 零停機發布:通過流量切換的方式實現版本升級,生產環境中的執行個體ID和IP地址將保持不變,應用側無需進行改造即可實現串連保持。

  • 快速復原:如果新版本出現問題,只需切回舊版本即可,無需重新部署或修複。

  • 資源隔離:新版本和舊版本運行在獨立的環境中,彼此隔離,避免相互幹擾。

  • 高可用性:冗餘部署確保了即使在流量切換過程中,也有足夠的資源處理請求。

前提條件

建立藍綠部署時,藍色執行個體(生產環境執行個體)需滿足以下條件:

計費說明

  • 藍色執行個體費用:建立藍綠部署時,會指定一個存量執行個體作為藍色執行個體(生產環境執行個體),該執行個體正常計費(與藍綠部署前保持一致)。

  • 綠色執行個體費用:建立藍綠部署時,會建立一個綠色執行個體,該執行個體隨用隨付計費規則與標準隨用隨付執行個體一致。

重要
  • 自2025年8月1日起,通過藍綠部署建立的綠色執行個體,自建立之時起15天內免費,超過15天后隨用隨付。相關優惠活動截止時間待定(另行通知)。

  • 綠色執行個體支援將計費方式轉換為包年或包月,但只有處於隨用隨付模式時,才可以享受自建立之時起15天內免費的優惠活動。計費方式轉換為訂用帳戶後,自轉換時刻起,將開始按照訂用帳戶的執行個體進行收費。

注意事項

  • 建立藍綠部署後,藍綠執行個體均不支援以下操作:

  • 建立藍綠部署後,如果DTS鏈路被刪除,將導致無法切換藍綠部署。在此情況下,需要首先刪除藍綠部署,然後再進行重新建立。

  • 如果藍色執行個體的Binlog被下遊系統(如DTS、Flink等)消費,由於藍綠執行個體的GTID Set不一致,會導致下遊Binlog同步中斷,不建議使用藍綠部署。

  • 通過藍綠部署升級資料庫大版本時,當前支援:

    • MySQL 5.6升級至MySQL 5.7。

    • MySQL 5.6升級至MySQL 8.0。

    • MySQL 5.7升級至MySQL 8.0。

建立藍綠部署

在建立藍綠部署時,您需要指定一個來源資料庫執行個體作為生產環境中的資料庫執行個體,構成藍色環境的核心部分。

  1. 訪問RDS執行個體列表,選擇地區並單擊目標執行個體ID,該執行個體將成為藍綠部署中的藍色執行個體。

  2. 在左側導覽列,選擇藍綠部署並單擊左上方建立藍綠部署

  3. 選擇綠色執行個體(測試環境)的大版本

  4. 單擊前往授權確定,完成SLR授權。

  5. 選擇綠色執行個體的小版本後,單擊建立

  6. 藍綠部署配置確認彈窗中,單擊確定

切換藍綠部署

重要

切換藍綠部署的過程中,高效能本地碟執行個體會有一次閃斷,高效能雲端硬碟執行個體會有兩次閃斷,建議您在低峰期操作並確保應用具有重連機制。

  1. 確認切換條件:切換藍綠部署前,藍綠執行個體均需滿足以下要求:

    • 執行個體狀態為運行中。

    • 不存在唯讀執行個體。

    • 未開通資料庫代理。

    • 資料庫數量一致且對應。

    • 帳號數量一致且對應。

    • DTS同步延遲小於5秒。

  2. 切換藍綠部署:

    1. 訪問RDS執行個體列表,選擇地區並單擊藍色執行個體ID。

    2. 在左側導覽列,選擇藍綠部署並單擊藍綠部署同步資訊地區的切換

    3. 確認資訊,設定切換時間並單擊確定,系統將對藍綠色執行個體的狀態及配置進行檢查。

      • 如未滿足切換條件,請根據檢查結果進行相應處理後再執行切換操作。

      • 如滿足切換條件,執行個體狀態會切換為藍綠部署切換中,等待切換完成後執行個體狀態變更為運行中。

刪除藍綠部署

刪除藍綠部署時分為以下兩種情況:

  • 僅刪除藍綠部署關係

    • 藍色執行個體和綠色執行個體均可正常使用,藍綠部署的限制條件將會解除。

    • 綠色執行個體會變為常規執行個體,計費方式保持隨用隨付不變,支援轉換為訂用帳戶計費方式

  • 刪除藍綠部署關係,同時刪除綠色執行個體

    • 綠色執行個體會被釋放。

    • 藍色執行個體不受影響可正常使用,藍綠部署的限制條件將會解除。

  1. 訪問RDS執行個體列表,選擇地區並單擊藍色執行個體ID。

  2. 在左側導覽列,選擇藍綠部署並單擊藍綠部署同步資訊地區的刪除

附錄一:藍綠部署訪問鏈路切換原理

訪問鏈路切換是藍綠部署的核心步驟之一,目的是將使用者流量從生產環境(藍色環境)平滑切換到測試環境(綠色環境)。其關鍵操作是切換虛擬IP地址(Virtual IP Address,VIP)與真實節點(Real Server,RS)的映射,如下圖所示:

  • VIP:使用者訪問服務的入口。

  • RS:提供服務的具體執行個體。

通過修改VIP與RS之間的映射關係,可以將流量導向新的環境。例如,當切換髮生時,VIP從指向藍色執行個體改為指向綠色執行個體。

附錄二:切換前檢查項及報錯資訊

檢查項

報錯資訊

說明

狀態檢查(Status-Check)

Current DB instance status should be active.

資料庫執行個體的狀態應為運行中。

表數量(Table-Count)

The table count is different between blue and green instance.

藍綠執行個體的表數量存在差異。

DTS狀態(DTS-Status)

DTS status is not synchronizing.

DTS鏈路狀態不是同步中。

DTS延遲(DTS-Delay)

DTS delay is greater than 5 seconds.

DTS同步延遲超過5秒。

唯讀(ReadOnly)

  • Both blue and green instances have read-only instances.

  • The blue instance has read-only instances.

  • The green instance has read-only instances.

  • 藍綠執行個體均存在唯讀執行個體。

  • 藍色執行個體存在唯讀執行個體。

  • 綠色執行個體存在唯讀執行個體。

資料庫代理(MaxScale)

  • Both blue and green instances have maxscale.

  • The blue instance has maxscale.

  • The green instance has maxscale.

  • 藍綠執行個體均存在資料庫代理。

  • 藍色執行個體存在資料庫代理。

  • 綠色執行個體存在資料庫代理。

串連地址(ConnectionString)

  • Private network connection string is inconsistent between blue and green instances.

  • Public network connection string is inconsistent between blue and green instances.

  • 藍綠執行個體的私網串連地址不一致。

  • 藍綠執行個體的公網串連地址不一致。

資料庫(databases)

  • The following databases exist only in the Blue instance: {{DB...}}.

  • The following databases do not exist in the Blue instance: {{DB...}}.

  • 以下資料庫僅存在於藍色執行個體中:<對應資料庫名>。

  • 以下資料庫在藍色執行個體中不存在:<對應資料庫名>。

資料庫帳號(accounts)

  • The following accounts exist only in the Blue instance: {{account...}}.

  • The following accounts do not exist in the Blue instance: {{account...}}.

  • 以下資料庫帳號僅存在於藍色執行個體中:<對應帳號名>。

  • 以下資料庫帳號在藍色執行個體中不存在:<對應帳號名>。