1. 程式人生 > 其它 >5分鐘搞定 MySQL 到 ElasticSearch 遷移同步-CloudCanal實戰

5分鐘搞定 MySQL 到 ElasticSearch 遷移同步-CloudCanal實戰

簡述

本文介紹如何通過 CloudCanal,五分鐘內建立一條長期穩定執行的 MySQL -> ElasticSearch (以下簡稱 ES) 實時資料遷移同步鏈路 。

技術內幕

限流

MySQL 到 ES 資料遷移同步過程中,往往會面臨源端寫入對端 RPS 較大問題,導致 ES 負載較大,影響業務對 ES 的正常讀寫。CloudCanal 為了應對這個情況,提供限流能力。同步任務建立完畢後,可在 任務詳情 -> 引數設定 對源端流量進行限流。

時區處理

CloudCanal 允許使用者在建立資料遷移同步任務時指定時區。寫入ES 時,源端時間型別資料將會格式化並帶上時區資訊 , 支援使用者在跨國、跨地域場景下使用。

自動建立索引和 Mapping 結構

CloudCanal 遷移同步任務支援自動將源端資料庫表結構對映成 ES 索引,該過程中允許使用者在 列(column/field) 級別上,個性化設定自己需要的索引和 Mapping 結構。這些設定包括:

  • 每個列可以指定是否需要索引
  • 可以對 text 型別的 field 設定 ES mapping 中的分詞器(標準分詞器)
  • 索引分片數、副本數自定義設定

對映已建索引

使用者可能已經在 ES 中提前建好了索引,這種情況下 CloudCanal 會自動探測,並允許使用者配置對映,一張表可對映對端一個索引。

內建 _id 生成和 routing field
指定

寫入 ES 時候 _id 用於唯一標識一個 doc。CloudCanal 資料同步預設遵循以下原則:

  • routing 使用 _id 值
  • 單主鍵表,會預設使用源端關係表的主鍵列的列值作為 _id 的值
  • 多主鍵表,會通過分隔符$連線多個主鍵列的值,組成唯一的 _id 值
  • 無主鍵表,會將所有列的值通過$連線,生成唯一的 _id 值

舉個"栗子"

準備 CloudCanal

  • 如沒有安裝 CloudCanal,請參考《CloudCanal安裝教程》安裝。下面例子介紹如何建立一個 MySQL->ElasticSearch 的遷移同步任務。

新增資料來源

  • CloudCanal 支援 6.8
    及以上版本 ES,我們點選 資料來源管理->新增資料來源 新增 ES 資料來源
  • 填寫必要 host 資訊後點擊 新增資料來源

建立任務

  • 點選任務管理,選擇建立任務

資料來源設定

  • 勾選源端和目標端資料庫,並且選擇相應的資料庫

功能配置

  • 選擇資料同步,並勾選資料初始化(帶全量遷移)

表&ACTION過濾

  • 此處可以進行的操作主要是:

    • 勾選需要訂閱的表
    • 選擇需要對映的索引(支援對映已經存在的索引)
    • 勾選 IUD 過濾
    • 批量設定分片數

    tips: CloudCanal的結構遷移支援自動幫使用者按照源端表結構建立索引

資料處理

  • 本頁面提供的主要能力有:

    • 列裁剪設定(包括批量篩選和設定)
    • 設定源端where過濾條件
    • 索引設定
    • 分詞器設定
    • 列對映(如果同步的是已經存在的索引,支援列對映)

建立確認

  • 最後一步,確認建立內容無誤後點擊確認建立。

檢視任務狀態

  • 回到 CloudCanal 控制檯,重新整理並檢視任務實時狀態,從結構遷移、資料初始化,到資料同步。
  • 登入 ES Kibana 控制檯,檢視遷移同步過去的結構和資料。

總結

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

更多精彩

社群快訊

  • 我們建立 CloudCanal 微信粉絲群啦,在裡面,你可以得到最新版本釋出資訊和資源連結,你能看到其他使用者一手評測、使用情況,你更能得到熱情的問題解答,當然你還可以給我們提需求和問題。快快加入吧。
    • 掃描下方二維碼,新增我們小助手微信suhuayue001拉您進群,接頭語(“CloudCanal yyds”)

      加入CloudCanal粉絲群掌握一手訊息和獲取更多福利,請新增我們小助手微信:suhuayue001

CloudCanal-免費好用的企業級資料同步工具,歡迎品鑑。
瞭解更多產品可以檢視官方網站http://www.clougence.com
CloudCanal社群https://www.askcug.com/