1. 程式人生 > >MongoDB主從

MongoDB主從

mongodb主從 mongodb數據同步 redis

數據存儲是整個系統中非常重要的一部分,在MySQL、Redis中都有主從架構,能夠在一定程度上保證數據的安全性和高可用性,而MongoDB中也是有這種實現方式。主從配置非常簡單,但是隨著技術的發展已經很少采用主從架構,而更多的是采用副本集或者集群的模式去實現高可用。

簡單的介紹一下MongoDB主從實現的方式和

環境:

操作系統:CentOS 6.7

MongoDB: 3.4.5

主數據目錄:/data/mongomaster

從數據目錄: /data/mongoslave

MongoDB 管理命令環境變量:

export PATH="$PATH:/home/mongodb/mongodb/mongodb-3.4.5/bin"

啟動主

mongod   --dbpath=/data/mongomaster/  --port 10000  --master  --logpath=/data/mongomaster/masterlog   --logappend     --fork

bout to fork child process, waiting until server is ready for connections.
forked process: 3114
child process started successfully, parent exiting
[[email protected] data]#

啟動從

mongod   --dbpath=/data/mongoslave/   --logpath=/data/mongoslave/slave.log  --logappend    --port  10002 --slave --source 192.168.1.130:10000   --fork
about to fork child process, waiting until server is ready for connections.
forked process: 3144
child process started successfully, parent exiting

測試 在主庫上面創建mongo庫 winne集合插入文檔數據

> use  mongo
switched to db mongo
> show  dbs
admin   0.000GB
local   0.003GB
master  0.002GB
> db
mongo
> for(i=0;i<10000;i++)db.mongo.insert({"name" : "linux" }, {"object" : "docker"}, {"age" :i})
WriteResult({ "nInserted" : 1 })
>

從庫測試

> show  dbs
2017-05-20T14:14:42.526+0800 E QUERY    [thread1] Error: listDatabases failed:{
	"ok" : 0,
	"errmsg" : "not master and slaveOk=false",
	"code" : 13435,
	"codeName" : "NotMasterNoSlaveOk"
} :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/mongo.js:62:1
[email protected]/mongo/shell/utils.js:769:19
[email protected]/mongo/shell/utils.js:659:15
@(shellhelp2):1:1,

報錯了什麽情況呢?找找資料什麽的,關鍵信息not master and slaveOk=false 和NotMasterNoSlaveOk 隨便一搜,結果好多這個報錯呢,都是說主從這種架構默認從庫不支持讀寫,像Redis等是不支持寫,MongoDB是更神奇,直接不能讀,從從庫上簡單的配置一下,再看看。

2017-05-20T14:17:40.067+0800 E QUERY    [thread1] SyntaxError: illegal character @(shell):1:1
> rs.slaveOk()
> show  dbs
admin   0.000GB
local   0.000GB
master  0.002GB
mongo   0.000GB

2017-05-20T14:17:40.067+0800 E QUERY    [thread1] SyntaxError: illegal character @(shell):1:1
> rs.slaveOk()
> show  dbs
admin   0.000GB
local   0.000GB
master  0.002GB
mongo   0.000GB

經過驗證數據同步

本文出自 “堅持夢想” 博客,請務必保留此出處http://dreamlinux.blog.51cto.com/9079323/1942212

MongoDB主從