精华内容
下载资源
问答
  • https://blog.csdn.net/itbs/article/details/65630910
    https://blog.csdn.net/itbs/article/details/65630910
    展开全文
  • 在网上找了很多资料,还是得自己动手做一次,才知道什么是对的。整理使用的安装命令如下: wget ...tar -zxvf mongodb-linux-x86_64-4.0.3.tgz mv mongodb-linux-x86_64-4.0.3 /usr/local mv /...

    在网上找了很多资料,还是得自己动手做一次,才知道什么是对的。整理使用的安装命令如下:

    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.3.tgz

    tar -zxvf mongodb-linux-x86_64-4.0.3.tgz
    mv mongodb-linux-x86_64-4.0.3 /usr/local
    mv /usr/local/mongodb-linux-x86_64-4.0.3/ /usr/local/mongodb

    mkdir /mydata/mongodb
    mkdir /mydata/mongodb/data
    touch /mydata/mongodb/logs
    mkdir /mydata/mongodb/data2
    touch /mydata/mongodb/logs2

     

    /usr/local/mongodb/bin/mongod --dbpath=/mydata/mongodb/data --logpath=/mydata/mongodb/logs --logappend  --port=27017 --fork --replSet rs3
    /usr/local/mongodb/bin/mongod --dbpath=/mydata/mongodb/data2 --logpath=/mydata/mongodb/logs2 --logappend  --port=27018 --fork --replSet rs3

    cd /usr/local/mongodb/bin
    ./mongo
    var rsconf = {
      _id: 'rs3',
      members: [
      {
        _id:0,
        host: '127.0.0.1:27017'
      },
      {
        _id: 1,
        host: '127.0.0.1:27018'
      } ]
    }
    rs.initiate(rsconf);

    这里需要设置一个优先级,为什么呢,因为副本集的主集是自动选举产生的,每当重启机器有可能会有变化,这样就会有问题了。///

    在设置mongodb副本集时,Primary节点,second节点,仲裁节点,有可能资源配置(CPU或者内存)不均衡,所以要求某些节点不能成为Primary
    我们知道mongodb的设置:
      除了仲裁节点,其他每个节点都有个优先权,可以手动设置优先权来决定谁的成为primay的权重最大。
      副本集中通过设置priority的值来决定优先权的大小,这个值的范围是0--100,值越大,优先权越高。
    默认的值是1,rs.conf是不显示的;
    如果值是0,那么不能成为primay。


    1.规划时直接设置,这个就略过了
    2.在线加入的节点配置:
    配置过程:
    通过修改priority的值来实现(默认的优先级是1(0-100),priority的值设的越大,就优先成为主)
    1)PRIMARY> config=rs.conf()
    2)PRIMARY>config.members[0].priority = 3
    3)PRIMARY> rs.reconfig(config)
    注意:第2步members大括号里面的成员和_id是没有关系的,而是rs.conf查出来节点的数值的顺序;
    这些操作必须在Primary上进程。

    参考文档:http://docs.mongodb.org/manual/tutorial/force-member-to-be-primary/

    ------------------------------------------------

    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    pip -V  #查看pip版本
    pip安装好之后安装插件
    pip install mongo-connector
    pip install elastic2-doc-manager[elastic5]

    如果出现 python 版本过低的提示,那就升级一下python

    yum install gcc gcc-c++ -y
    wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
    tar -zxvf Python-3.6.5.tgz
    cd Python-3.6.5
    ./configure
    make
    make install
    
    这一步可能遇到的问题:
    zipimport.ZipImportError: can't decompress data; zlib not available
    解决方法:
    yum install zlib zlib-devel -y
    
    验证当前系统下安装的python版本号
    python -V
    python3 -V
    
    使用下面命令安装就不会出错:
    pip3 install mongo-connector
    
    设置3.6.5为默认版本
      查看 Python 的路径,在 /usr/bin 下面。可以看到 python 链接的是 python 2.7,所以,执行 python 就相当于执行 python 2.7。
    
    [root@ansible ~]# ls -al /usr/bin | grep python
    -rwxr-xr-x.   1 root root       11232 Dec  2  2016 abrt-action-analyze-python
    lrwxrwxrwx.   1 root root           7 May 26  2017 python -> python2
    lrwxrwxrwx.   1 root root           9 May 26  2017 python2 -> python2.7
    -rwxr-xr-x.   1 root root        7136 Nov  6  2016 python2.7
    将原来 python 的软链接重命名:
    
    # mv /usr/bin/python /usr/bin/python.bak
    将 python 链接至 python3:
    
    # ln -s /usr/local/bin/python3 /usr/bin/python
    五、配置yum
       升级 Python 之后,由于将默认的 python 指向了 python3,yum 不能正常使用,需要编辑 yum 的配置文件,此时:
    
    [root@ansible-admin Python-3.6.5]# yum list
      File "/usr/bin/yum", line 30
        except KeyboardInterrupt, e:
    
    SyntaxError: invalid syntax
      修改/usr/bin/yum和/usr/libexec/urlgrabber-ext-down,将 #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出即可。
    
    另外升级 python3 后使用firewall-cmd 命令是,提示错误:Traceback (most recent call last):  File "/usr/bin/firewall-cmd", line 24, in <module>
        from gi.repository import GObject
    ImportError: No module named repository
    
    
    解决方法: 首先,修改/usr/bin/firewall-cmd文件头部, 默认是 “#!/usr/bin/python” ,需要修改为: “#!/usr/bin/python/python2.7”
    
    如果按照第一步修改完以后,还是提示该错误,说明python2.7中缺少模块,需要执行以下命令进行安装模块
    
    "pip install gi"

    启动同步进程:

    mongo-connector -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic2_doc_manager &

    命令参数:
    -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时采用配置文件的方式

    如果版本有更新,参考这个网址:

    https://github.com/yougov/mongo-connector

    ----------------------------------------------

    如果需要启动验证,创建一个用户用于远程管理:

    cd /usr/local/mongodb/bin
    ./mongo

    use admin;
    db.createUser({user:"myname",pwd:"youpassword",roles:[{role:"root",db:"admin"}]});
    db.getUsers();
    db.auth("myname","youpassword") //验证登陆

    MongoDB的oplogSize修改
    use local
    db.adminCommand({replSetResizeOplog:1, size: 16000});
    
    查询oplog的大小及保存的操作记录持续的时长
    db.printReplicationInfo()
    
    查询从节点的数据源列表,其中有数据滞后的时间
    db.printSlaveReplicationInfo()

     

    db.changeUserPassword('myname','newpassword'); //后期需要改密码,可以用这个命令。

    创建一个密钥文件,用于mongodb之间认证

    echo "627607cd4a5aaadcf3bc1aa2d7ea93e9">/mydata/mongodb/keyfile
    chmod 600 /mydata/mongodb/keyfile

    MongoDB配置按天存储日志文件,crontab的配置如下:

    05 00 * * * /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth('myname','youpassword');db.runCommand({logRotate:1});"
    05 00 * * * /usr/local/mongodb/bin/mongo 127.0.0.1:27018/admin --eval "db.auth('myname','youpassword');db.runCommand({logRotate:1});"

    可以把下面新的命令行加入到启动项中:

    /usr/local/mongodb/bin/mongod --dbpath=/mydata/mongodb/data --logpath=/mydata/mongodb/logs --logappend --auth --port=27017 --fork --replSet rs3 --bind_ip=0.0.0.0 --keyFile=/mydata/mongodb/keyfile
    /usr/local/mongodb/bin/mongod --dbpath=/mydata/mongodb/data2 --logpath=/mydata/mongodb/logs2 --logappend --auth --port=27018 --fork --replSet rs3 --bind_ip=0.0.0.0 --keyFile=/mydata/mongodb/keyfile
    mongo-connector -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic2_doc_manager --admin-username myname --password youpassword >/tmp/mongo-connector.log 2>&1

    另外还可以在mongo-connector命令参数中加入这两个参数 --continue-on-error --oplog-ts=/etc/oplog.timestamp

    这样就完成了。elasticsearch 安装参见我另一文档。如果有疑问可以留言。

    展开全文
  • mongo-connector工具在MongoDB与目标系统间同步数据,并跟踪MongoDB的oplog,保持操作与MongoDB的实时同步。 mongo-connector工具是基于python开发的实时同步服务工具。它要求mongo运行在replica-set模式,且需要 ...

    概述:

    • mongo-connector工具在MongoDB与目标系统间同步数据,并跟踪MongoDB的oplog,保持操作与MongoDB的实时同步。
    • mongo-connector工具是基于python开发的实时同步服务工具。它要求mongo运行在replica-set模式,且需要 elastic2_doc_manager将数据写入ES。

             

    环境:

    1、安装mongo-connector

    pip install --user mongo-connector[elastic5]

    2、安装elastic2-doc-manager

    pip install --user elastic2-doc-manager[elastic5]

    3、开启同步

    # 进入mongo-connector目录 安装elastic2-doc-manager时会打印出来如:
    The script mongo-connector is installed in '/Users/chenfenli/Library/Python/2.7/bin' which is not on PATH.
      Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
    
    
    #进入mongo-connector
    cd /Users/chenfenli/Library/Python/2.7/bin
    
    # 同步
    ./mongo-connector -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic2_doc_manager &
    
    • -m: mongodb的地址与端口,端口默认为27017。
    • -t:ES的地址与端口,端口默认为9200。
    • -d:doc manager的名称,2.x版本为: elastic2-doc-manager。
    • -n:text.XXX 表示同步text库中的XXX表 默认表示同步全部库的全部表。
    • -i:filed_name 待同步的字段,默认同步所有字段。

    4、验证

    # 对应ES中的index
    rscopys:PRIMARY> use mongo_es_test
    
    # 插入数据(users对应ES中的type)
    db.users.insert({id:"1",name:"xiaozheng"})

     

    5、重新同步

    1. 停止mongo_connector
    2. 删除oplog.timestamp
    3. 重启mongo_connector
    展开全文
  • search(ES) is a pop-star for recording and analyzing data, andMongodb is a famous NoSQL database for storing and querying data. With our web infrastructure improving, how can we export dat

    Elastic search(ES) is a pop-star for recording and analyzing data, andMongodb is a famous NoSQL database for storing and querying data. With our web infrastructure improving, how can we export data from mongodb to ES for searching or analyzing purposes? There are 5 possible solutions recommended for your choice.


    1.synchronized by web server

    We can use Mongoosastic module for storing-in-both-sides purpose when we use Nodejs as a web server Container. When one document needs to be stored,  Mongoosastic can commit the changes to both mongo and ES. As the chart below:

    Here is the reference link: Mongoosastic.

    The advantage is that data can be stored in both mongo and ES simultaneously, and the downside is that overhead may be caused in CUD operation efficiency. And inconsistent data might be generated when one type of the db store failed. And the server framework is not flexible enough for db migrating.

    2.Manually loading data from Mongo to ES

    Transporter tool is a good choice to synchronize data once you want to export mongo data to another ES server. Transporter also can export data from or to other type of data store. Reference link is: Transporter.

    It's important to know that the transporter synchronizing only once. When the job is done, the transporter comes to its end.

    3. Plugin for ES

    There is a plugin for ES named "elasticsearch-river-mongodb", and was widely used in ES 1.x, but now river mechanism for ES 2.x is deprecated. Reference link is elasticsearch-river-mongodb.

    4. JDBC input plugin for logstash

    We can take advantage of  buffering , inputting, outputting and filtering abilities from logstash by adding a mongo input and ES output plugin to get this job done.

    JDBC input plugin is one of the choices, but it needs JDBC driver support. As I know there is no well-supported-free JDBC driver for mongo. Some trial versions can be found in Unity or Simba.

    Reference link is : JDBC Plugin for Logstash

    5. Mongo-ES connector

    mongo-connector is a real-time sync service as a package ofPython. It creates a pipeline from a mongodb cluster to one or more target systems. It needs mongo to run in replica-set mode, sync data in mongo to the target then tails the mongo oplog. It needs a package named "elastic2_doc_manager" to write data to ES. Process chart below:

    Reference link is : github or python.

    To recapitulate it,  it is a must to remember: mongo replica set, an opened port and IP for ES, using elastic2_doc_manager if you use ES 2.x.

    At present, I am not yet ready with any official support in Beats. it will be in the future.

    So that's all, 5 ways to mongo-ES-sync.

    注:本文转自https://www.linkedin.com/pulse/5-way-sync-data-from-mongodb-es-kai-hao


    展开全文
  • 需翻墙 ./logstash-plugin install logstash-input-mongodb实际步骤:1.安装rvm(ruby version manager)curl -L get.rvm.io | bash -s stablesource /home/knicks/.rvm/scripts/rvm测试是否安装成功:rvm -v获取rvm...
  • 想通过kettle来同步mongodb数据到es中,mongodb中有两个日期类型的数据,一同步就报错,看了一下大概是日期转换的问题。没有什么好的思路解决。其他的方法也用过,例如mongo-connector,但是服务器是无网环境,...
  • MongoDB数据同步到Elasticsearch中   说明:为了解决MongoDB慢查询以及对数据进行分析,将数据同步到Elasticsearch中。 测试环境各模块版本 MongoDB Elasticsearch MongoDB-connecter Python Pip ...
  • 使用Python将MongoDB数据同步到Elasticsearch 版本说明:Python 3.7 PyMongo:3.11.0 Elasticsearch:5.5.3 话不多说直接鲁码(如遇到什么问题欢迎留言讨论) # coding:utf8 # 将mongodb中的数据同步到Es中 from ...
  • python实现MongoDB数据同步到Elasticsearch1. 背景 引用elasticSearch的百科:https://baike.baidu.com/item/elasticsearch/3411206?fr=aladdin ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多...
  • 同步MongoDB数据到ElasticSearch,支持全量同步、增量同步、实时同步,支持全操作,支持中间数据处理
  • MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系...在今天的文章中,我将介绍如何把 MongoDB 里的数据同步到 Elasticsearch
  • 本文介绍如何通过Monstache将MongoDB数据实时同步Elasticsearch,并对数据进行分析及展示。 本文以解析及统计热门电影数据为例,提供的解决方案可以帮助您完成以下需求: 通过Monstache快速同步及订阅全量或增量...
  • elasticsearch常用来全文本搜索,而mongodb不太适合做这种文本搜索,因此需要做数据冗余,将需要搜索的数据同步到elasticsearch中。最直接想到的方法就是代码里双写,写到mongodb成功后,再写入到elasticsearch 中...
  • MongoDB 数据自动同步到 ElasticSearch Elasticsearch日志分析 我们产品中需要全文检索的功能,后端数据存储主要使用了 MySQL + MongoDB,而其中需要检索的内容是在 MongoDB 中的。 MongoDB 本身是自带文本索引...
  • 随着我们的Web基础架构的改进,我们如何将数据mongodb导出到ES以进行搜索或分析?建议您选择5种可能的解决方案。 1.由Web服务器同步 当我们使用Nodejs作为Web服务器容器时,我们可以使用Mongoosastic模块进行...
  • 如图,当批量增加时报错 !... 我的代码如下: Test类: ... public void aa (UserVo userVo) throws IOException { ...我的elasticsearch版本是6.2.3,jdk1.8,有遇到过的朋友加下QQ1479756648 ,万分感谢
  • 同步mongo与elasticsearch之间的数据
  • 一个go守护进程,它将mongodb实时同步到elasticsearch 版本6 此版本的monstache是​​为MongoDB 3.6+和Elasticsearch 7.0+设计的。 它使用了官方的MongoDB golang驱动程序和来自Olivere的社区支持的Elasticsearch...
  • github地址:...注:bin目录下的:mongo-sync-elastic是linux的可执行文件, mongo-sync-elastic.exe是windows的可执行文件 1.快速开始 linux: main -f config.json win...
  • 由于公司需要,搭建elasticsearch检索服务但是同步mongodb数据是个问题,在百度资料找到使用mongo-connector同步,经过自己测试这款工具是python写的,使用时不稳定,会中断同步问题,即使加上守护线程同步并没有...
  • 数据量小的时候也许体现不出来,当数据量达到1000W条记录,所占硬盘大小为10G左右的时候,你就会开始为mongodb提供的查询功能感到头疼。这个时候我们一般采用一款搜索服务器作为查询的后端。我的实际需求是对存储在...
  • MongoDB数据导入到ES并实现同步,可以使用Mongo-Connector 介绍:mongo-connector 至于ES的安装和MongoDB副本集模式,可以参照前几篇文章笔记。 Mongo-Connector使用方式很简单,简单讲下面几步: 1. 安装pip yum ...
  • ElasticSearchMongodb 同步数据之mongo-connector 一、安装ElasticSearch 并配置 集群 可参看我的文章ElasticSearch 的安装、ElasticSearch 集群 二、安装Mongodb Mongodb 安装并配置副本集 可...
  • 二、安装mongodb插件 cd D:\Software\ELK5.5.0\logstash-5.5.0\bin logstash-plugin install logstash-output-mongodb logstash-plugin install logstash-input-mongodb 要先装output再装input,不然会报mongo...
  • 工具 本项目使用mongodb集群,mongo-connector,ElasticSearch6,...由于使用直接修改mongodb的collection的名字,使得mongo-connector不能自动同步到es当中。 操作 1.关闭mongo-connector ps -ef | grep mongo-conn...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,713
精华内容 3,085
关键字:

mongodb同步数据到es