天天看点

debezium集成Oralce攻略(下)

上篇文章讲述了如何安装oralce,现在oralce的条件已经满足了,接下来我们来安装debezium的三大件。

其实先非常简单,直接按照dbz的官方文档操作。首先下载官方的git文档。

https://github.com/debezium/debezium-examples.git
           

下载好了之后。进入文档内部。

cd debezium-examples/tutorial/
           
debezium集成Oralce攻略(下)

这个截图的意思是 要先下载一个 oralce 的jdbc的插件 还要自己创建一个文件夹去装。

去oralce的官方文档下载这个插件

点这里进入

debezium集成Oralce攻略(下)

下拉到这个位置进行下载

下载完之后我们要把他解压缩,并把文件夹命名为oracle_instantclient

注意这个文件夹下面一定有 odbjc.jar文件和xstreams.jar如果没有,说明你下错了。

接下来我们把这个文件夹放到debezium-with-oracle-jdbc这个文件夹下面。

先使用rz -y命令上传,再使用cp -r 命令放文件,不会用这个命令的去百度。

debezium集成Oralce攻略(下)

放好了之后继续

export DEBEZIUM_VERSION=1.2
           

这个命令是生成一个环境变量,因为等会运行的那个脚本里面用到了这个环境变量所以要先设置。

docker-compose -f docker-compose-oracle.yaml up --build
           

接下来使用docker-compose命令进行安装,就是build,里面会有一系列的操作,比如设置参数,变量,下载zookeeper,kafka,connect。等等,想知道具体做了什么,可以打开那个yaml文件看看,还有那个oracle-jdbc下面的DockerFile。

debezium集成Oralce攻略(下)

这里截图了DockerFile的一些代码,可以看看。

总之这样下来就全部运行起来了。

可以使用

看下运行好的几个组件。

接下来继续

curl -i -X POST -H "Accept:application/json" -H  "Content-Type:application/json" http://localhost:8083/connectors/ -d @register-oracle.json
           

这个代码是注册连接器,但是注册之前你一定要打开register-oracle.json这个json好好看看,因为他是按照这个json去注册的,所以你需要先打开

vi register-oracle.json
           

去编辑他,因为里面的oralce的服务器的ip需要改成你的安装oracle的ip,之前说了用两台服务器,oralce不在这台服务器上,所以需要改一下ip。

编辑好了之后就去注册连接器了。

curl -i -X GET -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/
           

这个命令是可以看看你注册了哪些连接器。

curl -i -X DELETE -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/inventory-connector
           

这个命令是把你注册的那个连接器删掉。

注册完了之后 我们去kafka那里看看有没有监听。

echo "INSERT INTO customers VALUES (NULL, 'John', 'Doe', '[email protected]');" | docker exec -i dbz_oracle sqlplus debezium/[email protected]//localhost:1521/ORCLPDB1
           

上面这个命令就是往oralce服务器里面插入测试数据,当然因为oracle安装在另一台服务器上,所以你在那个服务器上执行这个,或者你用navicat都可以,反正就是加数据。

docker-compose -f docker-compose-oracle.yaml exec kafka /kafka/bin/kafka-console-consumer.sh \
    --bootstrap-server kafka:9092 \
    --from-beginning \
    --property print.key=true \
    --topic server1.DEBEZIUM.CUSTOMERS
           

这个命令就是打开你的kakfa消费者去监听这个topic的数据,也就是customers的数据。

当然你也可以使用

docker exec -it tutorial_kafka_1 bash
bin/kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic server1.DEBEZIUM.CUSTOMERS --from-beginning
           

这两条命令去启动消费者。

但是这时候最大的坑出现了,你会发现他没有监听更改事件,仅仅是打印了表里的几条数据。

而且你不管怎么更改数据,消费者那边都没有任何反应。

debezium集成Oralce攻略(下)

我们来把这个代码JSON化一下。

debezium集成Oralce攻略(下)

确实只打印了 op=r的数据,了解结构的都知道,这是读取,包括新增,删除的事件都没有打印出来。这一度让我非常无解。

而且我翻阅了网络上的文档也没有任何结果。一切都是按照官方文档来的,按理来说不会有什么错误,所以为什么接收不到消息,我也不知道了。

如果把组件停掉,第二天再打开,他又会把最新的表的数据写进去,就是说新增的数据又接收到了,不知道什么情况,如果有兄弟遇到了我一样的情况,麻烦再下面留个言,一起探讨一下。

还有第二个坑就是这个组件的kafka或者kakfa connect经常会停掉,然后就需要重启。不知道是我服务器内存太小了还是怎么样。

后面解决了这个问题我在更新吧,最近被这个事情弄得特别头疼。

欢迎大家对dbz感兴趣的朋友加入咱们的QQ群一起探讨知识:

QQ群号:917686555