天天看點

Maxwell監聽MySQL binlog日志推送消息至Kafkamysql開啟binlogKafka的配置啟動:Maxwell配置安裝: 測試:

mysql開啟binlog

1 開啟binlog

sudo vi /etc/my.cnf

2 mysql的binlog格式有3種,為了把binlog解析成json資料格式,要設定binlog的格式為row(binlog有三種格式:Statement、Row以及Mixed)

server-id=1

log-bin=master(這一步開啟binlog)

binlog_format=row

Maxwell監聽MySQL binlog日志推送消息至Kafkamysql開啟binlogKafka的配置啟動:Maxwell配置安裝: 測試:

3重新開機msyql服務

sudo service mysqld restart

4檢視是否已經開啟binlog

Mysql>show variables like ‘%log_bin%’;

Maxwell監聽MySQL binlog日志推送消息至Kafkamysql開啟binlogKafka的配置啟動:Maxwell配置安裝: 測試:

此時,可以在目錄/var/lib/mysql下看到生成了相應的binlog監聽日志檔案,如圖,master.000001檔案,每次重新開機msyql服務,就會生成一個新的監聽檔案

Maxwell監聽MySQL binlog日志推送消息至Kafkamysql開啟binlogKafka的配置啟動:Maxwell配置安裝: 測試:

Kafka的配置啟動:

1首先啟動zookeeper

$sbin/zkServer.sh start

2開啟kafka指令行

bin/kafka-server-start.shconfig/server.properties

3建立一個主題叫maxwell以便于接受資料

bin/kafka-topics.sh–create –zookeeper mw:2181 –replication-factor 1 –partitions 1 –topic maxwell

4啟動生産者視窗

bin/kafka-console-producer.sh–broker-list mw:9092 –topic maxwell

5啟動消費者視窗

bin/kafka-console-consumer.sh–zookeeper mw:2181 –topic maxwell –from-beginning(老版本的啟動指令,運作可能會報錯)

下面是新版本的指令,親測可行:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
           

Maxwell配置安裝: 

1下載下傳Maxwell

官網

http://maxwells-daemon.io/

2 安裝Maxwell

tar -zxvf maxwell-1.10.6.tar.gz

3給mysql授權

mysql> GRANT ALL on maxwell.* to’maxwell’@’%’ identified by ‘XXXXXX’;

mysql> GRANT SELECT, REPLICATION CLIENT,REPLICATION SLAVE on *.* to ‘maxwell’@’%’;

以上圖檔為官網參考

以我自己的為例:

GRANTALL on *.* to ‘user01’@’%’ identified by ‘123456’;

把所有資料庫的所有表授權給user01使用者以密碼123456登入

GRANTSELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to ‘user01’@’%’;

flushprivileges;

4開啟maxwell指令行(注意,如果沒有設定,maxwell預設是把監聽的mysql的binlog日志發送到kafka的主題叫maxwell的topic上的)

bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \
           
  • 1
   --producer=kafka --kafka.bootstrap.servers=localhost:9092
           
  • 1

以上為官網參考,我自己的具體的demo 這裡我直接用的是root賬号,沒有使用上面新增的那個賬号

bin/maxwell --user=’root’ --password=’123456’ --host=’192.168.100.106’ --producer=kafka --kafka.bootstrap.servers=localhost:9092解釋:host參數是安裝mysql的那台主機,最後的kafka.bootstrap.servers是安裝kafka叢集的節點主機名和端口号

測試:

1、此時,mysql的binlog已經開啟,maxwell指令行也開啟,kafka的生産者消費者視窗也開啟在監聽

開始往mysql裡插入修改資料,資料送出的時候可以看到Kafka的消費者視窗有監聽到json資料

此處測試出個問題:增删改都沒問題,但是我對表結構的修改并沒有輸出。待進一步探索。

此問題已解決,需要修改配置檔案,output_ddl是否在輸出的json流中,包含ddl語句。預設 false

詳見:https://blog.csdn.net/xiaolegeaizy/article/details/100743918

Maxwell監聽MySQL binlog日志推送消息至Kafkamysql開啟binlogKafka的配置啟動:Maxwell配置安裝: 測試:

2、在Kafka生産者視窗輸入消息,消費者視窗也可以看到資料

生産者視窗:

Maxwell監聽MySQL binlog日志推送消息至Kafkamysql開啟binlogKafka的配置啟動:Maxwell配置安裝: 測試:

消費者視窗:

Maxwell監聽MySQL binlog日志推送消息至Kafkamysql開啟binlogKafka的配置啟動:Maxwell配置安裝: 測試:

更詳細的Kafka安裝使用見下面連結:

https://blog.csdn.net/xiaolegeaizy/article/details/100736637