皮一萬。。。
很久以前。。。。。。。。。。。。。。。。很好吃!!!(開玩笑 O(∩_∩)O哈哈~)
正文
前段時間手里有個項目,需要讀取 mysql 數據庫的 binlog 日志對mysql進行監控,一時間感覺頭皮發麻(這個真不會),於是乎詢問度娘,度娘直接給出了一個近乎於完整的項目直接就可以使用,那就是 canal 組件。
先來看一下網上對 canal 的說明:點我看原理
下載地址:
開發部署服務:https://github.com/alibaba/canal/releases
開發實例項目:https://github.com/alibaba/canal
說明:我理解的是下載的maven項目只是對邏輯處理的一個項目,而canal 部署開發包是用來啟動 canal 服務用的,要使用 canal 對數據庫進行監控
①:先配置好 canal 服務,啟動服務;②:找到程序的入口,運行
。
一、那么,先來看一下 canal 服務的配置以及啟動
下載好的開發服務部署包,直接解壓
進入 canal.deployer 這個文件中,能夠看到下面的目錄結構:
進入 conf 這個文件中,能夠看到下面的目錄結構:
spring文件夾中的配置文件一般情況下默認即可,如果有特殊的需求可以自行更改。
canal.properties 文件中寫的是canal 服務器需要的一些配置,修改的地方不多
example 文件中寫的是canal 服務器中配置實例的地方
h2.mv.db 和 meta.dat 是對操作mysql數據庫的記錄(刪除這兩個文件不會對mysql數據庫中的數據有任何影響,只會對基於canal 服務而開發的項目產生影響,數據缺失),instance.properties 是實例的屬性文件
這里有我總結的 canal 監控 mysql 數據庫的使用說明:點我下載使用說明
按照步驟配置即可
二、接下來就是開發實例項目了
下載下來的 canal 是一個maven項目,直接將項目導入到 idea 中然后正常配置maven項目就可以
項目中,找到example這個目錄,開發的邏輯全都在這里
SimpleCanalClientTest 這個類繼承了AbstractCanalClientTest ,成為程序的入口,啟動新的線程來讀取mysql的binlog日志,進而監控數據庫(也可以自己寫一個類繼承 AbstractCanalClientTest ),在AbstractCanalClientTest 這個類中,有一個process方法,這個方法就是用來監控數據庫並處理數據的
實際操作的話,可以同步更新redis緩存、實時更新監控到的某個值的狀態、插入到數據庫中一條新紀錄等等都可以實現了,具體邏輯就要看開發需求了。
至此,我利用 canal 服務監控mysql數據庫所學習掌握到的東西就都寫完了
引用:http://agapple.iteye.com/blog/1796633
感謝!
結束