monstache 实时同步mongodb 数据到 elasticsearch

最近在做数据统计功能,需要将mongodb数据实时同步到 elasticsearch 中。目前找到的方案有两种

1、通过flink mongodb cdc 

flink mongodb cdc 的优点是比较灵活,可以将mongodb中的数据同步到任意支持的目标库中,不限于elasticsearch ,但是目前在使用的过程共发现同步时会自动加一个Changelog Normalize 算子,背压比较严重。网上找了很多资料,暂时无法解决。

2、monstache 优点的话就是同步速度很快暂时没有发现性能问题,缺点也比较明显就是只能同步mongodb 数据到elasticsearch 中。

 

docker 中部署monstache(需要注意monstache版本要与elasticsearch 版本匹配)

docker run --privileged --name monstache -v /home/docker/monstache/config/monstache.config.toml:/app/monstache.config.toml -d -t  rwynn/monstache '-f' '/app/monstache.config.toml'

monstache.config.toml 内容如下

 1 # ip地址注意要修改
 2 mongo-url = "mongodb://xx.x.xxx.xxx:27017,xx.x.xxx.xxx:27018,xx.x.xxx.xxx:27019"
 3 # ip地址注意要修改
 4 elasticsearch-urls = ["http://xx.x.xxx.xxx:9200"]
 5 # mydb指的是需要同步的数据库
 6 direct-read-namespaces = ["xx.xxxx","xx.xxxx","xx.xxxx"]
 7 change-stream-namespaces = ["xx.xxxx","xx.xxxx","xx.xxxx"]
 8 #elasticsearch-user = "elastic"
 9 #elasticsearch-password = "pwd"
10 #elasticsearch-max-conns = 4
11 dropped-collections = true
12 dropped-databases = true
13 resume = true
14 resume-strategy = 0
15 verbose = true
16 cluster-name = 'docker-cluster'
17 
18 [[mapping]]
19 namespace = "xx.xxxx"
20 index = "xxxx"
21 type= "type-xxx"
22 
23 [[mapping]]
24 namespace = "xx.xxxx"
25 index = "xxxx"
26 type= "type-xxx"
27 
28 [[mapping]]
29 namespace = "xx.xxxx"
30 index = "xxxx"
31 type= "type-xxx"

 

posted @ 2022-09-24 11:06  兜里有糖  阅读(408)  评论(0)    收藏  举报