canal原理:canal需要使用到mysql,但canal是基於mysql的主從模式實現的,所以必須先開啟binlog
(1) 連線到mysql中,並修改/etc/mysql/mysql.conf.d/mysqld.cnf 需要開啟主 從模式,開啟binlog模式。
執行如下命令,編輯mysql配置檔案
命令列如下:
docker exec -it mysql /bin/bash
cd /etc/mysql/mysql.conf.d
vi mysqld.cnf
修改mysqld.cnf配置檔案,新增如下配置:
log-bin/var/lib/mysql/mysql-bin
server-id=12345
(2)重啟mysql容器
docker restart mysql
1.流程圖
如上圖,每次執行廣告操作的時候,會記錄操作日誌到,然後將操作日誌傳送給canal,canal將操作記錄傳送給canal微服務,canal微服務根據修改的分類id呼叫content微服務查詢分類對應的所有廣告,canal微服務再將所有廣告存入到redis快取。
(1)配置redis
修改監聽類canaldataeventlistener,實現監聽廣告的增刪改,並根據增刪改的資料使用feign查詢對應分類的所有廣告,將廣告存入到redis中
@canaleventlistener
public
class
canaldataeventlistener
, eventtype =
)public
void
oneventcustomupdate
(canalentry.eventtype eventtype, canalentry.rowdata rowdata)
private string getcolumnvalue
(canalentry.eventtype eventtype, canalentry.rowdata rowdata)}}
else}}
return categoryid;
}}
canal資料同步mysql到tidb
canal進行資料同步 將mysql資料同步至tidb,方便其他業務和資料的統計 遇到的坑 資料檢查是乙個問題 兩台機器搭建canal server集群遇到問題 存量資料更新時 xorm中對於xorm created和update資料會進行當前時間的替換 監聽binlog進行更新,資料庫update...
MYSQL快速同步資料到Redis
舉例場景 儲存遊戲玩家的任務資料,遊戲伺服器啟動時將mysql中玩家的資料同步到redis中。當然你可以如下思路 今天我們用linux系統終端執行該shell指令碼或者直接執行該系統命令,即可將mysql資料庫game db的表table mission資料同步到redis中鍵missions中去。...
MYSQL快速同步資料到Redis
舉例場景 儲存遊戲玩家的任務資料,遊戲伺服器啟動時將mysql中玩家的資料同步到redis中。從mysql中將資料匯入到redis的hash結構中。當然,最直接的做法就是遍歷mysql資料,一條一條寫入到redis中。這樣沒什麼錯,但是速度會非常慢。如果能夠想法使得mysql的查詢輸出資料直接能夠與...