Oracle ogg 同步到 kafka topic 消费

1.搭建 ogg for bigdata kafka

1.1. 创建 oracle测试表

   -- t_test_03
    create table t_test_03(
    ID NUMBER(10) NOT NULL,
    NAME VARCHAR2(100),
    TYPE VARCHAR2(10)
    );
    COMMENT ON TABLE t_test_01 IS '测试表03'COMMENT on COLUMN t_test_01.ID is '主键';
    COMMENT on COLUMN t_test_01.NAME is '名称';
    COMMENT on COLUMN t_test_01.TYPE is '类型';
    -- t_test_04
    create table t_test_04(
    ID NUMBER(10) NOT NULL,
    NAME VARCHAR2(100),
    TYPE VARCHAR2(10)
    );
    COMMENT ON TABLE t_test_01 IS '测试表04'COMMENT on COLUMN t_test_01.ID is '主键';
    COMMENT on COLUMN t_test_01.NAME is '名称';
    COMMENT on COLUMN t_test_01.TYPE is '类型';

1.2 ogg基本操作命令介绍

    # 查看所有进程
    info all 
    
    # 查看进程状态
    info <进程名称>
    
    # 查看进程状态详细信息
    info <进程名称>,detail
    
    # 查看进程抽数状态
    stats <进程名称>
    
    # 启动进程
    start <进程名称>
    
    # 关闭进程
    stop <进程名称>
    
    # 查看当前进程的报错信息
    view report <进程名称>
    
    # 新增、编辑进程文件
    edit params <进程名称>
    
    # 查看进程文件内容
    view params <进程名称>
    
    # 删除进程
    delete <进程名称>

1.3 添加全字段附加日志

# 连接数据库
dblogin USERID admin@orcl PASSWORD "admin"
-- 添加全字段附加日志
add trandata test.t_test03 allcols
add trandata test.t_test04 allcols
-- 查看
info trandata test.t_test04 allcols
info trandata test.t_test04 allcols

1.4 kafka 创建主题

    # T_TEST03 表
    kafka-topics --bootstrap-server kafkal:9092  --creare  --topic TY_TEST_T_TEST03_OGG_SR replaction-factor 3 --partitions 3 --command-config Config.properties
    # T_TEST04 表
    kafka-topics --bootstrap-server kafkal:9092  --creare  --topic TY_TEST_T_TEST04_OGG_SR replaction-factor 3 --partitions 3 --command-config Config.properties

1.5 源端ogg进程配置

1.5.1 创建抽取进程文件

    # 执行命令创建文件:
    edit params EXT_HY1
    # 添加以下内容:
    EXTRACT EXT_HY1
    SETENV (NLS_LONG="AMERICAN_AMERICA.ZHS16GBK")
    USERID <用户名>@,<实例名>,PASSWORD "<密码>"
    DISCARDFILE ./dirrpt/EXT HY1.dSC,APPEND,MEGABYTES 500
    TEANLOGOPTIONS dblogreader
    DBOPTIONS ALLOWUNUSEDCOLUHN
    WARNLONGTRANS 2h,CHECKINTERVAL 300S
    FETCHOPTIONS NOUSESNAPSHOT
    LOGALLSUPCOLS
    UPDATERECORDFORMAT FULL
    EXTTRAIL ./dirdat/tz
    TABLE TEST.T_TEST03,keycols(ID);
    TABLE TEST.T_TEST04,kevcols(ID);

1.5.2 创建投递进程文件

    # 执行命令创建文件:
    edit params PM_HY1
    # 添加以下内容:
    EXTRACT PM_HY1
    PASSTHRU
    RMTHOST <目标端ip>,MGRPORT <目标端端口>
    RMTTRAIL ./dirdat/tz
    DYNAMICRESOLUTION
    GETTRUNCATES
    TABLE TEST.T TESTO3;
    TABLE TEST.T TESTO4;

1.5.3 抽取、投递添加进程

    # 抽取添加进程
    ADD EXTRACT EXT_HY1,TRANLOG,BEGIN NOW                     -- 添加进程
    ADD EXTTRAIL ./dirdat/tz,EXTRACT EXT_HY1,MEGABYTES 500    -- 绑定trai1文件
    
    # 投递添加进程
    ADD EXTRACT PM_HY,EXTTRAILSOURCE ./dirdat/tz
    ADD RMTTRAIL ./dirdat/tz,EXTRACT PH_HY1, MEGABYTES 500
    # 如果不从当前开始 可以设置读取的位置设置一个`seq序列` 和 `偏移值` 的位置开始读取
    alter replicat SR_HY1,extseqno *,extrba *

1.6 目标端ogg进程配置

1.6.1 复制进程

 # 执行命令创建文件:
    edit params SR_HY1
    # 添加以下内容:
    REPLICAT SR_HY1
    TARGETDB LIBFIlE libggjava.so SET property=dirprm/sr_test.props
    REPLACEBADCHAR SKIP
    GETUPDATEBEFORES
    DISCARDFILE ./dirrpt/SR_HY1.dsc, append
    REPORTCOUNT EVERY 1 MINUTES, RATE
    GROUPTRANSOPS 2000
    MAP test.T TEST03 TARGET test.T TEST03:
    MAP test.T TEST04 TARGET test.T TEST04;

1.6.2 ogg2kafka 配置文件(如上1.6.1中的:sr_test.props)

    # ogg配置文件  我是放在  dirprm 目录中
    gg.handlerlist=kafkaconnect
    
    # The handler properties
    gg.handler.kafkaconnect.type=kafkaconnect
    gg.handler.kafkaconnect.kafkaProducerConfigFile=custom_kafka_producer_sr.properties
    gg.handler.kafkaconnect.mode=op
    # The following selects the topic name based on the fully qualified table name
    gg.handler.kafkaconnect.topicMappingTemplate=TY_test_${tableName}_0GG_SR
    # gg.handler.kafkaconnect.topicMappingTemplate=${tableName}
    # The following selects the message key using the concatenated primary keys
    gg.handler.kafkaconnect.keyMappingTemplate=${primaryKeys}
    gg.handler.kafkaconnect.MetaHeaderTemplate=${alltokens}
    gg.handler.kafkaconnect.includelsMissingFields=true
    
    # The formatter properties
    gg.handler.kafkaconnect.messageFormatting=op
    gg.handler.kafkaconnect.insertOpKey=I
    gg.handler.kafkaconnect.updateOpKey=U
    gg.handler.kafkaconnect.deleteOpKey=D
    gg.handler.kafkaconnect.truncateOpKey=T
    gg.handler.kafkaconnect.treatAllColumnsAsStrings=false
    gg.handler.kafkaconnect.iso8601Format=false
    gg.handler.kafkaconnect.pkUpdateHandling=update
    gg.handler.kafkaconnect.includeTableName=true
    
    gg.handler.kafkaconnect.includeOpType=true
    gg.handler.kafkaconnect.includeOpTimestamp=true
    gg.handler.kafkaconnect.includeCurrentTimestamp=true
    gg.handler.kafkaconnect.includePosition=true
    gg.handler.kafkaconnect.includePrimaryKeys=false
    gg.handler.kafkaconnect.includeTokens=false
    
    goldengate.userexit.writers=javawriter
    javawriter.stats.display=TRUE
    javawriter.stats.full=TRUE
    
    gg.log=log4j
    gg.log.level=INFO
    gg.report.time=30sec
    
    gg.classpath=dirprm/:/opt/cloudera/parcels/CDH-7.1.7-1.cdh7.1.7.p0.15945976/1ib/kafka/libs/*:/goldengate_test/confluent-6.0.1/share/iava/kafka-serde-tools/*:/goldengate_test/confluent-6.0.1/share/java/kafka/*:/goldengate_test/confluent-6.0.1/share/java/confluent-comon/*
    javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar
    -Djava.security.krb5.conf=/etc/krb5.conf
    -Diava.security.auth.login.config=/goldengate_test/ogg4bd19/dirprm/kafka_client_jaas.conf

1.6.3 kafka配置文件(如上1.6.2中custom_kafka_producer_sr.properties)

#   kafka 配置文件  我是放在  dirprm 目录中
    bootstrap.servers=ip1:9092,ip2:9092,ip3:9092
    client.id=0GG
    acks=1
    #AVRO转换器设置
    key.converter=io.confluent.connect.avro.AvroConverter
    value.converter=io.confluent.connect.avro.AvroConverter
    key.converter.schema.registry.url=http://kafkal:8081,http://kafka2:8081,http://kafka3:8081
    value.converter.schema.registry.url=http://kafka1:8081,http://kafka2:8081,http://kafka3:8081
    converter.type=key
    converter.type=value
    converter.type=header
    #性能调整
    buffer.memory=33554432
    batch.size=16384
    Linger.ms=0
    reconnect.backoff.ms=1000
    
    value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
    key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=GSSAPI
    sasl.kerberos.service.name=kafka
    
    schema.registry.url=http://kafkal:8081,http://kafka2:8081,http://kafka3:8081
    #SR鉴权
    key.converter.basic.auth.credentials.source=USER_INFO
    kev.converter.basic.auth.user.info=username:password
    value.converter.basic.auth.credentials.source=USER_INFO
    value.converter.basic.auth.user.info=username:password

1.6.4 复制进程添加

   # 复制添加进程   begin now 从默认位置读取
    add replicat SR_HY1 EXTTRAIL./dirdat/tz,NODBCHECKPOINT,begin now
    # 如果不从当前开始 可以设置读取的位置设置一个`seq序列` 和 `偏移值` 的位置开始读取
    alter replicat SR_HY1,extseqno *,extrba *

1.7 启动

1.7.1 源端启动

   # 源端进入到ogg目录下 
    ./ggsci 

在这里插入图片描述

    # 启动抽取进程
    start EXT_HY1
    # 启动投递进程
    start PM_HY1
    # 查看进程状态
    info EXT_HY1
    info PM_HY1

在这里插入图片描述

1.7.2 目标端启动

 # 目标端进入到ogg目录下 
    ./ggsci 
    
    # 启动复制进程
    start SR_HY1
    # 查看进程状态
    info SR_HY1

在这里插入图片描述
1.7.3 模拟9条数据入库利用java模拟消费者消费数据成功
在这里插入图片描述
1.7.4 查看进程状态信息(可以看到9条 insert 数据记录)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thy的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值