Mycat 分片規則詳解--數據遷移及節點擴容


使用的是 Mycat 提供的 dataMigrate 腳本進行對數據進行遷移和節點擴容,目前支持的 Mycat 是1.6 版本,由於 Mycat 是由 Java 編寫的因此在做數據遷移及節點擴容時需要安裝JDK等,還有相關的依賴數據庫驅動程序等

准備工作

  • 對擴容表的所有數據節點進行備份,以便遷移失敗后的數據恢復
  • 安裝JDK 1.8 版本,並設置好環境變量
  • 在 Mycat 的 lib 目錄中,增加 MySql 的 JDBC 驅動包
  • 在 Mycat 的環境中安裝 MySql 的客戶端程序
  • 使用 root 用戶登陸 mycat 環境系統

擴容步驟

  • 復制 schema.xml 和 rule.xml 文件並重命名為 newSchema.xml 和 newRule.xml,存放於 conf 目錄
  • 修改 newSchema.xml 和 newRule.xml 配置文件為擴容后的 mycat 配置參數(表的數據節點、數據源、路由規則)
  • 修改 conf 目錄下的 migrateTables.properties 文件,該配置文件用於告知工具,那些表需要進行擴容或收縮,如果不在該配置文件的表,不會進行數據遷移,示例如下:

  • 修改 bin 目錄下的 dataMigrate.sh 腳本文件,參數說明如下:
    • tempFileDir:臨時文件路徑,如果目錄不存在則會自動創建
    • isAwayUseMaster:默認 true,不論是否發生主備切換,都使用主數據源
    • deleteTempFileDir:默認 true,完成數據遷移后是否刪除臨時文件
    • threadCount:默認主機環境CPU核心數量 * 2,並行線程數量(用於生成中間文件和導入導出數據)
    • delThreadCount:默認主機環境CPU核心數量 / 2,清理冗余數據的並發線程
    • queryPageSize:默認10萬,讀取遷移節點全部數據的每次加載數據量
  • 停止 mycat 服務,需要保證數據庫不會再有寫操作
  • 通過 PuTTY 工具進入 mycat 根目錄下的 bin 目錄,執行 dataMigrate.sh 腳本,開始進行擴容,

    顯示遷移信息和遷移數據(此處不需要遷移,因此顯示的是[0 , 0],正常情況應該顯示需要遷移的數據量)

    顯示數據遷移驗證結果

  • 腳本執行完成,如果最后的數據遷移驗證通過,就可以將之前的 newSchema.xml 和 newRule.xml 替換之前的 schema.xml 和 rule.xml 文件,並重啟 mycat即可。

存在問題

  • 目前 Mycat 1.6 提供的數據遷移腳本,只能支持分片字段的值必須是唯一的,不能重復,因此在使用時盡量使用唯一的字段來做分切字段。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM