个人博客: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. Kafka server.properties配置,集群部署

    server.properties中所有配置参数说明(解释) broker.id =0每一个broker在集群中的唯一表示,要求是正数.当该服务器的IP地址发生改变时,broker.id没有变化,则不 ...

  2. 转:【AI每日播报】从TensorFlow到Theano:横向对比七大深度学习框架

    http://geek.csdn.net/news/detail/139235 说到近期的深度学习框架,TensorFlow火的不得了,虽说有专家在朋友圈大声呼吁,不能让TensorFlow形成垄断地 ...

  3. HTML5游戏探讨,怎样让微信游戏仅仅能执行在微信中

    大致文件布局例如以下.一个html文件.一个loading.js,在loading.js中载入其它须要的js和css. 至于详细的速度的话.建议cdn或者一个域中最多载入6个js文件.在loading ...

  4. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-可以用软件自带NC工具驱动但是程序无法让电机转动怎么办

    新建一个项目,当扫描的时候务必勾选YES,使用网上最新的XML文件   如果不使用,则有些设备可能被扫描出来是无效的(图标不正常)   如果完全删除XML描述文件,可能也能扫描出来,而且可以用Twin ...

  5. tomcat优化---大数据量提交tomcat时,tomcat无法接收导致页面无反应

    关于tomcat的一个优化问题: 有时候保存大数据量的数据时.tomcat不优化的话,页面会没反应.tomcat后台并不报错,仅仅是提示以下内容: 警告: More than the maximum  ...

  6. 在ubuntu10.04 下将360wifi当无线网卡使用

    通过百度“360wifi linux“ 已经有很多解决方案.主要过程是从网上下载mt7601驱动包,编译出一个内核模块后,再通过modprobe 添加模块.下面描述的是基于我本机的特点所做的额外工作. ...

  7. acm之路--母函数 by小宇

    母函数又叫生成函数,原是数学上的一个名词,是组合数学中的一个重要理论. 生成函数是说,构造这么一个多项式函数g(x).使得x的n次方系数为f(n). 对于母函数,看到最多的是这样两句话: 1.&quo ...

  8. IIS各种问题汇总

    1.不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrid ...

  9. tcp/ip ---数据链路层

  10. weka入门

    每天都必须记录自己的一点一滴,不记录下来,过一段时间就会忘记,忘记了就等于没有经历过. 我不能每天这样浑浑噩噩的过下去.我要有计划,有梦想.追求卓越.成就不同. 我今天開始我的学习weka之路.学的时 ...