kafka 捕获 oracle,[kafka同步数据库]使用kafka connect 实现从oracle到kafka的数据同步

bc3f9276acf88283a0569b9b9ef9ee92.png

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

1.登陆Oracle:

这样oracle就启动了。为了使在kafka的服务器上可以访问到oracle这台服务器的ip,需要在oracel的安装目录下(/data/oracle/product/11.2.0/db_1/network/admin)的listener.ora中添加ip监听:

bca7d9dbe7c3b68251771812b66085bb.png

然后新建一个会话登陆自己的账号:

创建我们要用的数据库:

创建自增序列,使主键自增:

创建触发器:

为时间列创建一个索引:

插入数据:

这里要注意insert之后要commit一下,否则topic中读不到这条记录。

2.启动kafka。

3.

从confluent官网下载oracle的jdbc connector插件:https://www.confluent.io/connector/kafka-connect-jdbc/#download

还要下载一个oracle的jdbc驱动jar,放在kafka的安装包下的lib目录下。

创建一个plugin.path目录:/usr/local/wyh/kafka/kafka_2.12-2.1.0/share/java,将刚才下载的插件压缩包解压后的Lib下的jar包都放在这个目录下。注意ojdbc.jar的版本要和jdk以及oracle的版本对应。我这里使用的是jdk1.8+oracle11g。

e6bd97e41b295260d5d2b5738fd92c62.png

4.在kafka安装包下的config中的connect-standalone.properties文件中修改plugin.path:

d30cc264bd449509030c8ec2a693ac30.png

5.在config下创建一个connector的配置文件:

添加如下内容:

这里一定要注意在oracle内部表名和列名都是大写,所以配置中table.whitelist和incrementing.column.name都要大写,否则报错。此处的name是连接器名称,是唯一的,不能重复。connector.class是连接器的类名。在连接oracel时,username和password最好和url分开写,因为分开写会进行隐藏密码,否则直接写在url中会明文显示密码。table.whitelist是表示允许复制的表。mode表示增量查询的模式,也就是根据哪种模式来跟踪数据的更新。incrementing.column.name是具体以哪个列名来作为mode 下的跟踪。topic.prefix是在表很多的情况下可以根据topic的前缀对每一个表都有一个不同的topic,这里我们只有一个表。输出数据的topic就是topic.prefix加上表名。这个topic会自动创建。topic.prefix是必须指定的。

6.启动connector:

7.启动consumer:

得到的消息如图:

f47f61db21d7a575a9a24c785ee4212f.png

图中payload中的数据就是数据库中的每条数据。

这里先暂存一个疑问:为什么Oracle中的id是1,2,3,4,5,但是topic中读取消息的id是字母(如:AQ==)。

针对于mode为incrementing的connector,只适用于insert类型的数据变化,是通过检测新增的ID大于之前读取的最大的ID来确定是否是要更新的数据。对于update和delete的数据在这种模式下无法检测更新。

这里我们再插入一条数据:

再看topic:

fa7582f461f9420114095731cfe1a93b.png

这样也就实现了oracle中的数据在Insert时与kafka同步。

相关推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值