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
添加數據源
創建同步任務
- 任務管理->新建任務
- 源端選擇剛添加的 MySQL 數據源,目標選擇 TiDB, 分別點擊 測試連接 按鈕以測試數據庫連通性和獲取 schema 級別元信息
- 選擇源端和目標端 schema , 可以選取多個
- 點擊下一步
- 選擇 數據同步,並且勾選全量數據初始化
- 規格可以根據任務重要度以及部署機器的內存容量合理選擇,一般 2GB 內存規格即可
- 勾選 DDL 同步, CloudCanal 將同步常用的 create table /alter table/rename table DDL ,但是不同步其他 DDL
- 勾選 開啟xx校驗 , 則自動為同步任務創建一個子任務,在同步 catch up 后 ,自動運行數據校驗。當然也可以單獨創建數據校驗任務
- 點擊下一步
- 勾選需要同步的表,如果目標表為橙色,表示不存在同名表,任務創建完成后自動進行結構遷移。也可以下拉框選擇表進行映射
- 勾選需要同步的 INSERT/UPDATE/DELETE 操作,默認全選
- 點擊下一步
- 通過勾選做列映射和列裁剪
- 點擊下一步
- 對任務內容進行創建 ,如果任務不需要立刻運行 , 可置灰自動啟動任務 按鈕
- 點擊確認創建
任務同步
-
任務分為 3 個階段:
結構遷移、數據初始化、數據同步,每一個階段完成時,狀態自動流轉,直到同步穩態
- 結構遷移:當對端數據源不存在對應的庫表結構時自動創建,包括RDB庫表、消息 topic、搜索引擎 index 等
- 數據初始化:將源端所選庫表數據以全量遷移方式搬遷到對端
- 數據同步:准實時的同步增量數據,即源端數據庫上發生的增、刪、改操作將以亞秒級延遲出現在對端數據源上
FAQ
目前源端還支持哪些數據源?
除了 MySQL 到 TiDB 之外,截止社區版 1.0.2 版本,還支持 Oracle -> TiDB 鏈路,更多的鏈路如果有需求,可以按需添加,請到我們需求貼反饋
總結
本文簡單介紹了如何使用 CloudCanal 快速構建 MySQL->TiDB 數據遷移同步鏈路,更多的源端和目標端陸續開放。各位小伙伴,如果覺得還不錯,請點贊、評論加轉發吧。
更多精彩
- 5分鍾搞定 MySQL 到 ElasticSearch 遷移同步-CloudCanal 實戰
- 5分鍾搞定 MySQL 到 MySQL 異構在線數據遷移同步-CloudCanal 實戰
- 5分鍾搞定 MySQL 到 ClickHouse 實時數據同步-CloudCanal 實戰
- MySQL 到 ElasticSearch 實時同步構建數據檢索服務的選型與思考
- 構建基於Kafka中轉的混合雲在線數據生態-cloudcanal實戰
社區快訊
-
我們創建 CloudCanal 微信粉絲群啦,在里面,你可以得到最新版本發布信息和資源鏈接,你能看到其他用戶一手評測、使用情況,你更能得到熱情的問題解答,當然你還可以給我們提需求和問題。快快加入吧。
- 掃描下方二維碼,添加我們小助手微信suhuayue001拉您進群,接頭語(“CloudCanal yyds”)
- 掃描下方二維碼,添加我們小助手微信suhuayue001拉您進群,接頭語(“CloudCanal yyds”)