Databus Relays
2017-03-31 18:14
148 查看
概述
Databus Relays主要负责以下两个工作:从databus源数据库中读取变化行,并序列化为事件流保存至内存中;
接受客户端的请求,并将数据变化事件流返回给客户端。
技术架构
Event Producer:用来读取数据库的变化事件,转化为AVRO类型并存储至内存中;
Circular Buffer:Relay有一个或多个环形的缓冲池用来保存按递增的系统变化号(SCN) 为顺序的变化事件;
SCN Writer/Reader:用来读取和写入SCN号至硬盘;
RESTFUL interface:它暴露一个restful接口,用来推送数据变化事件至客户端。
数据抓取
目前支持Oracle和Mysql两种数据源的抓取。
Oracle数据抓取
抓取Oracle数据是通过给源表添加一个触发器,在新增和修改的时候记录SCN号作为查询的依据,通过relay定期的查询获取变化的数据。删除和查询不受影响。
Oracle数据库配置
首次部署databus,主要有以下几个步骤(非首次部署,只需要从步骤3开始):创建databus表空间、用户、赋权限
createUser.sh
createSchema.sh
person.sql
grant.sql
grant.sql
index.sql
book_vw.sql
insert.sql
trigger.sql
Mysql数据抓取
Mysql的数据抓取比较简单创建一个slave的帐号,因为binlog日志分析是基于主从复制的模式来实现的
开启Mysql的binlog日志,设置日志名称,这个名称是后面需要用到的,默认mysql-bin,注意,binlog日志默认是不开启的,开启后需要重启mysql服务
设置binlog日志格式为ROW,默认是STATEMENT。binlog_format = ROW ,只有ROW模式才会记录受影响的行数,Databus默认只获取影响行数的事件
my.cnf
sources.json
另外需要注意sources里对应数据源的uri,必需带上数据库名称,格式为 db.table
对于Mysql的数据抓取,很多数据类型在Avro序列化时会被转换为string
部署normal_replay
配置relay sources,sources的id必须与sy$sources的value一致。注意oracle和mysql的配置是不一样的。source.json
book.avsc
starup.sh
相关文章推荐
- Benchmarking Mail Relays and Forwarders
- BZOJ 1706: [usaco2007 Nov]relays 奶牛接力跑
- 【BZOJ1706】[usaco2007 Nov]relays 奶牛接力跑 矩阵乘法
- Databus 分布式数据库同步系统
- poj Cow Relays
- [POJ3613]Cow Relays && Floyd倍增
- 【bzoj1706】[usaco2007 Nov]relays 奶牛接力跑 离散化+倍增Floyd
- BZOJ[1706][usaco2007 Nov]relays 奶牛接力跑 倍增Floyd
- poj Cow Relays 矩阵乘法思想与floyd
- LinkedIn实时低延迟数据抓取系统Databus开源
- bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑(倍增floyd)
- 【bzoj 1706】relays 奶牛接力跑(Floyd+快速幂)
- Setting up Relays
- mongobd Databus
- 1706: [usaco2007 Nov]relays 奶牛接力跑
- Databus架构分析与初步实践(for mysql)
- Open sourcing Databus: LinkedIn's low latency change data capture system
- databus编译: Execution failed for task ':databus-core:databus-core-impl:compileJava'.
- BZOJ1706: [usaco2007 Nov]relays 奶牛接力跑
- BZOJ_[usaco2007 Nov]relays 奶牛接力跑_离散化+倍增弗洛伊德