天天看點

5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結

簡述

MongoDB 是一種廣泛使用的文檔型資料庫,對于 schema 弱要求、可擴充性強讓其在很多場景普遍适用。

本文主要介紹如何使用 CloudCanal 快速建構一條穩定高效運作的 MongoDB 到 MongoDB 資料同步鍊路,示例中 MongoDB 均為 ReplicationSet (副本集) 。

技術點

MongoDB 源端增量技術

MongoDB 增量資料可以通過 local 庫的 oplog.rs collection 擷取增量變更資料(需要搭副本集)。

其中事件包含以下子 Document (不同版本 MongoDB 有些許差異), CloudCanal 通過解析事件記錄同步增量資料

子 document 名字 資料含義
op 操作類型, CloudCanal支援的類型包括:c (控制操作) , i (INSERT) , u (UPDATE),d (DELETE)
ns 命名空間(namespace) , 格式為 dbName.collectionName , 其中 collectionName 可以為 $cmd , 則表示在對應資料庫上的操作
ts 執行操作的事件戳,機關秒
o 變更的資料,對應 INSERT/UPDATE 後鏡像資料,DELETE 為前鏡像資料,需要注意的是,MongoDB 4.x 版本和其他版本在這個 Document 有所不一樣
o2 隻在 UPDATE 事件中有值,可以認為是主鍵或者定位資料的辨別符

MongoDB 的資料類型支援

CloudCanal 從 2021 年 8 月份支援 MongoDB 開始,經曆多個版本疊代,逐漸豐富了對 MongoDB 資料類型的支援。

無論直接從 MongoDB 做全量遷移,還是消費 oplog 進行增量同步,類型轉換對自定義代碼處理和下遊資料源寫入都有重要意義。

從 MongoDB 全量讀取支援的類型包括: null,ObjectId,Date,Number,String

從 MongoDB oplog 增量同步支援的類型包括:ObjectId,Date,Number,String,Integer,Long,BigInteger,Double,BigDecimal

以上類型并不是終點,随着越來越多使用者使用,不斷擴充中 。

操作示例

前置條件

  • 登陸 CloudCanal SaaS版,使用參見快速上手文檔
  • 準備好 2 個 MongoDB 執行個體(本例使用阿裡雲 MongoDB 4.2 和 5.0 ,模拟使用者 MongoDB 執行個體版本更新)
  • 登入 CloudCanal 平台 ,添加 MongoDB
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結
  • 建立一條 MySQL -> MongoDB 鍊路作為增量資料來源

任務建立

  • 任務管理->任務建立
  • 測試連結并選擇 源 和 目标 資料庫
  • 點選下一步
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結
  • 選擇 資料同步,并勾選 全量資料初始化, 其他選項預設
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結
  • 選擇需要遷移同步的 collection
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結
  • 确認建立任務
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結
  • 任務自動做結構遷移、全量遷移、增量同步
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結

校驗資料

  • 程式造資料,采用 MySQL -> MongoDB -> MongoDB
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結
  • 任務正常運作一段時間後,停止造資料
  • 點選 MongoDB -> MongoDB 任務詳情,更多 > 建立相似任務 ,第二步選擇 資料校驗
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結
  • 資料校驗 OK
    5分鐘搞定 MongoDB 到 MongoDB 資料遷移和同步-CloudCanal實戰簡述技術點操作示例常見問題總結

常見問題

目前對 sharding 版本的 MongoDB 支援如何?

CloudCanal 支援 MongoDB sharding 版本,如果作為源端,需要逐個配置底下副本集執行個體,也就是遷移同步任務存在多個,作為對端,則将 sharding 執行個體當作單個執行個體寫入即可。

單個 collection 包含多種主鍵資料怎麼辦?

CloudCanal 全量遷移是通過 "id" 進行分頁掃描進行,是以如果 "id" 類型多種,則會導緻位點擷取或者斷點續傳出問題。

支援其他對端資料源麼?

總結

繼續閱讀