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数据进行互相同步。