5分鍾搞定 MySQL 到 TiDB 的數據同步 - CloudCanal實戰


cloudcanal-zycgit

簡述

TiDB 是國內非常火熱的一款分布式數據庫,參考 Google Percolator 和 Spanner 模型進行構建,具備很好的擴展性,並且支持強一致事務和一定的計算能力,應用廣泛。

CloudCanal 提供了從傳統關系型數據庫實時同步到 TiDB 的能力,並且附帶數據遷移數據校驗數據訂正等能力。此文章簡要介紹如何快速構建一條長期穩定運行的 MySQL->TiDB 數據鏈路。

技術要點

MySQL 協議兼容性

TiDB 對於 MySQL 協議兼容做得不錯(4.X 版本),但是其中也有瑕疵點,對於數據遷移同步來說,關注 3 個方面的信息:元數據數據類型DDL 支持

元數據層面, 特別 information_schema 的支持,比較完整。數據類型層面,如果不涉及 GIS 等類型,基本兼容(可能我們還沒測試全面)。

DDL 支持層面,比較明顯的是不支持同時做多次 DDL action , 比如: alter table add column col1 varchar(255), add col2 bigint(20) not null, modify col3 datetime 。而往往這種 SQL 在數據庫運維中非常常見(提高 DDL 效率)

針對差異點,CloudCanal 都做了兼容,特別是 DDL 同步的兼容,加上庫、表、列映射,存在一定的工作量。

舉個 “栗子”

准備 CloudCanal

添加數據源

  • 登錄 CloudCanal 平台
  • 數據源管理 -> 添加數據源
  • 選擇 自建數據源 ,並填寫相關數據庫信息,其中 網絡地址 請按提示帶上端口號
    8f0287f0-fd99-49cb-b5e1-87f697c07e5b-image.png
  • 如下已添加完 MySQL 和 TiDB
    8c61ef53-62d1-4d01-b482-4ff93b02eda3-image.png

創建同步任務

  • 任務管理->新建任務
    faa9966e-abd0-44f5-89ac-7445e72fddf7-image.png
  • 源端選擇剛添加的 MySQL 數據源,目標選擇 TiDB, 分別點擊 測試連接 按鈕以測試數據庫連通性和獲取 schema 級別元信息
  • 選擇源端和目標端 schema , 可以選取多個
  • 點擊下一步
    4a2c1e6d-1388-4e58-9002-6a778cca88e8-image.png
  • 選擇 數據同步,並且勾選全量數據初始化
  • 規格可以根據任務重要度以及部署機器的內存容量合理選擇,一般 2GB 內存規格即可
  • 勾選 DDL 同步, CloudCanal 將同步常用的 create table /alter table/rename table DDL ,但是不同步其他 DDL
  • 勾選 開啟xx校驗 , 則自動為同步任務創建一個子任務,在同步 catch up 后 ,自動運行數據校驗。當然也可以單獨創建數據校驗任務
  • 點擊下一步
    482a531d-80a2-403c-a3d5-f384dc46f2bb-image.png
  • 勾選需要同步的表,如果目標表為橙色,表示不存在同名表,任務創建完成后自動進行結構遷移。也可以下拉框選擇表進行映射
  • 勾選需要同步的 INSERT/UPDATE/DELETE 操作,默認全選
  • 點擊下一步
    bee1cc51-cf46-4e2c-b9c9-e1a223e51b8c-image.png
  • 通過勾選做列映射列裁剪
  • 點擊下一步
    752455aa-48cd-4bfe-86e6-4f440ed67f4b-image.png
  • 對任務內容進行創建 ,如果任務不需要立刻運行 , 可置灰自動啟動任務 按鈕
  • 點擊確認創建
    4c55d947-d112-4d00-9f25-61320c28a0b3-image.png

任務同步

  • 任務分為 3 個階段:

    結構遷移、數據初始化、數據同步,每一個階段完成時,狀態自動流轉,直到同步穩態

    9c593992-166c-4cb9-a0eb-ecec0c3dda2f-image.png

    0a40527b-ddce-4c36-b0eb-6b1cd94c17b2-image.png

    • 結構遷移:當對端數據源不存在對應的庫表結構時自動創建,包括RDB庫表、消息 topic、搜索引擎 index 等
    • 數據初始化:將源端所選庫表數據以全量遷移方式搬遷到對端
    • 數據同步:准實時的同步增量數據,即源端數據庫上發生的增、刪、改操作將以亞秒級延遲出現在對端數據源上

FAQ

目前源端還支持哪些數據源?

除了 MySQL 到 TiDB 之外,截止社區版 1.0.2 版本,還支持 Oracle -> TiDB 鏈路,更多的鏈路如果有需求,可以按需添加,請到我們需求貼反饋

總結

本文簡單介紹了如何使用 CloudCanal 快速構建 MySQL->TiDB 數據遷移同步鏈路,更多的源端和目標端陸續開放。各位小伙伴,如果覺得還不錯,請點贊、評論加轉發吧。

更多精彩

社區快訊

  • 我們創建 CloudCanal 微信粉絲群啦,在里面,你可以得到最新版本發布信息和資源鏈接,你能看到其他用戶一手評測、使用情況,你更能得到熱情的問題解答,當然你還可以給我們提需求和問題。快快加入吧。

    • 掃描下方二維碼,添加我們小助手微信suhuayue001拉您進群,接頭語(“CloudCanal yyds”)


免責聲明!

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



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