Databus Relays
来源:互联网 发布:java多线程优点 编辑:程序博客网 时间:2024/05/22 13:27
概述
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表空间、用户、赋权限
创建databus核心包、表、存储过程等必须的东西,使用databus用户,执行oracle/bin/createSchema.sh databus/databus@posp_boss ${Dir}/BOOK
修改表结构,增加一列 TXN NUMBER(posp_boss)
将源表权限赋给databus(posp_boss)
给posp_boss赋databus.sync_core包的执行权限(databus)
创建索引(posp_boss)
创建表视图,注意一定要把TXN列包括进去,并且要把ID映射为KEY
新增sy$sources表配置,注意value的值必须小于等于125
创建触发器
至此,针对于Oracle的数据抓取数据端的配置就全部配置完毕了。
Mysql数据抓取
Mysql的数据抓取比较简单
- 创建一个slave的帐号,因为binlog日志分析是基于主从复制的模式来实现的
- 开启Mysql的binlog日志,设置日志名称,这个名称是后面需要用到的,默认mysql-bin,注意,binlog日志默认是不开启的,开启后需要重启mysql服务
设置binlog日志格式为ROW,默认是STATEMENT。binlog_format = ROW ,只有ROW模式才会记录受影响的行数,Databus默认只获取影响行数的事件
配置数据源,注意sources的id必须与sy$sources中的value一致
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的配置是不一样的。
添加 avro 配置文件至schemas_registry文件夹中,关于avro的详细结束参见Apache Avro
启动relay
至此,Relay和数据库都已经配置和部署完成!
- Databus Relays
- mongobd Databus
- databus概述
- Databus Clients
- Databus简介
- Databus deploy toplogy
- Setting up Relays
- poj 3613 Cow Relays
- POJ-3613-Cow Relays
- poj 3613 Cow Relays
- POJ3613 Cow Relays
- poj 3613 Cow Relays
- poj 3613 Cow Relays
- POJ3613 Cow Relays
- POJ3613 Cow Relays
- POJ 3613 Cow Relays
- poj3613 Cow Relays
- poj 3613 Cow Relays
- Android中的Window类型
- Linux账号管理(笔记)
- 面试智力题
- (Leetcode)Longest Increasing Subsequence——dp,bisearch
- Git仓库入门之基本用法(二)
- Databus Relays
- Max 文件制作三维场景
- thinkphp与Yii比较,框架之间的选择
- hibernate 表与表之间的关系
- BIM与三维GIS结合
- 开源实时日志分析ELK平台部署
- android 5.1老版本用R16跑cts fail项解决方法
- NSDate和NSString转化
- python中的%s%是什么意思