全部產品
Search
文件中心

ApsaraDB RDS:將DRDS中的InnoDB引擎轉換為X-Engine引擎

更新時間:Jun 19, 2024

本文為您介紹如何將DRDS原本的InnoDB引擎轉換為X-Engine引擎。

背景資訊

目前有較多RDS存量使用者想要使用X-Engine,這些使用者使用資料庫有如下特點:

  • 執行個體版本大多為MySQL 5.6或5.7,MySQL 8.0較少。
  • 單一實例資料量比較大,達到執行個體規格所能支援的磁碟空間上限(例如4核8GB的規格最大支援2TB的本地碟)。
  • 同時使用DRDS,特別是部分客戶使用的是較老版本的DRDS,或者做過一些定製功能(例如SQL透傳)。

針對使用者的需求,阿里雲提供DRDS的轉換方案,如果您的業務也需要將DRDS中的InnoDB轉換為X-Engine,可以參見本文進行操作。

說明 X-Engine的詳細介紹請參見X-Engine簡介

切換方案

由於MySQL 8.0使用InnoDB引擎或X-Engine引擎時,在對外介面和使用體驗上是相同的,因此在DRDS升級完之後,可以對底層RDS執行個體進行逐步轉換,例如DRDS下面掛載了8個RDS執行個體,可以先將其中1個RDS執行個體的引擎轉換為X-Engine,運行一段時間,確認沒有相容性和效能問題之後,再轉換剩下的7個執行個體。

轉換前驗證空間壓縮效率

在開始使用X-Engine之前,建議購買一個同規格的X-Engine引擎執行個體,並通過阿里雲DTS服務匯入原InnoDB引擎執行個體的資料,查看空間壓縮效率。空間壓縮的結果可以為以下兩方面提供參考:

  • 執行個體儲存空間

    根據空間壓縮效率,可以確定轉換為X-Engine之後所需購買的執行個體規格, 例如如果空間佔用壓縮到原有的30%以下, 則原來購買3TB磁碟空間的執行個體可以轉換為使用1TB磁碟空間的X-Engine執行個體,或者可以使用相同規格的執行個體,為未來業務發展留下更多儲存空間。

  • 資料庫分區數

    儲存空間降低後,可以考慮減少資料庫分區數,例如將原來分布在多個執行個體上的資料庫,合并到同一個執行個體上,大幅降低成本。

說明 X-Engine引擎執行個體驗證完之後可以釋放,也可以清空資料以供正式轉換時使用。

轉換流程

  1. 升級DRDS,確保版本號碼高於v5.4.2-15744202。
    說明
    • 本文以PolarDB-X 1.0為例進行說明。
    • 如果DRDS版本高於v5.4.2-15744202,請跳過本步驟。
    • 如果業務對老版本特有介面有依賴(例如用於最佳化效能的SQL透傳功能),需要對業務代碼做少許修改,以確保相容性。
  2. 選定一個RDS分庫執行個體(InnoDB引擎)作為首個切換的執行個體,將建表語句匯出後修改引擎類型為X-Engine,然後建立所需規格的X-Engine引擎執行個體,或直接使用驗證空間壓縮效率時建立的執行個體,將表結構指令碼匯入新執行個體。
    說明 通過DTS遷移資料時預設會繼承源執行個體的引擎類型。所以需要先單獨匯出建表語句的SQL,修改Create語句中的引擎類型為X-Engine引擎. 然後再遷移資料到建立的X-Engine表中。
  3. 通過DTS功能將RDS分庫執行個體(InnoDB引擎)的資料同步至X-Engine引擎的RDS執行個體中,等待資料同步。資料同步請參見MySQL執行個體間的雙向同步
    說明 您可以使用DTS的雙向同步功能保證兩個執行個體的資料一致。
  4. 修改DRDS路由規則,將RDS分庫執行個體(InnoDB引擎)上的訪問切換到X-Engine引擎執行個體上。
    說明 維持首個X-Engine引擎執行個體線上上運行5天時間,持續監控執行個體,重點觀察請求的處理耗時和異常資訊等,同時注意雙向同步的同步情況,確保在過程中出現問題時,可以切換回原有的RDS分庫執行個體(InnoDB引擎)。查看引擎監控請參見查看監控資訊
  5. 首個X-Engine引擎執行個體運行沒有問題之後,可以切換剩下30%~50%的執行個體,然後繼續觀察3~5天。流程請參照之前的2~4步。
    說明 原有RDS分庫執行個體(InnoDB引擎)不要釋放或下線,並且每一個RDS分庫執行個體(InnoDB引擎)都需要使用DTS與對應X-Engine執行個體做雙向同步。
  6. 切換剩下的所有執行個體,整個叢集切換完成之後繼續觀察3~5天,之後根據業務運行情況,可以釋放所有的DTS同步鏈路,同時釋放原有的RDS分庫執行個體(InnoDB引擎)。