MySQL數(shù)據(jù)增量導(dǎo)入ES思路

一句話描述:利用MySQL Binlog+Kafka即可實(shí)現(xiàn)

MySQL Binlog

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

binlog日志有兩個(gè)最重要的使用場(chǎng)景。

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

binlog日志包括兩類文件:

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

利用MySQL Binlog+Kafka傳遞數(shù)據(jù)變更消息

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

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

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

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容