canal 是阿里巴巴開源的一款基於數據庫增量日誌解析,提供增量數據訂閱&消費,目前主要支持了MySQL(也支持mariaDB)。mysql
我開發的這個CanalSync項目 https://github.com/yuzd/CanalSync ==>以爲不錯幫忙給個star謝謝git
是基於canal-server之上的數據庫同步&消費中間件,github
用於可快速搭建消費canal-server的項目。 目前我已實現並開源了以下:redis
Install-Package Canal.Serversql
Install-Package Canal.SqlParse數據庫
若是你須要寫一個數據消費傳輸到XXXMQ,用不到反解析成sql的話,只須要引用 Canal.Server中間件。 若是你須要寫一個數據消費傳輸到XXXdb,得用到反解析sql中間件,須要同時引用Canal.Server 和 Canal.SqlParse 這2箇中間件。json
public class TestHandler:INotificationHandler<CanalBody>{ public Task Handle(CanalBody notification) { //寫消費邏輯 return Task.CompletedTask;; } }
//註冊了以後 canal-server有新的消息就會進入到TestHandler的Handle方法 services.AddCanalService(produce => produce.RegisterSingleton<TestHandler>());
目前只實現瞭解析mysql的邏輯,將來會加入sqlserver的解析邏輯!!app
//註冊使用 connectionString是mysql的數據庫鏈接字符串 services.AddMysqlParseService(connectionString); // 計劃中還未實現 //services.AddSqlserverParseService(connectionString);
在類的構造方法可注入:sqlserver
如上圖,表明將canal-server的數據直接在另外的mysql庫裏面執行,等於2個mysql數據進行互相同步。