您的位置:首页 > 其它

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

创建databus核心包、表、存储过程等必须的东西,使用databus用户,执行oracle/bin/createSchema.sh databus/databus@posp_boss ${Dir}/BOOK

createSchema.sh

修改表结构,增加一列 TXN NUMBER(posp_boss)

person.sql

将源表权限赋给databus(posp_boss)

grant.sql

给posp_boss赋databus.sync_core包的执行权限(databus)

grant.sql

创建索引(posp_boss)

index.sql

创建表视图,注意一定要把TXN列包括进去,并且要把ID映射为KEY

book_vw.sql

新增sy$sources表配置,注意value的值必须小于等于125

insert.sql

创建触发器

trigger.sql

至此,针对于Oracle的数据抓取数据端的配置就全部配置完毕了。


Mysql数据抓取

Mysql的数据抓取比较简单

创建一个slave的帐号,因为binlog日志分析是基于主从复制的模式来实现的
开启Mysql的binlog日志,设置日志名称,这个名称是后面需要用到的,默认mysql-bin,注意,binlog日志默认是不开启的,开启后需要重启mysql服务

设置binlog日志格式为ROW,默认是STATEMENT。binlog_format = ROW ,只有ROW模式才会记录受影响的行数,Databus默认只获取影响行数的事件

my.cnf

配置数据源,注意sources的id必须与sy$sources中的value一致

sources.json

uri的格式为:mysql://用户%2F密码@host:port/serverID/binlog文件名称

另外需要注意sources里对应数据源的uri,必需带上数据库名称,格式为 db.table

对于Mysql的数据抓取,很多数据类型在Avro序列化时会被转换为string


部署normal_replay

配置relay sources,sources的id必须与sy$sources的value一致。注意oracle和mysql的配置是不一样的。

source.json

添加 avro 配置文件至schemas_registry文件夹中,关于avro的详细结束参见Apache Avro

book.avsc

启动relay

starup.sh

至此,Relay和数据库都已经配置和部署完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: