使用mongo-connector工具快速实现mongodb到es的数据同步

1、需求分析

A项目的数据写入在mongodb复制集里,B项目需要对A项目的数据进行全文检索;现提出方案:B项目的全文检索使用elasticsearch工具来实现,需要对A项目mongodb的数据实时同步到es中,在B项目通过es实现全文检索。

2、解决方案

2.1 代码解决

通过第三方库从mongodb读取然后写入es的方式实现
缺点:实现方式复杂,实现速度较慢,不好实现全兼容
优点:支持各种方式的自定义,遇到错误代码可解决异常;可实现限速功能,避免将es打垮;

2.2 工具解决

python模块现有工具mongo-connector支持mongodb与ES之间的实时增insert、删delete、改update操作
缺点:mongodb必须是复制集,需要oplog为前提;无法在应用程序层进行限速;不支持自定制功能
优点:轻量程序,快速实现功能;无需开发能力,运维必备

3、mongo-connector 工具简介

一个从Mongodb到其他系统的数据流,像solr。es或者其他的mongo集群,他会通过oplog跟踪来同步数据,从而保证实时同步。mongo-connector工具是基于Python开发的实时同步服务工具。它要求mongo运行在replica-set模式,且需要 elastic2_doc_manager将数据写入ES。
abf95694-7930-4197-9473-6d5d955cef1a
详细学习,请移步github地址

4、安装&学习mongo-connector

既然是python的库,那就太简单了,pip直接搞定,实现确定好自己的pip版本。

  1. [root@elasticsearch-62116 src]# pip install mongo-connector

下面通过–help学习下,有关mongo-connector的使用

  • -m mongodb_host:port —— 数据源地址,mongodb数据库地址。
  • -t target_host:port —— 数据目的地地址,elasticsearch/solr/mongodb集群地址。建议为集群中的协调节点的地址。
  • -d xxx_doc_manager —— 数据目的地的document类型。例如:
    将mongodb中的数据同步到elasticsearch,使用elastic_doc_manager或elastic2_doc_manager(此模块可能需要单独安装)
    将mongodb中的数据同步到solr,使用solr_doc_manager。
    将mongodb中数据同步到其他mongodb,使用mongo_doc_manager。
  • -n db.collection … —— 待同步的数据库及其collection。默认同步所有数据库。
  • -i filed_name … —— 待同步的字段。默认同步所有字段。
  • -o mongodb_oplog_position.oplog —— mongo-connector的oplog。默认在mongo-connector命令执行目录下创建oplog.timestamp文件。
    建议重新分配存储位置(也可重新分配存储文件名),例如 /opt/mongo-connector.oplog。
  • –auto-commit-interval —— 数据同步间隔。默认在不同系统上有不同的值。设置为0表示mongodb中的任何操作立即同步到数据目的地。
  • –continue-on-error —— 一条数据同步失败,日志记录该失败操作,继续后续同步操作。默认为中止后续同步操作。

5、开始同步

同步方式支持json配置文件方式和参数选项方式,生产商建议使用配置文件方式,并加入开机启动项

  1. mongo-connector --auto-commit-interval=0 -m 10.0.0.1:27107 -t 10.0.0.2:9200 -n db.table -d elastic2_doc_manager
3
未经许可,不得转载,否则将受到作者追究,博主联系方式见首页右上角

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论
取消评论
代码 贴图 加粗 链接 删除线 签到