NIFI使用CaptureChangeMySQL同步MYSQL BINLOG数据
Mysql 配置
首先要将Mysql的bin-log启用
安装好Mysql后 再My.ini中加入
重启服务
Winows 使用管理员模式打开powershell
net stop mysql
net start mysql
NIFI配置组件信息
配置完成之后 启动就可以同步到数据,但是有一个问题,关键信息都是空
{"type":"insert","timestamp":1678866408000,"binlog_filename":"mysql-bin.000001","binlog_position":697,"database":null,"table_name":null,"table_id":null,"columns":[{"id":1,"value":null},{"id":2,"value":null},{"id":3,"value":null}]}
这个原因是必须要依赖一个分布式的缓存服务(具体原因没有搞清楚为什么)
配置一个分布式缓存服务
这里就不使用Redis了就直接用DistributedMapCacheServer在本机启动一个就好了
配置完成之后坑人的地方又来了
解决 Error creating binlog enrichment JDBC connection to any of the specified hosts问题
咱也不知道为什么他会报这个错,这个错就是找不到驱动,明明不加分布式缓存的时候好好的,加了之后他就找不到驱动了,这时候我们手动下载一个驱动然后把驱动绝对路径填到NIFI的MySQL Driver Location(s)上
收官
再次插入一条数据测试
{"type":"insert","timestamp":1678866408000,"binlog_filename":"mysql-bin.000001","binlog_position":697,"database":"bin_test","table_name":"test_bin","table_id":33,"columns":[{"id":1,"name":"A","column_type":12,"value":"1"},{"id":2,"name":"B","column_type":12,"value":"1"},{"id":3,"name":"C","column_type":12,"value":"1"}]}
正常了。。。。。。。
关于那些迷点
1、为什么要加缓存才可以
2、为什么加了缓存需要指定驱动位置
回头在源码中找答案吧,先用起来。