Canal Oracle 是一款基于數據庫日志增量訂閱&消費組件的數據同步工具,是阿里巴巴數據庫同步產品組的核心產品之一。
相比于傳統(tǒng)基于 dump 方法的數據遷移,Canal Oracle 可以實現增量數據實時同步,避免了全量導出導入的低效率問題,同時還可以實現數據的異構同步,解決不同數據庫之間數據格式的差異問題。
Canal 原理:Canal 基于數據庫增量日志解析,模擬 MySQL Slave 的交互協(xié)議,從而達到訂閱 MySQL 數據庫的 binlog,解析并將數據更新到到其他數據存儲中的目的。Canal 的數據來源可以是主庫或從庫,實現了輕量級數據同步,并且支持完整的事務和消息處理。
Canal Oracle 通過 canal.deployer.sh 腳本啟動,配置啟動項中指定了實例名,日志讀取位置、kafka 地址、數據源數據庫和目標數據庫等參數。啟動后 Canal Oracle 會監(jiān)控 binlog 并對其進行解析,解析出相應的 CRUD 操作,將數據格式化后發(fā)送至 kafka 集群。
sudo sh ./canal.deployer.sh start
Canal Oracle 數據構造:Canal Oracle 可以將數據以 json 或 pb 格式進行構造,配置項中指定數據格式即可,默認為 json 格式。下面是一段構造后的 json 數據,可以看到其中包含了 binlog 中業(yè)務數據的相關信息。
{ "id":101, "name":"Lucy", "password": "abc123", "gendar":"female", "age":18, "last_updated":"2019-03-01 12:00:00", "binlog":{ "db":"test", "table":"user", "event":"insert", "ts":1547456827232, "pos":52686, "rowkey":"id=101" } }
Canal Oracle 使用場景:Canal Oracle 可以針對多個場景進行應用,比較常見的是數據實時同步場景,如 MySQL 數據實時同步至 Redis 集群,MongoDB 數據實時同步至 HBase 集群等。
Canal Oracle 還可以用于數據分析場景,如在數據同步過程中做數據統(tǒng)計、計數等操作,并將結果輸出至實時大屏或者業(yè)務監(jiān)控系統(tǒng),通過數據可視化進一步挖掘業(yè)務數據價值。
總之,Canal Oracle 是一個非常優(yōu)秀的基于數據庫日志增量訂閱&消費組件,能夠幫助我們更加快速、高效地將數據同步至其他存儲系統(tǒng),提高數據處理效率和數據價值挖掘能力,具有非常重要的應用價值和意義。