全部產品
Search
文件中心

ApsaraDB RDS:InnoDB/TokuDB/Myrocks引擎轉換為X-Engine引擎

更新時間:Jun 19, 2024

RDS MySQL 8.0支援X-Engine引擎,X-Engine可以提供更好的資料壓縮能力,降低磁碟空間成本。本文介紹如何將InnoDB/TokuDB/Myrocks引擎轉換為X-Engine引擎。

背景資訊

X-Engine是阿里雲自研的聯機交易處理OLTP(On-Line Transaction Processing)資料庫儲存引擎。作為自研資料庫PolarDB的儲存引擎之一,X-Engine已經廣泛應用在阿里集團內部諸多業務系統中,包括交易歷史庫、DingTalk歷史庫等,大幅縮減了業務成本;同時也作為雙十一大促的關鍵資料庫技術,挺過了數百倍平時流量的衝擊。

更多詳情請參見:

說明

本文旨在指導您如何將存量InnoDB/TokuDB/Myrocks引擎轉換為X-Engine引擎。如果是一個新業務,建議您在購買RDS MySQL 8.0執行個體時直接指定預設儲存引擎為X-Engine,或建表語句指定engine=xengine。更多資訊,請參見X-Engine引擎使用須知

注意事項

  • 如果原表為InnoDB引擎,轉換前請確保執行個體的剩餘磁碟空間是現有資料量的2倍。轉換為X-Engine引擎後空間佔用會減小至原資料大小的10%~50%。

  • 使用方式情節一進行轉換時,需要更新配置參數並重啟執行個體,請在停止業務之後進行操作。

  • 使用方式情節二進行全庫遷移時,由於需要切換串連地址,請在業務低峰期進行操作。

  • 在轉換線上業務引擎之前,請提前進行SQL相容性測試,確認正常後再轉換線上業務引擎。

  • 轉換引擎後請修改執行個體參數default_storage_enginexengine,這樣後續建立的表的引擎即為X-Engine。

方案建議

  • 執行個體為RDS MySQL 8.0(核心小版本20200229或以上)時,建議使用方案一,無需配置各種工具。

    說明

    核心小版本過低時,您可以在基本資料頁面單擊升級核心小版本按鈕進行升級。如果沒有該按鈕,表示當前小版本已經是最新版。詳情請參見升級核心小版本

  • 其他情況時(例如執行個體為MySQL 5.6/5.7),建議您使用方案二

方案一

此方案為修改參數模板啟用X-Engine引擎,然後使用DDL語句轉換引擎,最簡單直接。在啟用X-Engine引擎時,會重啟執行個體,後續的轉換引擎操作會短暫阻塞寫入操作,不影響查詢操作。

警告

此操作會重啟執行個體,重啟後會將95%的記憶體資源分派給X-Engine引擎使用,請不要混用InnoDB引擎。

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
  2. 在左側導覽列中單擊參數設定

  3. 在左上方單擊應用模板,選擇MySQL_8.0_高可用系列_預設參數模板 | 系統預設 | X-Engine,然後單擊確定

  4. 通過DMS登入RDS資料庫

  5. SQLConsole執行如下命令進行轉換:

    alter table <資料庫名>.<表名> engine xengine;

    樣本

    alter table test.sbtest1 engine xengine;

方案二

此方案為使用阿里雲的Data Transmission Service即時同步原表資料到新執行個體,然後將業務切換到新執行個體。

說明

通過DTS遷移資料時預設會繼承源執行個體的引擎類型。所以需要先單獨匯出建表語句的SQL,修改Create語句中的引擎類型為X-Engine引擎. 然後再遷移資料到建立的X-Engine表中。

  1. 通過DMS登入原執行個體,匯出原執行個體的所有表結構指令碼。詳細操作步驟請參見資料庫匯出

  2. 解壓縮後修改表結構指令碼,將InnoDB或TokuDB修改為xengine。下圖以InnoDB修改為xengine為例進行說明,TokuDB修改方法相同。

    修改指令碼

  3. 新購一個與原執行個體規格相同的RDS MySQL 8.0執行個體(購買時選擇X-Engine參數模板)。

    說明

    快速建立RDS MySQL執行個體時,可以選擇應用預設的X-Engine參數模板來設定X-Engine為預設儲存引擎。

  4. 通過DMS登入新執行個體,將表結構指令碼匯入新執行個體。詳細操作步驟請參見資料匯入

  5. 參考MySQL執行個體間的雙向同步將原執行個體的資料同步至新執行個體。

    重要

    在同步初始化時,請勿選擇結構初始化

執行結果

同步完成後,您可以確認資料是否同步成功,並進行SQL相容性測試,測試正常再轉換線上業務引擎。