目前了解到基于Oracle的开源数据同步项目有yugong、databus、SymmetricDS,之前尝试了yugong,很容易上手。使用时需要注意两点:1、物化视图和回表查询对源库会产生比较大的影响;2、每一个表有一个单独的实例去处理整个流程,数据抽取、转换、入库不能分离;3、yugong设计的目的是为了去IOE,做切库使用,多次增量同步确认后即可停止增量同步。若需要持续增量同步,需要每个表提供一个线程,不支持轮询持续同步。
databus是基于SCN的数据同步项目,使用触发器、JOB更新SCN。相对于yugong,其最大的优点在于server、client分离,并提供完善的消费机制。详细可参考:
引用
引用
引用
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下开发不是很方便,需要重构脚本简化准备工作。
参考:
引用
引用
分享到:
相关推荐
LinkedIn最近发布了一套源无关的分布式数据同步系统Databus。简单说,就是把交易数据同步到各个不同的应用中。一个大的特色是这系统采用pull模式从log中取得数据,以达到对生产系统最小影响。 标签:...
Oracle数据集成平台是一种先进的企业级数据管理解决方案,旨在帮助企业实现数字化转型并利用数据驱动业务。该平台的核心在于提供高效、可靠的数据集成能力,确保企业在快速变化的IT环境中能够及时、准确地获取和利用...
2. **数据仓库构建**:通过Databus,可以实时地将业务数据库的数据同步到数据仓库,进行离线深度分析。 3. **多数据中心同步**:在分布式部署的环境中,Databus有助于实现跨数据中心的数据一致性和灾备。 4. **应用...
1. **数据同步**:Databus可以作为一个轻量级的数据同步工具,帮助实现跨数据中心的数据同步。 2. **实时数据分析**:通过捕捉MySQL的Binary Log,Databus能够实现实时的数据变化捕获,为实时分析系统提供数据源。 3...
数据库常常是各种服务的数据源头,集成数据库意味着DataBus可以处理SQL查询,甚至可能支持ORM(Object-Relational Mapping)技术,将数据库操作转化为面向对象的编程方式。 至于提供的源代码文件,如app.config,这...
DMETL_Databus 是一种高度灵活的数据交换解决方案,旨在简化异构系统间的通信。通过其内置的消息服务器、数据总线服务器和详细的配置机制,该平台能够在确保数据安全性的同时,高效地实现数据交换。无论是对于企业...
实时数仓是现代大数据处理体系中的重要组成部分,用于实时...Canal适合需要高度定制和灵活控制的场景,Maxwell适合快速部署的小型项目,Databus适合大型企业级的复杂需求,而DTS则提供了一站式的云端数据传输解决方案。
LinkedIn开源了其低延时变化数据捕获系统Databus,该系统可以在MySQL以及Oracle数据源上捕获数据,当下LinkedIn只开源了Oracle上的连接器。Databus作为LinkedIn生态系统中的一致性保障组件,在低延时的情况下仍然...
为了支持上述生态系统,LinkedIn开发了一套强大的数据基础设施解决方案,其中最关键的是Databus:一个时间线一致的变更数据捕获系统。 #### Databus的作用与功能 Databus在LinkedIn中的作用是作为数据变更的传输层...
达梦数据交换平台创新地将传统的 ETL 工具(Extract、Transform、Loading)与分布式消息平台相结合,实现了对数据抽取、传输、整合、以及装载的一站式支持,是构建数据中心、数据仓库、数据交换和数据同步等数据集成...
此外,Canal并非唯一的数据库同步解决方案,市场上还有LinkedIn的Databus、Tungsten Replicator和Open-Replicator等开源产品。这些工具各具特色,但Canal凭借其高效、稳定和丰富的功能,在阿里巴巴集团和开源社区中...
数据同步工具如DataX、Kettle、Cannal、Sqoop、SymmetricDS和OGG (Oracle Golden Gate)则确保数据在不同系统间的一致性。数据订阅服务如Databus、Wormhole、Otter和阿里云DTS允许实时或近实时的数据流转。 数据存储...
Ark平台是贝壳找房针对流式数据处理的定制化解决方案,它具备丰富的流处理能力,可以处理复杂的数据流任务,同时具有高度的可扩展性和稳定性。Ark平台的设计和实施展示了贝壳找房在处理海量实时数据方面的技术实力...
数据总线 NREL 使用此存储库进行数据总线开发。 如果您要试用,请单击文档链接以开始安装 ... 如果论坛中没有解决某些问题,您可以通过向我们发送电子邮件,上论坛帖子的链接,我们将确保有人回复论坛。
Canal适合需要深度定制和精细控制的环境,Maxwell则以其简洁的API和易用性受到青睐,Databus在实时数据处理和高可用性方面表现出色,而阿里云DTS为用户提供了云环境下的便捷数据迁移和同步服务。选择哪种工具取决于...
7. **产品展示**:展示了贝壳找房的解决方案和技术创新,可能包括定制化的数据分析工具或服务。 8. **总结**:对整个实践进行了回顾,可能提出了未来的发展方向和待解决的问题。 综上所述,这份文档深入探讨了贝壳...
它依赖于MQ、Databus、Job和ETL等组件,随着数据量和查询复杂性的增加,系统的可维护性、数据一致性和性能面临挑战。 - SnappyData的引入,解决了低延迟(秒)的需求,同时提升了研发效率,避免了重复的工作流程,...
Databus(数据直通车)是一个关键组件,它是用于流式数据传输和交换的系统,保证了数据的实时性和连贯性,满足流式数据处理对时间敏感的需求。 数据治理是流式数据平台不可或缺的环节,它负责数据的标准化、质量...
Industrial Edge Device的系统组件包括Industrial Edge Runtime、Edge Device Kit (IEDK)、Industrial Edge App、Industrial Edge 系统应用程序、Databus、Databus Configurator等。 五、数据管理 Industrial Edge ...
极速数据总线执照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 ...