个人博客:https://blog.sharedata.info/

最近需要把数据从Mongo同步到Elasticsearch
环境:
centos6.5
python2.7
pip
mongo-connector
安装:
pip install elastic2-doc-manager[elastic5]
pip install mongo-connector[elastic5]
命令参数:
-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 —— 一条数据同步失败,日志记录该失败操作,继续后续同步操作。默认为中止后续同步操作。
同步注意实现:
1. mongodb必须开启副本集(Replica Set)。开启副本集才会产生oplog,副本拷贝主分片的oplog并通过oplog与主分片进行同步。
mongo-connector也是通过oplog进行数据同步,故必须开启副本集。

2. 使用mongo-connector命令同步数据时,-m参数中的mongodb地址应该是主/从分片的地址,
从该地址登录可以看见并操作local数据库(oplog存储在local.oplog.rs);不能使用mongoos地址。

3. 使用mongo-connector命令同步数据时 ,mongo-connector的oplog(参照-o参数)不能随便删除,
否则会引起重新同步所有数据的问题。该问题可以通过--no-dump选项关闭。

4. 生产环境下建议将mongo-connector配置为系统服务,运行mongo-connector时采用配置文件的方式
es注意实现:
在同步的时候会创建mongodb_meta索引,以便跟踪最后一次修改的文档,用于在复制集回滚事件中解决冲突,但保存在单独的索引中,方面在必须要的时候删除
事例:
mongo-connector --auto-commit-interval=0 -m localhost:27017 -t localhost:9200 -n db.table -d elastic2_doc_manager

同步中遇到错误:

2017-07-03 09:49:47,723 [ALWAYS] mongo_connector.connector:51 - Starting mongo-connector version: 2.5.1
2017-07-03 09:49:47,724 [ALWAYS] mongo_connector.connector:51 - Python version: 2.7.10 (default, May 23 2017, 18:33:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)]
2017-07-03 09:49:47,724 [ALWAYS] mongo_connector.connector:51 - Platform: Linux-2.6.32-504.el6.x86_64-x86_64-with-centos-6.6-Final
2017-07-03 09:49:47,724 [ALWAYS] mongo_connector.connector:51 - pymongo version: 3.4.0
2017-07-03 09:49:47,729 [ALWAYS] mongo_connector.connector:51 - Source MongoDB version: 3.2.6
2017-07-03 09:49:47,729 [ALWAYS] mongo_connector.connector:51 - Target DocManager: mongo_connector.doc_managers.elastic2_doc_manager version: 0.3.0
2017-07-03 09:49:47,826 [ERROR] mongo_connector.oplog_manager:202 - OplogThread: Last entry no longer in oplog cannot recover! Collection(Database(MongoClient(host=[u'192.168.1.130:27018', u'192.168.1.137:27019', u'192.168.1.132:27017'], document_class=dict, tz_aware=False, connect=True, replicaset=u'shard1'), u'local'), u'oplog.rs')
2017-07-03 09:49:48,382 [ERROR] mongo_connector.connector:420 - MongoConnector: OplogThread <OplogThread(Thread-3, stopped 139942650967808)> unexpectedly stopped! Shutting down

解决方案:需要重新开始同步,删除分片信息

Mongo同步数据到Elasticsearch的更多相关文章

  1. elasticsearch -- Logstash实现mysql同步数据到elasticsearch

    配置 安装插件由于这里是从mysql同步数据到elasticsearch,所以需要安装jdbc的入插件和elasticsearch的出插件:logstash-input-jdbc.logstash-o ...

  2. 使用Logstash同步数据至Elasticsearch,Spring Boot中集成Elasticsearch实现搜索

    安装logstash.同步数据至ElasticSearch 为什么使用logstash来同步,CSDN上有一篇文章简要的分析了以下几种同步工具的优缺点:https://blog.csdn.net/la ...

  3. 利用logstash从mysql同步数据到ElasticSearch

    前面一篇已经把logstash和logstash-input-jdbc安装好了. 下面就说下具体怎么配置. 1.先在安装目录bin下面(一般都是在bin下面)新建两个文件jdbc.conf和jdbc. ...

  4. mysql 同步数据到 ElasticSearch 的方案

    MySQL Binlog 要通过 MySQL binlog 将 MySQL 的数据同步给 ES, 我们只能使用 row 模式的 binlog.如果使用 statement 或者 mixed forma ...

  5. 通过HBase Observer同步数据到ElasticSearch

    Observer希望解决的问题 HBase是一个分布式的存储体系,数据按照RowKey分成不同的Region,再分配给RegionServer管理.但是RegionServer只承担了存储的功能,如果 ...

  6. 全文搜索引擎 Elasticsearch (三)logstash-input-jdbc同步数据 到elasticsearch

    参考链接: 1, 源码地址,官方介绍 2, logstash-input-jdbc使用建议 3, 官网介绍例子,使用 logstash-input-jdbc 到 elasticsearch 一.安装 ...

  7. Elasticsearch:同步 MongoDB 数据到 Elasticsearch

    转载自:https://elasticstack.blog.csdn.net/article/details/114639152 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写 ...

  8. Logstash同步Oracle数据到ElasticSearch

    最近在项目上应用到了ElasticSearch和Logstash,在此主要记录了Logstash-input-jdbc同步Oracle数据库到ElasticSearch的主要步骤,本文是对环境进行简单 ...

  9. 实战ELK(6)使用logstash同步mysql数据到ElasticSearch

    一.准备 1.mysql 我这里准备了个数据库mysqlEs,表User 结构如下 添加几条记录 2.创建elasticsearch索引 curl -XPUT 'localhost:9200/user ...

随机推荐

  1. 最短路径——Floyd,Dijkstra(王道)

    题目描述: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线 ...

  2. ChannelHandlerContext writeAndFlush(firstMessage)

  3. WCF调试异常信息:ServiceHost 仅支持类服务类型

    "/CommonHelpServices"应用程序中的server错误. ServiceHost 仅支持类服务类型. 说明: 运行当前 Web 请求期间,出现未经处理的异常. 请检 ...

  4. 【玩转cocos2d-x之三十九】Cocos2d-x 3.0截屏功能集成

    3.0的截屏和2.x的截屏基本上同样.都是利用RenderTexture来处理,在渲染之前调用call函数,然后调用Cocos的场景visit函数对其进行渲染,渲染结束后调用end函数就可以.仅仅是3 ...

  5. 【android相关】【问题解决】R.java文件丢失

    在进行android开发过程中,有时候,我们会遇到gen文件中R.java丢失的现象.重新build,或者clean工程,close并重新打开Project,但有时也没解决. 这可能是由于不小心把xm ...

  6. IOS 代理模式 DELEGATE

    代理模式:将我(类或结构体)需要来完成的工作交给另一个具备我所要求的能力的人(实现协议的对象)来执行 协议:具备哪些能力 例子:我要去买火车票,没时间买,委托黄牛买票 协议:买票 //: Playgr ...

  7. iOS蓝牙原生封装,助力智能硬件开发

    代码地址如下:http://www.demodashi.com/demo/12010.html 人工智能自1956年提出以来,一直默默无闻,近年来人工智能的发展得到重视逐渐发展起步,智能硬件.智能手环 ...

  8. 04-2winPE里面下载系统并安装系统教程

    winPE里面下载系统并安装系统教程 首先需要注意的是,你已经使用 装机助理 工具制作好U盘启动盘,通过电脑功能键进入PE界面(不同型号的电脑进入PE界面的功能键不同,根据不同搜索属于她的功能键): ...

  9. .net Lock用法(转)

    lock就是把一段代码定义为临界区,所谓临界区就是同一时刻只能有一个线程来操作临界区的代码,当一个线程位于代码的临界区时,另一个线程不能进入临界区,如果试图进入临界区,则只能一直等待(即被阻止),直到 ...

  10. Atitit。监听键盘上下左右方向键事件java js jquery c#.net

    Atitit.监听键盘上下左右方向键事件java js jquery   c#.net 1. Keyword1 2. 通用的实现流程1 3. Js的实现1 3.1. Bind control ,eve ...