基于kafka的接口平台(数据库源Oracle同步增删改语句至kafka)

从Oracle数据库捕获所有基于行的DML更改并将这些更改流式传输到Kafka。变更数据捕获逻辑基于Oracle LogMiner解决方案。
在这里插入图片描述

一、测试环境准备:
1,搭建环境准备,这里准备了一台linux云服务器配置为2核4G 2M带宽 50G系统盘
2,执行lscpu查看服务器配置
在这里插入图片描述

3,执行free -m查看内存
在这里插入图片描述

二、搭建zookeeper:
1,zookeeper镜像采用wurstmeister/zookeeper:latest拉取zookeeper镜像
docker pull wurstmeister/zookeeper
在这里插入图片描述

2,启动zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
在这里插入图片描述

3,查看zookeeper启动日志
docker logs -f zookeeper
在这里插入图片描述

4,查看zookeeper安装路径
docker exec zookeeper pwd
在这里插入图片描述

5,查看zookeeper运行状态
docker exec zookeeper bin/zkServer.sh status
在这里插入图片描述

6,zookeeper搭建完成
三、搭建kafka:
1,kafka镜像采用wurstmeister/kafka:latest 拉取kafka镜像
docker pull wurstmeister/kafka
在这里插入图片描述

2,启动kafka
docker run -d --name kafka
–env KAFKA_ADVERTISED_HOST_NAME=localhost
–env KAFKA_ZOOKEEPER_CONNECT=172.21.0.11:2181
–env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.21.0.11:9092
–env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
–env KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
–net=host wurstmeister/kafka
在这里插入图片描述

3,查看kafka启动日志
docker logs -f kafka
在这里插入图片描述

4,查看kafka版本
docker exec kafka find / -name *kafka_* | head -1 | grep -o ‘\kafka[^\n]*’
在这里插入图片描述

5,kafka搭建完成
四、搭建kafka_manage
1,拉取镜像
docker pull sheepkiller/kafka-manager
在这里插入图片描述

2,启动kafka_manage
docker run -d --name kafka-manager -p 9000:9000 -e ZK_HOSTS=“172.21.0.11:2181” --net=host sheepkiller/kafka-manager
在这里插入图片描述

3,访问172.21.0.11:9000添加kafka cluster

在这里插入图片描述

4,添加测试topic
在这里插入图片描述

五、搭建kafka-connect-ui
1,拉取镜像landoop/kafka-connect-ui
docker pull landoop/kafka-connect-ui
在这里插入图片描述

2,启动镜像
docker run -d -it -p 8000:8000 --name kafka-connect-ui -e “CONNECT_URL=http://172.21.0.11:8083” landoop/kafka-connect-ui
在这里插入图片描述

3,访问172.21.0.11:8000

六、搭建oracle
1,拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
在这里插入图片描述

2,启动镜像
docker run -d -p 1521:1521 --name oracle registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
在这里插入图片描述

3,进入oracle配置环境变量,建立软连接
docker exec -it oracle bash
su root
密码:helowin
vi etc/profile

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2    
export ORACLE_SID=helowin     
export PATH=$ORACLE_HOME/bin:$PATH

source /etc/profile
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
su - oracle
在这里插入图片描述
在这里插入图片描述

4,数据库必须处于archivelog模式,并且必须启用补充日志记录。
sqlplus /nolog
conn /as sysdba
SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog;
SQL>alter database open;
SQL>alter database add supplemental log data (all) columns;
在这里插入图片描述

5,修改system和sys密码,设置密码永不过期(可以跳过)
SQL>alter user system identified by system;
SQL>alter user sys identified by sys;
SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
在这里插入图片描述

6,为了成功执行连接器,必须使用特权Oracle用户启动连接器。如果给定的用户具有DBA角色,则可以跳过此步骤。否则,需要执行以下脚本来创建特权用户
SQL>create role logmnr_role;
SQL>grant create session to logmnr_role;
SQL>grant execute_catalog_role,select any transaction ,select any dictionary to logmnr_role;
SQL>create user kafka identified by kafka;
SQL>grant logmnr_role to kafka;
SQL>grant connect,resource,dba to kafka;
SQL>alter user kafka quota unlimited on users;
在这里插入图片描述

7,查看log list
在这里插入图片描述

8,创建测试表MYKAFKA

在这里插入图片描述

七、安装kafka-connect-oracle插件
1,clone 项目插件https://github.com/erdemcer/kafka-connect-oracle,打包编译
在这里插入图片描述

2,将kafka-connect-oracle-master\target\kafka-connect-oracle-1.0.jar和kafka-connect-oracle-master\lib\ojdbc7.jar拷贝至容器kafka: /opt/kafka/lib下:
docker cp kafka-connect-oracle-1.0.jar kafka:/opt/kafka/libs/kafka-connect-oracle-1.0.jar
docker cp ojdbc7.jar kafka:/opt/kafka/libs/ojdbc7.jar
docker exec -it kafka /bin/bash
cd opt/kafka/libs/
ls
在这里插入图片描述

3,修改opt/kafka/config/connect-distributed.properties
bootstrap.servers=172.21.0.11:9092
rest.port=8083
rest.advertised.port=8083
4,启动connect-distributed.sh
connect-distributed.sh /opt/kafka/config/connect-distributed.properties
在这里插入图片描述

或者后台启动:
connect-distributed.sh -daemon /opt/kafka/config/connect-distributed.properties
5,刷新172.21.0.11:8000

6,创建连接OracleSourceConnector
在这里插入图片描述

connector.class=com.ecer.kafka.connect.oracle.OracleSourceConnector
reset.offset=false
db.hostname=172.21.0.11
tasks.max=1
db.user.password=kafka
table.blacklist=KAFKA.AA
table.whitelist=KAFKA.MYKAFKA
db.user=kafka
db.port=1521
db.fetch.size=1
multitenant=false
topic=oracle_test
parse.dml.data=true
db.name=helowin
db.name.alias=test
8,创建成功

八、测试数据实时同步与消费
1,对数据库MYKAFKA做增、改、删操作,同步消费kafka
在这里插入图片描述

2,同步消费kafka
docker exec kafka kafka-console-consumer.sh --bootstrap-server 172.21.0.11:9092 --from-beginning --topic oracle_test
在这里插入图片描述

3,消费数据格式
INSERT INTO “KAFKA”.“MYKAFKA” (“ID”, “NAME”) VALUES (‘1’, ‘zhangsan’);
在这里插入图片描述

UPDATE “KAFKA”.“MYKAFKA” SET “NAME”=‘lisi’;
在这里插入图片描述

DELETE FROM “KAFKA”.“MYKAFKA” WHERE ID = 1
在这里插入图片描述

九、后续
当我们订阅的表的增删改的消息实时同步到kafak后,我们的应用再去消费该数据进行自己相应的逻辑处理即可

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值