- 概述
- databus介绍
引用
https://github.com/linkedin/databus
引用
http://databus.majunwei.com/document/Connecting_Databus_to_an_Oracle_Database.html
引用
http://blog.sina.com.cn/s/blog_6c9b83990101bbzq.html
- databus使用
1、创建数据库账户
./createUser.sh [db_name] [db_pwd] 192.168.11.129:1521/ORCL1 [table_space] [/mnt/u001/oracle/data/DB] > /tmp/createUser.out2、数据库添加字段(txn)、视图、package(SYNC_ALERT、SYNC_CORE)、procedure(COMPILE_ALLOBJECTS)、trigger(before 更新txn)、序列、Jobs(J_CALL_SIGNAL、J_COALESCE_LOG)
./createSchema.sh db_name/[email protected]: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下开发不是很方便,需要重构脚本简化准备工作。
参考:
引用
http://blog.csdn.net/guojing505123/article/details/51361281
引用
https://github.com/linkedin/databus/wiki/Databus-2.0-Example