Centos7/8 以kafka-connect实现Oracle 11g R2同步至Kafka


前言

博主全程root用户操作,不是root请加sudo


一、部署所需

1.Oracle(教程)
2.Kafka(教程)
3.java(教程)

二、环境配置

systemctl disable --now firewalld  # 防火墙关闭,如果是云服务器安全组记得放行

setenforce 0  # selinux关闭
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

yum install wget tar vim net-tools curl -y    # 常用插件安装

三、部署流程

1.下载kafka-connect及存放

官网是要打包的,我已经打包好了,百度云拿就可以了,提取码:qv42

mkdir /data/kafka/kafka_2.13-2.6.0/lib  #存放kafka-connect-oracle-1.0.68
/data/kafka/kafka_2.13-2.6.0/libs存放slf4j-api-2.0.0-alpha0.jar,jsqlparser-1.2.jar,ojdbc7.jar
/data/kafka/kafka_2.13-2.6.0/config存放OracleSourceConnector.properties

2.数据库配置

开启数据库archivelog并开启日志补充记录:

su - oracle
sqlplus / as sysdba
shutdown immediate
startup mount
alter database open;
shutdown immediate
startup mount
alter database archivelog;  #开启数据库archivelog模式
alter database add supplemental log data (all) columns;   #启动日志补充记录

创建用户赋予权限使kafka-connect可以访问:

create role logmnr_role;
grant create session to logmnr_role;
grant  execute_catalog_role,select any transaction ,select any dictionary to logmnr_role;
create user kafka identified by kafkapass;
grant  logmnr_role to kafka;
alter user kafka quota unlimited on users;

3.配置文件修改

修改connect-standalone.properties配置文件:

vim /data/kafka/kafka_2.13-2.6.0/config/connect-standalone.properties  #修改下面这一条,其他默认
plugin.path=/data/kafka/kafka_2.13-2.6.0/lib

修改OracleSourceConnector.properties配置文件:

vim /data/kafka/kafka_2.13-2.6.0/config/OracleSourceConnector.properties #除了有注释,其他全部默认即可
name=oracle-logminer-connector
connector.class=com.ecer.kafka.connect.oracle.OracleSourceConnector
db.name.alias=KAFKA  #别名,随便填即可
tasks.max=1
topic=test  #同步到的topic名,如果不存在会自动生成
db.name=ORCL
db.hostname=数据库ip
db.port=1521
db.user=kafka
db.user.password=kafkapass
db.fetch.size=1
table.whitelist=数据库名.表名   #白名单,不能为空,要同步的数据库名和表名,可用test.*代表test数据库的所有表格
table.blacklist=   #黑名单,没有需求为空即可
parse.dml.data=true
reset.offset=false
multitenant=false

配置项官方说法:

名称类型描述
namestring连接器名称
connector.classstring此连接器的Java类的名称
db.name.aliasstring数据库的标识符名称(例如Test,Dev,Prod)或用于标识数据库的特定名称。此名称将用作主题和架构名称的标头
task.maxInteger创建的最大任务数。此连接器使用单个任务
topicstring消息将被写入的主题的名称。如果设置了一个值,则所有消息都将被写入此声明的主题(如果未设置),则将为每个数据库表动态创建一个主题
db.namestring要连接的数据库的服务名称或sid。通常使用数据库服务名称。
db.hostnamestringOracle数据库服务器的IP地址或主机名。
db.portIntegerOracle数据库服务器的端口号。
db.userstring用于连接到数据库以启动和执行logminer的数据库用户的名称。该用户必须提供上述必要的特权。
db.user.passwordstring数据库用户密码。
db.fetch.sizeInteger此配置属性设置Oracle行提取大小值。
table.whiteliststring用逗号分隔的将要捕获的数据库模式或表名称的列表。对于所有架构捕获。* 对于表捕获。必须指定。
table.blackliststring用逗号分隔的数据库模式或表名列表,将不会捕获。对于所有架构捕获。* 对于表捕获。必须指定。
parse.dml.databoolean如果为true,则捕获的sql DML语句将解析为字段和值;如果为false,则仅发布sql DML语句。
reset.offsetboolean如果为true,则在连接器启动时将偏移值设置为数据库的当前SCN。如果为false,则连接器将从上一个偏移值开始。
start.scnlong如果设置为,则将偏移值设置为该指定值,并且logminer将从此SCN启动。如果连接器希望从所需的SCN启动,则可以使用此属性
multitenantboolean如果为true,则启用多租户支持。如果为false,将使用单实例配置。

4.启动

cd /data/kafka/kafka_2.13-2.6.0
./bin/connect-standalone.sh ./config/connect-standalone.properties ./config/OracleSourceConnector.properties

三、测试

oracle添加数据:

su - oracle
sqlplus / as sysdba
conn 账号/密码    #连接数据库
insert into 表名(字段) values(内容)   #添加数据

kafka查看数据是否同步:

su - root
cd /data/kafka/kafka_2.13-2.6.0
./bin/kafka-topics.sh --list --zookeeper localhost:2181  #查看所有的topic
#应该除了同步的topic,会多出3个topic
#connect-configs
#connect-offsets
#connect-status
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic名 --from-beginning  #进入数据同步的topic查看历史记录
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值