程序员大数据

NIFI-CaptureChangeMySQL-mysqlBin

2020-05-20  本文已影响0人  _Unique_楠楠

1.简介

从MySQL数据库中检索更改数据捕获(CDC)事件。CDC事件包括插入、更新、删除操作。事件作为单独的流文件输出,按操作发生的时间排序。


image

2.主要应用方向

读取mysql的binlog,将binlog以json形式形成流,供后续节点处理,比如将其写入其他的数据库(同步),写入hdfs?均可!

3.主要配置

这里只介绍部分常用的配置,全量配置可参考官方提供的文档

ame Description
MySQL Hosts 数据库连接 如:192.168.3.70:3306
MySQL Driver Class Name 驱动:com.mysql.jdbc.Driver
MySQL Driver Location(s) 驱动所在位置:/tmp/mysql-connector-java-5.1.32-bin.jar
Username 数据库用户名
Password 密码
Database/Schema Name Pattern DB名
Table Name Pattern 表名
Distributed Map Cache Client *重点:这里要为处理器配置一个存储客户端,一般选择redis,下文会详细介绍
Initial Binlog Filename 设置起始binglog文件名-不设置默认从第一个开始
Initial Binlog Position 设置binlog点位

下图为配置样例

image

4.Distributed Map Cache Client配置

Distributed Map Cache Client一定要设置,我最开始理解错误以为需要依赖第三方的存储来实现这个功能,而且我没有了解到这个配置的重要性.,我手欠的删除了.引发惨痛的教训如下:
不用Distributed Map Cache Client读取到的binlog里的字符串类型信息(数据库名,数据表名,字符串类的字段内容会是null,还会缺失mysql字段名称)

详细配置如下:

1.点击这个配置,选择创建一个客户端作为处理器状态数据存储(如果你已有创建好的可以直接用,我的图片是有我自己已经创建好的一个redis服务,其实就是创建个数据存储的连接)

image
2.单击->按钮进入redis服务的配置
image
3.进入配置后如图,这里我将其命名为-TEST和我另一个redis服务作为区分,可以看到State还未生效,因为还没配置完成
image
4.点击配置图标,为你的redis客户端配置server连接信息
image
5.此时你会发现多了一个RedisConnectionPoolService
image
6.继续配置RedisConnectionPoolService
image

7.RedisConnectionPoolService配置好了后点击生效(那个小闪电图标)(注意:如果前面有黄色⚠️说明你没配置好,可以鼠标悬停在标志上看错误描述,一般都能看懂)

image
8.配置好binlog采集器后,我们再介入一个文件处理器,用于将我们采集的日志 输出到某个文件中(这里仅因为是测试,也可以将流直接通过其他相关的处理器比如直接导入到另一个数据库)
image

关于Putfile配置比较简单,我们测试的话,只要写好文件路径即可,这里不做详细介绍了

9.点击启动binglog采集处理器


image

10.观察Putfile生成的文件内容

image
11.你可以操作你的数据库。并查看是否有对应操作文件产生。
上一篇 下一篇

猜你喜欢

热点阅读