最近也在看这个。好像通过CDC实现对binlog的监控,然后实时进行数据传输或者更改。占个坑,等搞好这一块,有时间来回答
好,经过了一段时间的调研以及测试,我现在来回答一下这个问题。
通过CDC(catch data capture)模式可以实现对Java数据库的监听。
现在市面上有这么几种主流的方式:
1.Maxwell,这个框架是基于kafka的,然后通过修改MySQL配置文件可以获取其二进制日志文件,然后通过producer/consumer机制可以实现对biolog(二进制文件)的解析,并输出至kafka。这个的缺点是主要面向MySQL至不同中间管道的输出,而不是各种数据库至中间管道的输出。
2.Debezium,这个框架大概原理上和上面的一致,不同点在于:它是基于confluent platform下的kafka connect,算是数据采集的一种。同时kafka connect前景蛮不错,比flume,sqoop好很多。而且现在这个框架不仅仅有MySQL的采集,还有其他的,例如orale,progressSQL等。
3.canal,这个是阿里出来一个框架,通过伪装可以获取MySQL的二进制文件,但是它有个缺点是需要使用自己的消费端去消费解析后的数据。不过这个很成熟,而且说明文件也是中文的,很好理解。
以上,欢迎指正讨论。后续更补。