MySQL數據增量導入ES思路

一句話描述:利用MySQL Binlog+Kafka即可實現

MySQL Binlog

MySQL的二進制日志可以說是MySQL最重要的日志了,它記錄了所有的DDL和DML(除了數據查詢語句)語句,以事件形式記錄,還包含語句所執(zhí)行的消耗的時間,MySQL的二進制日志是事務安全型的。

binlog日志有兩個最重要的使用場景。

  • mysql主從復制:mysql replication在master端開啟binlog,master把它的二進制日志傳遞給slaves來達到master-slave數據一致的目的。
  • 數據恢復:通過mysqlbinlog工具來恢復數據。

binlog日志包括兩類文件:

  • 二進制日志索引文件(文件名后綴為.index)用于記錄所有的二進制文件。
  • 二進制日志文件(文件名后綴為.00000*)記錄數據庫所有的DDL和DML(除了數據查詢語句select)語句事件。

利用MySQL Binlog+Kafka傳遞數據變更消息

場景:想要統(tǒng)計新訂單的實時增加情況?想要實時跟蹤庫存的變化?想要訂閱業(yè)務數據庫的變更?下游業(yè)務希望實時感知數據庫的變更,但頻繁查詢增量數據又影響業(yè)務數據庫性能。如何又快又好的做好這些事,而又不影響線上數據庫的性能?

實現思路:代碼對接上游業(yè)務數據庫,實時對Binlog數據分析、解析、PB格式序列化和壓縮后,將數據庫變更推送到Kafka。下游各應用消費Kafka的數據從而實時獲取上游業(yè)務庫的數據變更。

這樣,如果下游系統(tǒng)是使用ES系統(tǒng)的話,就可以再message system注冊成為consumer,一旦上游數據庫產生變更,就可以及時獲取到kafka發(fā)來的消息,將mysql數據庫變更同步到elasticsearch庫里。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容