debezium 資料變更工具使用

2021-09-07 15:04:57 字數 2011 閱讀 4609

1.  作用

簡單概述就是cdc(change data capture),實時資料分析領域用的比較多

2. 簡單使用(基於官網的docker 說明)

備註: 測試沒有使用守護程序模式為了方便測試

a. zookeeper

docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:0.6

b. kafka

docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:0.6

c. mysql 

docker run -it --rm --name mysql -p 3306:3306 -e mysql_root_password=debezium -e mysql_user=mysqluser -e mysql_password=mysqlpw debezium/example-mysql:0.6

d. mysql-client

docker run -it --rm --name mysqlterm --link mysql --rm mysql:5.7 sh -c 'exec mysql -h"$mysql_port_3306_tcp_addr" -p"$mysql_port_3306_tcp_port" -uroot -p"$mysql_env_mysql_root_password"'

檢視表資訊

use inventory;

show tables;

select * from customers;

e. kafka connect

docker run -it --rm --name connect -p 8083:8083 -e group_id=1 -e config_storage_topic=my_connect_configs -e offset_storage_topic=my_connect_offsets --link zookeeper:zookeeper --link kafka:kafka --link mysql:mysql debezium/connect:0.6

進行connect 資訊檢視

f. 監控mysql 資料庫變更

返回資訊如下:

}檢視註冊的connect

["inventory-connector"]

g. 檢視資料變更

docker run -it --name watcher --rm --link zookeeper:zookeeper debezium/kafka:0.6 watch-topic -a -k dbserver1.inventory.customers

應該會看到包含下面的資訊:]},

"payload":

}進行資料變更

update customers set first_name='anne marie' where id=1004;

應該會看到下面的資訊]},

"payload":

}刪除、新增的資訊類似,同時對於監控資料變更的服務,在停止之後,重新啟動資料還是可以同步過來的

3. 說明

大資料,微服務應用開發、單體應用向微服務遷移的時候使用起來可以減少好多開發的工作量

4. 參考資料

遺留系統重建實踐

migrating_to_microservices_databases_red_hat.pdf (

資料同步Debezium的應用

背景 近期公司在響應國家軟體規範要求,重點專案的資料庫採用開源版postgresql 下文簡稱pg 業務端依然使用oracle。因此為了保證pg到oracle的資料同步問題,經過調研採用debezium開源專案,實現 pg kafka oracle 的資料實時同步。開始介紹重點 debuzium簡介...

Aqua Data Studio 資料庫工具使用

aqua data studio aqua data studio是一款完整ide的資料庫開發工具,它提供3種主要功能 資料查詢與管理工具。比對資料工具與源控制和檔案系統的整合工具。幫助你建立,編輯 和執行 sql 的管理工具指令碼編寫,以及瀏覽和修改資料庫組織。對所有主要關係的資料庫提供乙個一致的...

iPhone Instruments工具使用

本文摘自 xcode 視窗並顯示出問題的 這是非常棒的功能。在本例中,第一次 nsstring 分配的時候出現了洩露,你需要做一些處理。這是個非常簡單的例子,但找到為什麼會發生洩露則要麻煩些。讓我們仔細看一下例子。在 viewdidload 當中,我們為字串分配到了記憶體,如下所示 mmyleaky...