springboot項目讀取mysql的binlog日志,在去年的時候,我就遇到一個需求,需要把mysql資料庫中的資料的增、删、改的資料準實時做資料清洗,也就是ETL工作,同步到公司的資料倉庫greenplum中(資料庫資料變化的監聽進而同步緩存(如Redis)資料等)。現在将整個詳細的操作過程記錄如下:
(1)、修改mysql資料庫的my.cnf配置檔案:
[mysqld]
log-bin=mysql-bin #開啟binlog
binlog-format=ROW #選擇ROW模式
server_id=1 #配置mysql replication需要定義,不能和canal的slaveId重複
(2)、重新開機mysql,确認mysql正常啟動
(3)、檢視binlog是否開啟:
show variables like "%log_bin%"
确認log_bin----->ON
sql_log_bin----->ON
(4)、檢視binlog日志狀态
show master status
(5)、重新整理binlog日志檔案
flush logs #重新整理之後會建立立一個binlog日志
(6)、清空日志檔案
reset master
(7)、授權 canal 連結 MySQL 賬号具有作為 MySQL slave 的權限, 如果已有賬戶可直接 grant
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
以上每一步都操作完成後,就開啟了binlog日志了,資料庫方面的準備工作就算是完成了。 本周會更新剩下的操作每一步。