實(shí)時(shí)獲取數(shù)據(jù)庫(kù)更新
問題:
用戶希望在 mysql 數(shù)據(jù)庫(kù)中有新數(shù)據(jù)時(shí)立即收到通知,以便通過短信發(fā)送給特定號(hào)碼。然而,通過服務(wù)器計(jì)劃任務(wù)每 30 秒檢查數(shù)據(jù)庫(kù)的現(xiàn)有方法未能滿足實(shí)時(shí)性的要求,還會(huì)增加服務(wù)器負(fù)擔(dān)。
解決方案:
為了第一時(shí)間獲取數(shù)據(jù)庫(kù)更新,建議采用 binlog 和 canal:
啟用 binlog
- 在 mysql 配置文件中打開 binlog 功能:
log-bin=mysql-bin
登錄后復(fù)制
安裝和配置 canal
- alibaba canal 是一個(gè) mysql binlog 增量訂閱和消費(fèi)組件,可以實(shí)時(shí)捕獲數(shù)據(jù)庫(kù)變更。
- 下載并安裝 canal。
- 根據(jù)官方文檔配置 canal。
- 啟動(dòng) canal 服務(wù)。
使用 canal 監(jiān)控?cái)?shù)據(jù)庫(kù)更新
- canal 會(huì)監(jiān)聽 mysql binlog 的變化,并針對(duì)每個(gè)更新事件生成一條消息。
- 您可以設(shè)置 canal,以便在檢測(cè)到新插入時(shí)觸發(fā)動(dòng)作。
- 通過集成一個(gè) sms 網(wǎng)關(guān),可以在接收到新插入消息時(shí)觸發(fā)短信發(fā)送。