溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

同步MySQL數(shù)據(jù)至Elasticsearch的方式有哪些

發(fā)布時間:2022-04-19 16:24:25 來源:億速云 閱讀:152 作者:iii 欄目:移動開發(fā)

這篇文章主要介紹了同步MySQL數(shù)據(jù)至Elasticsearch的方式有哪些的相關知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇同步MySQL數(shù)據(jù)至Elasticsearch的方式有哪些文章都會有所收獲,下面我們一起來看看吧。

1. 業(yè)務層同步

由于對 MySQL 數(shù)據(jù)的操作也是在業(yè)務層完成的,所以在業(yè)務層同步操作另外的數(shù)據(jù)源也是很自然的,比較常見的做法就是在 ORM 的 hooks 鉤子里編寫相關同步代碼。

這種方式的缺點是,當服務越來越多時,同步的部分可能會過于分散從而導致難以更新迭代,例如對 ES 索引進行不兼容遷移時就可能會牽一發(fā)而動全身。

2. 中間件同步

當應用架構演變?yōu)槲⒎諘r,各個服務里可能不再直接調(diào)用 MySQL ,而是通過一層 middleware 中間件,這時候就可以在中間件操作 MySQL 的同時同步其它數(shù)據(jù)源。

這種方式需要中間件去適配,具有一定復雜度。

3. 定時任務根據(jù) updated_at 字段同步

在 MySQL 的表結構里設置特殊的字段,如 updated_at(數(shù)據(jù)的更新時間),根據(jù)此字段,由定時任務去查詢實際變更的數(shù)據(jù),從而實現(xiàn)數(shù)據(jù)的增量更新。

這種方式你可以使用開源的 Logstash 去完成。

當然缺點也很明顯,就是無法同步數(shù)據(jù)的刪除操作。

4. 解析 binlog 同步

比如著名的 canal 。

通過偽裝成 slave 去解析 MySQL 的 binary log 從而得知數(shù)據(jù)的變更。

這是一種業(yè)界比較成熟的方案。

這種方式要求你將 MySQL 的 binlog-format 設置為 ROW 模式。

5. 解析 binlog — mixed / statement 格式

MySQL 的 binlog 有三種格式:

  • ROW 模式,binlog 按行的方式去記錄數(shù)據(jù)的變更;

  • statement 模式,binlog 記錄的是 SQL 語句;

  • mixed 模式時,混合以上兩種,記錄的可能是 SQL 語句或者 ROW 模式的每行變更;

某些情況下,可能你的 MySQL binlog 無法被設置為 ROW 模式,這種時候,我們?nèi)匀豢梢匀ソy(tǒng)一解析 binlog ,從而完成同步,但是這里解析出來的當然還是原始的 SQL 語句或者 ROW 模式的每行變更,這種時候是需要我們?nèi)ジ鶕?jù)業(yè)務解析這些 SQL 或者每行變更,比如利用正則匹配或者 AST 抽象語法樹等,然后根據(jù)解析的結果再進行數(shù)據(jù)的同步。

這種方式的限制也很明顯,一是需要自己適配業(yè)務解析 SQL ,二是批量更新這種場景可能很難處理,當然如果你的數(shù)據(jù)都是簡單的根據(jù)主鍵進行修改或者刪除則能比較好的適用。

關于“同步MySQL數(shù)據(jù)至Elasticsearch的方式有哪些”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“同步MySQL數(shù)據(jù)至Elasticsearch的方式有哪些”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI