`
sheungxin
  • 浏览: 103446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle数据同步解决方案之databus

阅读更多
  • 概述
目前了解到基于Oracle的开源数据同步项目有yugong、databus、SymmetricDS,之前尝试了yugong,很容易上手。使用时需要注意两点:1、物化视图和回表查询对源库会产生比较大的影响;2、每一个表有一个单独的实例去处理整个流程,数据抽取、转换、入库不能分离;3、yugong设计的目的是为了去IOE,做切库使用,多次增量同步确认后即可停止增量同步。若需要持续增量同步,需要每个表提供一个线程,不支持轮询持续同步。

  • databus介绍
databus是基于SCN的数据同步项目,使用触发器、JOB更新SCN。相对于yugong,其最大的优点在于server、client分离,并提供完善的消费机制。详细可参考:
引用
引用
引用

  • databus使用
databus使用gradle作为编译工具,执行命令:gradle -Dopen_source=true assemble进行打包,打包时编译一直失败:"UTF-8不可映射字符",尝试了不少网上的的gradle对UTF-8的支持配置方案都不行。后来看了下报错信息,编码问题都集中在同一个类的注释中,就手动更改了类的注释(两个符号),成功编译。

1、创建数据库账户
./createUser.sh [db_name] [db_pwd] 192.168.11.129:1521/ORCL1 [table_space] [/mnt/u001/oracle/data/DB] > /tmp/createUser.out
2、数据库添加字段(txn)、视图、package(SYNC_ALERT、SYNC_CORE)、procedure(COMPILE_ALLOBJECTS)、trigger(before 更新txn)、序列、Jobs(J_CALL_SIGNAL、J_COALESCE_LOG)
./createSchema.sh db_name/db_pwd@192.168.11.129:1521/ORCL1 [tab、view文件位置] > /tmp/createSchema.out
重复执行会在sy$sources表和sync_core_settings表中形成重复数据,需删除。tab和view文件每个表对应一个,tablespace文件中存放表空间名

3、生成EventSchema,进入databus-util-cmdline\databus2-cmdline-tools-pkg下,执行gradle assemble,打包EventSchema生成工具解压,进入bin文件夹执行:
./dbus2-avro-schema-gen.sh -namespace com.linkedin.events.example.person -recordName [tablename] \
    -viewName "sy\$person" -avroOutDir /root/databus-master/databus2-example/databus2-example-relay-pkg/schemas_registry -avroOutVersion 1 \
    -javaOutDir /root/databus-master/databus2-example/databus2-example-person/src/main/java \
   -database jdbc:oracle:thin:@192.168.11.129:1521:ORCL1  -userName [db_name] -password [db_pwd]
执行上述命令:生成实体类、.avsc文件

4、编写server代码:a、编写sources-person.json,每一个表对应一个json文件;b、把上面生成的avsc文件名写在index.schemas_registry中;c、server启动类

5、编写client代码:参考demo

6、编译打包:分别进入到databus2-example-client-pkg和databus2-example-relay-pkg下,运行命令:gradle -Dopen_source=true clean assemble test,将databus-master/build下databus2-example-client-pkg和databus2-example-relay-pkg下distribution文件夹下的tar包拷到linux下,解压,在bin下运行./start-example-relay.sh person和 ./start-example-client.sh person

总结:
1、需要给每一个同步的源表增加一个txn字段,demo中.tab文件中是create语句,若表存在可改为update语句
2、提供了很多脚本文件,基本上都涉及数据库操作,因此执行脚本需要在linux环境且系统支持sqlplus。目前不提供bat文件,无法再window下执行
3、client与server通讯提供http、rm,rmi默认关闭。但测试时发现client端每次启动时都报错,rmi链接被拒绝掉了,不影响使用
4、avsc、实体类需要通过脚本生成,不支持多表批量生成。还需要编写json文件。总之,window下开发不是很方便,需要重构脚本简化准备工作。

参考:
引用
引用
0
0
分享到:
评论

相关推荐

    分布式数据同步系统Databus.zip

    LinkedIn最近发布了一套源无关的分布式数据同步系统Databus。简单说,就是把交易数据同步到各个不同的应用中。一个大的特色是这系统采用pull模式从log中取得数据,以达到对生产系统最小影响。 标签:...

    databus-master.zip

    databus-master.zip

    服务集成总线,DataBus

    方便快速的集成WebService,WebApi,动态库,数据库,并转化为制定的服务。服务转化,服务集成.一个自己做的工具,算是给大家提供一种方法吧。

    LinkedIn开源低延时变化数据捕获系统Databus源代码

    LinkedIn开源了其低延时变化数据捕获系统Databus,该系统可以在MySQL以及Oracle数据源上捕获数据,当下LinkedIn只开源了Oracle上的连接器。Databus作为LinkedIn生态系统中的一致性保障组件,在低延时的情况下仍然...

    databus数据库

    master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看)

    DMETL_Databus

    DMETL_Databus

    databus:cassandra 中的时间序列数据可视化(NREL 的开源数据总线项目)

    数据总线 NREL 使用此存储库进行数据总线开发。 如果您要试用,请单击文档链接以开始安装 ... 如果论坛中没有解决某些问题,您可以通过向我们发送电子邮件,上论坛帖子的链接,我们将确保有人回复论坛。

    大数据技术体系图谱.pptx

    数据传输 数据同步 DataX Kettle Cannal Sqoop SymmetricDS OGG(Oracle Golden Gate) 大数据技术体系图谱全文共96页,当前为第10页。 数据传输 数据订阅 Databus 01 Wormhole 03 Otter 02 阿里云 DTS 04 大数据技术...

    Elysium-DataBus

    极速数据总线执照Copyright 2021 ZhupfLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License ...

    FPGA设计 6位8通道同步采集AD芯片MAX11046 Verilog驱动源码.zip

    FPGA设计 6位8通道同步采集AD芯片MAX11046 Verilog驱动源码: /* * @Description: MAX11046 divider */ module max11046_dev( input clk, input rst_n, input en, //开始采集信号 input ...

    Rebus.DataBus.Poc:数据总线实现的概念证明,表作为队列

    Rebus 的概念验证数据总线实现 未在生产中使用或测试。 大约花两天时间。 特征: 数据总线属性ala NServicebus。 数据总线传输实现为文件共享,可以编写您自己的IDataBus 。 在数据总线上留下一个副本。 默认的 ...

    virtuoso-sparql-endpoint-quickstart:用预加载了最新DBpedia数据集的Virtuoso创建一个docker映像

    Virtuoso SPARQL端点快速入门创建并运行一个Virtuoso开源实例,其中包括一个预装有Databus集合和已安装VOS DBpedia插件的SPARQL端点。快速开始运行Virtuoso SPARQL Endpoint快速入门需要在系统上安装Docker和Docker ...

    pingpong-nodejs:Databus乒乓示例的Javascript实现

    Databus Ping Pong用Java语言实现 描述 该存储库包含用于构建以Javascript实现的Databus Ping Pong应用程序示例的源文件。 请参阅以获取有关此应用程序示例的更多信息。 概述 node:10.16.3-alpine Ping Pong应用程序...

    Arduino_GFX:Arduino GFX开发用于各种彩色显示器和各种数据总线接口

    Arduino_GFX Arduino_GFX是一个Arduino图形库,支持带有各种数据总线接口的各种显示器。 该库开始从Adafruit_GFX,TFT_eSPI,Ucglib等重写。 各种数据总线接口 ...Arduino_DataBus *bus = new Arduino_HWSP

    GNSEC 2022年全球下一代软件工程线上峰会PPT合集(8份).zip

    GNSEC 2022年全球下一代软件工程线上峰会PPT合集(8份)。 ...数据总线平台DataBus最佳实践 现代化自建监控告警平台搭建决策实践 线下全仿真环境的建设与维护 云原生开发团队发展过程中的效能之路

    RedaApi

    ReDa-Api 通过REST提供ReDa数据的节点应用程序。 构建该应用程序的目的是为我以前的雇主的“ Data Lake”创建一个... Databus / Avro组件用于将数据发布到我们的ELK堆栈,用户可以在其中有效地搜索和可视化历史数据。

    MicroCommunityWeb-其他

    4、调整与HC物联网系统的对接方式,加入 数据同步工具databus 7、加入线上线下缴费时 微信消息通知业主和物业相关人员 8、增加小程序远程开门功能 9、加入催缴单批量导出打印功能,方便物业催缴 10、将HC物联网系统...

    MicroCommunity-其他

    加入 数据同步工具databus7、加入线上线下缴费时 微信消息通知业主和物业相关人员8、增加小程序远程开门功能9、加入催缴单批量导出打印功能,方便物业催缴10、将HC物联网系统改成多租户多小区模式,支持 单小区部署...

    minigame-lockstep-demo

    运行截图文件目录|-- src |-- config.js // 游戏逻辑相关配置 |-- databus.js // 全局状态管理器 |-- gameserver.js // 帧同步服务使用核心代码 |-- index.js // 游戏主函数 |-- base // 游戏基础类集合 | |-- bg.js...

    DO-178B cast-16

    Certification Authorities Software Team (CAST) Position Paper CAST-16 Databus Evaluation Criteria Completed February 2003

Global site tag (gtag.js) - Google Analytics