由于项目用到了基于oracle非入侵式日志实时同步cdc模式,但是ogg价格昂贵,有些项目不愿意花这部分钱来做数据实时同步,后面公司大牛推荐,自己研究了下基于kafka-connect的oracle实时同步。
上面清晰的写了部署步骤。
1、需要开启oracle归档日志
2、基于oracle logminer的解析方式,对源库有一定影响,影响在5%以内。
我使用的是confluent。下面以confluent为中间件,写下部署步骤。confluent的使用请百度。
1、上传jar包到/xxx/xx/xx/confluent/share/java/kafka-connect-jdbc:kafka-connect-oracle-1.0.jar,ojdbc7.jar,jsqlparser-1.2.jar
2、cd /xxxx/xxxxx/confluent/etc/kafka-connect-jdbc 增加OracleSourceConnector.properties,内容如下:
name=oracle-logminer-connector
connector.class=com.ecer.kafka.connect.oracle.OracleSourceConnector
db.name.alias=oval
tasks.max=1
topic=test666-1
db.name=orcl
db.hostname=xxx.xxx.xxxx.131
db.port=1521
db.user=xxx
db.user.password=xxxxxx
db.fetch.size=1
table.whitelist=OVAL.*,OVAL.WQ_TEST #同步策略
parse.dml.data=true
reset.offset=false
start.scn=
3、修改confluent/etc/schema-registry下connect-avro-standalone.properties文件:
bootstrap.servers=xxx.xxx.xxx.xxx:xxxx #kafka地址
#我使用的json格式传输
key.converter=org.apache.kafka.connect.json.JsonConverter
#key.converter.schema.registry.url=http://localhost:8081
value.converter=org.apache.kafka.connect.json.JsonConverter
#value.converter.schema.registry.url=http://localhost:8081
4、./bin/connect-standalone ./etc/schema-registry/connect-avro-standalone.properties ./etc/kafka-connect-jdbc/OracleSourceConnector.properties
然后去体验下oracle实时同步数据到kafka上,至于消费看自己的业务逻辑了。