专栏首页Elasticsearch实验室从MongoDB实时同步数据至Elasticsearch
原创

从MongoDB实时同步数据至Elasticsearch

同步工具简介

本文采用mongo-connector作为MongoDB到Elasticsearch的同步工具。mongo-connector是基于python开发的实时同步服务工具,它可以创建一个从MongoDB簇到一个或多个目标系统的管道,目标系统包括:Solr,Elasticsearch,或MongoDB簇等。

该工具在MongoDB与目标系统间同步数据,并跟踪MongoDB的oplog,保持操作与MongoDB的实时同步。 因此它要求mongo运行在replica-set模式,并需要elastic2-doc-manager插件的支持,才能将数据同步至Elasticsearch集群。

本文以MongoDB 3.2.10的数据导出至Elasticsearch 5.6.4为例,介绍将MongoDB的数据实时同步到Elasticsearch的方案。

mongo-connector

同步工具安装

一. 安装python(本文以python2.7为例)

https://www.python.org/downloads/ 下载所需版本的python。

二. 安装mongo-connector

(一)如果你的机器可以连接到外网,那安装过程会非常简单:

1. 安装pip

pip-10.0.1
  • 下载后解压,进入pip-10.0.1目录,执行 下面的命令安装即可
python setup.py install

2. 安装mongo-connector

根据Elasticsearch的版本,选择合适的同步工具版本,执行下表中的安装命令即可:

Target System

Install Command

Elasticsearch 1.x

pip install 'mongo-connector[elastic]'

Elasticsearch 2.x

pip install 'mongo-connector[elastic2]'

Elasticsearch 5.x

pip install 'mongo-connector[elastic5]'

(二)如果你的机器无法连接到外网:

1. 请依次安装以下组件:

此处以安装pymongo为例:

pymongo
  • 下载后解压,进入pymongo-3.7.0目录,执行下面的命令安装即可
python setup.py install

2. 安装mongo-connector

# clone 代码
git clone https://github.com/mongodb-labs/mongo-connector.git

# 进入mongo-connector-master目录,执行安装命令
python setup.py install

3.安装 elastic2-doc-manager

# clone 代码
git clone https://github.com/mongodb-labs/elastic2-doc-manager.git

# 重命名文件夹
mv elastic2-doc-manager-master elastic2-doc-manager

# 执行安装命令,注意此处选取合适elastic的版本!!!版本格式类似上面安装mongo-connector的版本格式
pip install ./elastic2-doc-manager[elastic5]

同步工具使用

mongo-connector 启动命令

# Elasticsearch 1.x
mongo-connector -m localhost:27017 -t localhost:9200 -d elastic_doc_manager

# Elasticsearch 2.x, 5.x
mongo-connector -m localhost:27017 -t localhost:9200 -d elastic2_doc_manager

重要参数说明:

-m   mongodb_host:port    —— 数据源地址,mongodb数据库地址。
-t   target_host:port     —— 数据目的地地址,elasticsearch集群地址。
-d   xxx_doc_manager      —— 数据目的地的document类型,elastic2_doc_manager或elastic_doc_manager。 
-n   db.collection ...    —— 待同步的数据库及其collection。默认同步所有数据库。
-a   admin-username       —— admin用户名
-p   password             —— 密码

更过参数,请通过mongo-connector -h 命令查看

举例说明

1. MongoDB中的数据如下:

mongodb

以 db(feeds),collection(log)为例,数据样例:

data

2. 启动mongo-connector

  • 启动命令
mongo-connector -m 127.0.0.1:7001 -a test_user -p test_password -t 127.0.0.1:9200 -d elastic2_doc_manager &

3. 输出到Elasticsearch的数据

  • index
index
  • doc
doc

4. 注意事项

  1. mongodb必须开启副本集(Replica Set)。开启副本集才会产生oplog,副本拷贝主分片的oplog并通过oplog与主分片进行同步。mongo-connector也是通过oplog进行数据同步,故必须开启副本集。
  2. 使用mongo-connector命令同步数据时,-m参数中的mongodb地址应该是主/从分片的地址,从该地址登录可以看见并操作local数据库(oplog存储在local.oplog.rs),不能使用mongos地址。
  3. 使用mongo-connector命令同步数据时 ,mongo-connector的oplog(参照-o参数)不能随便删除,否则会引起重新同步所有数据的问题。该问题可以通过--no-dump选项关闭。
  4. 若发现同步速度过慢,可以通过调整bulkSize可以来提升同步速度,配置参考:https://github.com/mongodb-labs/mongo-connector/wiki/Configuration-Options#docmanagersindexbulksize

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 腾讯云时序数据库 CTSDB 开放公测

    CTSDB 是一款分布式、可扩展、高可靠的时序数据库,适用于有海量时序数据的物联网、大数据分析和互联网监控等场景。

    腾讯云时序数据库团队
  • 使用时序数据库CTSDB快速搭建日志系统

    日志数据是典型的时序数据,因此,日志场景是时序数据库CTSDB的典型应用场景。下文主要描述如何用CTSDB搭建日志系统。

    腾讯云时序数据库团队
  • Elasticsearch查询解析

           Elasticsearch(ES)可用于全文检索、日志分析、指标分析、APM等众多场景,而且搭建部署容易,后期弹性扩容、故障处理简单。ES在一定程...

    腾讯云时序数据库团队
  • Elasticsearch最佳实践之从MongoDB到Elasticsearch

    本文采用mongo-connector作为MongoDB到Elasticsearch的同步工具。mongo-connector是基于python开发的实时同步服...

    老生姜
  • C++智能指针的正确使用方式

    C++11中推出了三种智能指针,unique_ptr、shared_ptr和weak_ptr,同时也将auto_ptr置为废弃(deprecated)。

    cyhone
  • Django 2.1.7 Admin - 列表页选项

    https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial07/

    Devops海洋的渔夫
  • 如何做Git项目的持续集成

    持续集成(简称CI)指的是在代码提交的过程中持续地进行代码的集成、构建和自动化测试;借助CI工具,可以在代码提交的过程中通过单元测试等方式尽早地发现引入的问题。...

    用户5521279
  • 大规模主题模型:对Spark LDA算法的改进

    用户1737318
  • 大规模主题模型:对Spark LDA算法的改进

    这篇文章由Databricks的Feynman Liang和Joseph Bradley,以及Intel的Yuhao Yang撰写。 在使用LDA之前,请先 下...

    CSDN技术头条
  • Centos 配置网卡

    版权声明:Copyright © ...

    zhengzongwei

扫码关注云+社区

领取腾讯云代金券