源于项目需要,把mongo的数据同步到elasticsearch(后面简称ES)。让ES作检索。通过研究终于实现.具体如下步骤:
A.mongo副本集配置
本文配置使用数据库版本:3.0.5 64位版
1. 拷贝三分mongodb(bin文件夹及其子目录)到服务器下,目录依次为:
D:\mongo_db\mongo_master /*当前目录的Mongo做主库:localhost:27311*/
D:\mongo_db\mongo_slave /*当前目录的Mongo做从库:localhost:27321*/
D:\mongo_db\mongo_arbiter /*当前目录的Mongo做仲裁服务器:localhost:27331*/
2.主/从/仲裁创建文件目录如下:
D:\mongo_db\mongo_master\data\db
D:\mongo_db\mongo_master\data\log
D:\mongo_db\mongo_slave\data\db
D:\mongo_db\mongo_slave\data\log
D:\mongo_db\mongo_arbiter\data\db
D:\mongo_db\mongo_arbiter\data\log
3.创建主库数据库服务:
cd D:\mongo_db\mongo_master\bin
执行命令:
mongod --replSet shard1 --port 27311 --logpath "D:\mongo_db\mongo_master\data\log\MongoDB.log" --logappend --dbpath "D:\mongo_db\mongo_master\data\db" --serviceName "mongo_master" --serviceDisplayName "mongo_master" --install
4.创建从库数据库服务:
cd D:\mongo_db\mongo_slave\bin
执行命令:
mongod --replSet shard1 --port 27321 --logpath "D:\mongo_db\mongo_slave\data\log\MongoDB.log" --logappend --dbpath "D:\mongo_db\mongo_slave\data\db" --serviceName "mongo_slaver" --serviceDisplayName "mongo_slaver" --install
5.创建仲裁库服务:
cd D:\mongo_db\mongo_arbiter\bin
mongod --replSet shard1 --port 27331 --logpath "D:\mongo_db\mongo_arbiter\data\log\MongoDB.log" --logappend --dbpath "D:\mongo_db\mongo_arbiter\data\db" --serviceName "mongo_arbiter" --serviceDisplayName "mongo_arbiter" --install
6.启动主/从/仲裁
在cmd控制台输入:
net start mongo_master
net start mongo_slaver
net start mongo_arbiter
7.登录主库:
cd D:\mongo_db\mongo_slave\bin
mongo localhost:27311
>use admin
>cfg={_id:"shard1",members:[{_id:0,host:"localhost:27311",priority:1},{_id:1,host:"localhost:27321",priority:1},{_id:2,host:"localhost:27331",arbiterOnly:true}]}
>rs.initiate(cfg)
>rs.status()//此命令验证添加副本集成功
如下:
至此 mongo副本集配置完成。
B.安装python
安装python-3.5.3-amd64.exe
安装mongo-connector命令: pip install elastic-doc-manager[elastic2]
C.安装:ElasticSearch
D:\software\elasticsearch-2.4.0
并启动ElasticSearch:双击:D:\software\elasticsearch-2.4.0\bin\elasticsearch.bat
E.启动mongo-connector:
mongo-connector --auto-commit-interval=0 -m localhost:27311 -t localhost:9200 -d elastic2_doc_manager
F: 登录主库创建一条数据:
>use person
>db.person.insert({"name":"jack","age":30})
>db.person.find() //查看是否保存成功
G:在浏览器地址栏输入:http://localhost:9200/_cat/indices?v 可以看到index列下已经有了person。则证明已经同步到ES.
H: 登录mongo从库:
D:\mongo_db\mongo_slave\bin>mongo localhost:27321 MongoDB shell version: 3.0.5 connecting to: localhost:27321/test shard1:SECONDARY> use person switched to db person shard1:SECONDARY> db.person.find() Error: error: { "$err" : "not master and slaveOk=false", "code" : 13435 } shard1:SECONDARY> rs.slaveOk(); shard1:SECONDARY> db.person.find() { "_id" : ObjectId("598417b9017cd7642360634d"), "name" : "Johon", "age" : "30" }
I:全过程完毕。