debezium docker订阅oracle 11g

这篇具有很好参考价值的文章主要介绍了debezium docker订阅oracle 11g。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

debezium 依赖于kafka,kafka依赖于zookeeper。
zookeeper实现了kafka消息的一致性,debezium 把订阅的数据推送到kafka

dockerFile

FROM debezium/connect:1.6
ENV KAFKA_CONNECT_JDBC_DIR=$KAFKA_CONNECT_PLUGINS_DIR/kafka-connect-jdbc
ENV INSTANT_CLIENT_DIR=/instant_client/

USER root

USER kafka
# Deploy Oracle client and drivers

COPY instant_client/* $INSTANT_CLIENT_DIR
COPY instant_client/xstreams.jar /kafka/libs
COPY instant_client/ojdbc8.jar /kafka/libs

INSTANT_CLIENT_DIR 为oracleCilent,去官网下载即可,oracle11g的client是jdk8使用的,而debezium是jdk11, 这里我使用的是oracle12的client,测试可以使用

docker-compose 可根据github的推荐进行修改
https://github.com/debezium/debezium-examples/tree/master/tutorial

docker-compose.yaml

version: '2'
services:
  zookeeper:
    image: debezium/zookeeper:1.6
    ports:
     - 2181:2181
     - 2888:2888
     - 3888:3888
    volumes:
     - D://software\docker-volume\docker_debezium/volume:/volume
    privileged: true
    networks:
      proxy:
        ipv4_address: 192.168.192.3
  kafka:
    depends_on: 
      - zookeeper
    image: debezium/kafka:1.6
    ports:
     - 9092:9092
    links:
     - zookeeper
    environment:
     - ZOOKEEPER_CONNECT=zookeeper:2181
     - cluster.id=012344
    volumes:
     - D://software\docker-volume\docker_debezium/volume:/volume
     - D://software\docker-volume\docker_debezium/kafka/data:/kafka/data
     - D://software\docker-volume\docker_debezium/kafka/logs:/kafa/logs
    cap_add:
     - ALL # 开启全部权限
    privileged: true #设置容器的权限为root
    networks:
      proxy:
        ipv4_address: 192.168.192.4
  connect:
    depends_on: 
      - kafka
    image: debezium-connenct-oracle
    build:
      context: D:\software\docker-volume\docker_debezium
      dockerfile: dockerFile
      args:
        DEBEZIUM_VERSION: 1.6
    ports:
     - 8083:8083
     - 5005:5005
    links:
     - kafka
    environment:
     - BOOTSTRAP_SERVERS=kafka:9092
     - GROUP_ID=1
     - CONFIG_STORAGE_TOPIC=my_connect_configs
     - OFFSET_STORAGE_TOPIC=my_connect_offsets
     - STATUS_STORAGE_TOPIC=my_connect_statuses
     - LD_LIBRARY_PATH=/instant_client
     - KAFKA_DEBUG=true
     - DEBUG_SUSPEND_FLAG=n
     - JAVA_DEBUG_PORT=0.0.0.0:5005
    volumes:
     - D://software\docker-volume\docker_debezium/volume:/volume 
    privileged: true
    networks:
      proxy:
        ipv4_address: 192.168.192.5
  kafkaui:
    depends_on: 
      - kafka
    image: provectuslabs/kafka-ui:latest
    ports:
     - 8811:8080
    links:
     - kafka
    environment:
     - KAFKA_CLUSTERS_0_NAME=clusters
     - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
    networks:
      proxy:
        ipv4_address: 192.168.192.6
     

networks:
  proxy:
    ipam:
      config:
      - subnet: 192.168.192.0/20

注意要将kafka的data映射出去,因为kafka容器重新构建会丢失未消费的消息。
所有volumes的映射根据自己需求修改
kafka的cluster.id最好是随意写一个,这里把所有容器的网络ip都定义好,方便后面使用。
容器启动后即可访问kafkaUi

oracle执行下列语句用以支持订阅

ALTER TABLE 表名 ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA

debezium docker订阅oracle 11g
此时的kafka地址即为上面设置的192.168.192.4
使用postman或者curl给debezium发送创建连接器

http://localhost:8083/connectors/

{
  "name": "oracle-connector",
  "config": {
    "connector.class": "io.debezium.connector.oracle.OracleConnector",
    "database.hostname": "xxx",
    "database.port": "1521",
    "database.user": "xxx",
    "database.password": "xxx",
    "database.server.name": "xxx",
    "database.history.kafka.bootstrap.servers": "192.168.192.4:9092",
    "database.history.kafka.topic": "oracle-history",
    "topic.prefix":"prefix",
    "database.dbname":"xxx",
    "table.include.list": "你订阅的表",
    "snapshot.mode": "schema_only",
    "database.history.skip.unparseable.ddl":"true"
  }
}

接口返回为你的配置即配置成功

使用
get http://localhost:8083/connectors/${connector}/status 获取连接器运行状态
如上则是 http://localhost:8083/connectors/oracle-connector/status

备注
“snapshot.mode”: "schema_only"表示不同步表所有信息,只同步当前增量数据。
“database.history.skip.unparseable.ddl”:“true” 在对ddl语句解析失败时忽略,程序很容易j解析ddl异常如

 Ignoring unparsable DDL statement 'alter table SYSTEM.LOGMNR_TABCOMPART$ modify partition P470 REBUILD UNUSABLE LOCAL INDEXES;': {}   [io.debezium.connector.oracle.OracleSchemaChangeEventEmitter]

io.debezium.text.ParsingException: DDL statement couldn't be parsed. Please open a Jira issue with the statement 'alter table SYSTEM.LOGMNR_TABCOMPART$ modify partition P470 REBUILD UNUSABLE LOCAL INDEXES;'

而异常后连接器会直接挂掉,配置忽略后异常不会挂而是忽略此错误

至此配置完成,进入kafkaui查看数据
debezium docker订阅oracle 11g
有一个以你设置的前缀开头的和你表名结尾的队列即为你订阅的表,如上配置则为
prefix.你订阅的表
你对表 insert、update、delete的数据全部同步至此,消息包含before、after字段用以对比更改前后数据。

kafka 的配置修改 connect-distributed.properties

key.converter.schemas.enable=false
value.converter.schemas.enable=false

用以精简json

至此搭建已完毕。文章来源地址https://www.toymoban.com/news/detail-449518.html

到了这里,关于debezium docker订阅oracle 11g的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker安装Oracle11g(安装简单)

    背景 在Linux中安装oracle非常麻烦,相信每个人也会遇到各种坑。为了一次装好,也方便将来直接可以导出镜像在各平台移植使用,所以选择用docker安装 Oracle。 使用官方镜像下载速度非常慢,因此,我们可以使用阿里镜像。 拉取镜像 拉取oracle_11g镜像 拉取oracle镜像(oracle 11.0

    2024年02月13日
    浏览(51)
  • Win11 Docker运行Oracle11g之数据导入(二)

    目录 一、dmp数据导入 二、数据库字符编码修改 三、注意事项 四、参考资料         上文说道imp工具导入: 又报错:vlue too large for column \\\"SCOTT\\\".\\\"xxx_HEAD\\\".\\\"xxx_NAME\\\"(actual:21,maximum:14)         报错提示:Oracle ORA-12899         解决方法:修改该字段所占字符空间后再重新导

    2024年02月04日
    浏览(43)
  • Debezium-增量迁移之 Oracle 迁移所需权限

    -- 创建用户 create user TCK identified by oracle; -- 赋权 grant connect,resource to TCK; -- 删除权限 revoke select any table from TCK; revoke select any DICTIONARY from TCK; -- 删除用户 CASCADE(用户下的数据级联删除) drop user TCK CASCADE -- 查询权限列表 select * from user_sys_privs where privilege in (\\\'SELECT ANY TABLE\\\',\\\'SEL

    2024年02月09日
    浏览(41)
  • 【Docker】如何在内网快速搭建docker并安装Oracle11g

    docker是一个用Go语言实现的开源项目,可以让我们方便的创建和使用容器,docker将程序以及程序所有的依赖都打包到docker container,这样你的程序可以在任何环境都会有一致的表现,这里程序运行的依赖也就是容器就好比集装箱,容器所处的操作系统环境就好比货船或港口,程

    2024年02月02日
    浏览(56)
  • docker下安装oracle11g(一次安装成功)

    本文参考:https://blog.csdn.net/Alex_81D/article/details/123995878 本文主要记录在docker下安装oracle11g的整体流程; 拉取 oracle 11g 镜像(有6g,要等较长的时间): 执行以下命令以创建并运行 Oracle 11g 容器(其中: 30026 为映射主机端口, 8081 为管理界面端口, helowin 为Oracle数据库唯一实例

    2024年02月08日
    浏览(45)
  • 【Docker】docker启动oracle11g并初始化数据,部署和使用

    前提:已经在docker中安装好Oracle 1.启动docker : 出现问题,请查看:Exited 139解决Window下docker启动oracle11g失败 2.进入容器 : [containerId]为你的容器名或者id 3.切换用户 以及 创建表空间存储位置 : 4.进入DBA,创建表空间,创建用户,授权 : 5.其他拓展 : 导出 导入

    2024年02月14日
    浏览(43)
  • 超简单!超详细!使用Docker Desktop部署Oracle11g(其他oracle版本也适用)

    完全没接触过此软件的建议看看视频了解一下,这边推荐一个视频,1.25倍速跳着看,稍微了解一下操作流程更方便了解此文 注意,安装完打开后若是提示你wsl版本过低,请更新wsl版本并默认选中wsl2,两句命令的事,若你的windows是家庭版,请自行搜索wsl2安装方法,其他用户

    2024年02月04日
    浏览(55)
  • Debezium系列之:使用 Strimzi 将 Kafka 和 Debezium 迁移到 Kubernetes

    在本文中,将探讨在生产中实现debezium与K8s的结合: 在 Kubernetes 集群中安装和管理 Apache Kafka 集群。 在 Kubernetes 集群中部署 Debezium Kafka Connect。 Kubernetes 是一个开源容器编排器,本文使用 minikube 作为 Kubernetes 集群,但相同的步骤在任何其他实现中都应该有效。 启动集群 在终

    2024年02月15日
    浏览(46)
  • Debezium系列之:详细整理Debezium和Kafka的Transforms类型和全部功能

    Kafka Connect 是一个在 Apache Kafka 与外部系统之间进行数据传输的框架,其主要作用是实现可靠的数据集成和流转。 Transforms 是 Kafka Connect 中用于对数据进行处理和转换的一个重要特性。 通过使用 Transforms,用户可以对 Kafka Connect 中传输的数据进行一些处理和转换,例如过滤、格

    2024年02月10日
    浏览(42)
  • Debezium同步Mysql数据到Kafka

    Kafka:3.3.2 mysql-connector:1.8.1 (0)前提是安装好mysql,开启binlog (1)下载kafka (2)下载mysql-connector插件 (3)编辑配置文件 (4)启动kafka自带的zk (5)启动kafka (6)启动connect (7)调用api 注意:当成功调用api,创建此连接器后会有如下主题产生:dbhistory.inventory、mysql1、

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包