天天看點

mongodb 搭建主從伺服器

mongodb 主從配置比較簡單,隻需要在啟動的時候添加參數(-master、-slave -source IP:PORT)。

Ubuntu 16.04 系統環境

監聽端口分别為:27010、27011、27012。配置後的環境為:27010為主,27011、27012為從。

1) 建立mongodb資料存放的檔案夾

mkdir -p /mongodata/test/db27010
   mkdir -p /mongodata/test/db27011
   mkdir -p /mongodata/test/db27012      

2)啟動27010主

   在啟動指令中加入 master,該mongo服務即可作為主。

mongod -dbpath "/mongodata/test/db27010" -port 27010 -master -logpath "/mongodata/test/db27010/log.txt" -fork      

3)啟動27011、27012從

   添加參數 --slave 作為從,通過--source localhost:27010來指定主的位置。

mongod -dbpath "/mongodata/test/db27011" -port 27011 -slave -source localhost:27010 -logpath "/mongodata/test/db27011/log.txt" -fork

mongod -dbpath "/mongodata/test/db27012" --port 27012 -slave -source localhost:27010  -logpath "/mongodata/test/db27012/log.txt" -fork      

4)測試

檢視mongo服務

ps -aux|grep mongo      
root@localhost:/home/lime# ps -aux | grep mongo
root       1804  0.9  9.0 316880 90420 ?        Sl   05:44   0:26 mongod -dbpath /mongodata/test/db27010 -port 27010 -master -logpath /mongodata/test/db27010/log.txt -fork
root       2344  0.9  8.6 289192 85900 ?        Sl   06:13   0:10 mongod -dbpath /mongodata/test/db27011 -port 27011 -slave -source localhost:27010 -logpath /mongodata/test/db27011/log.txt -fork
root       2459  1.1  5.0 287084 50032 ?        Sl   06:29   0:01 mongod -dbpath /mongodata/test/db27012 -port 27012 -slave -source localhost:27010 -logpath /mongodata/test/db27012/log.txt -fork      

添加測試資料:

我們在主27010中建立user集合,并添加100個使用者,然後再從中檢視。

mongo --port 27010
use user;
for(i=0;i<100;i++){ db.user.insert({"name":"ximu"+i}); }       
> db.user.find().skip(90)
{ "_id" : ObjectId("59300dd3ea97563d18acf140"), "name" : "lime_90" }
{ "_id" : ObjectId("59300dd3ea97563d18acf141"), "name" : "lime_91" }
{ "_id" : ObjectId("59300dd3ea97563d18acf142"), "name" : "lime_92" }
{ "_id" : ObjectId("59300dd3ea97563d18acf143"), "name" : "lime_93" }
{ "_id" : ObjectId("59300dd3ea97563d18acf144"), "name" : "lime_94" }
{ "_id" : ObjectId("59300dd3ea97563d18acf145"), "name" : "lime_95" }
{ "_id" : ObjectId("59300dd3ea97563d18acf146"), "name" : "lime_96" }
{ "_id" : ObjectId("59300dd3ea97563d18acf147"), "name" : "lime_97" }
{ "_id" : ObjectId("59300dd3ea97563d18acf148"), "name" : "lime_98" }
{ "_id" : ObjectId("59300dd3ea97563d18acf149"), "name" : "lime_99" }      

檢視從的資料:

rs.slaveOk()      
mongo --port 27011
show dbs;
use user;
db.user.find().skip(90).limit(5);

mongo --port 27012
show dbs;
use user;
db.user.find().skip(90).limit(5);      

5)主從的管理  -- -- -- -- -- -- 以下測試未通過

檢視目前的從伺服器:

mongo --port 27010
use local;
db.slaves.find();      

輸出如下内容:

{ "_id" : ObjectId("4fabb177fc376c0a2552bab4"), "host" : "127.0.0.1", "ns" : "local.oplog.$main", "syncedTo" : { "t" : 1336653678000, "i" : 1 } }
{ "_id" : ObjectId("4fabb18078bc627b617794d2"), "host" : "127.0.0.1", "ns" : "local.oplog.$main", "syncedTo" : { "t" : 1336653678000, "i" : 1 } }      

檢視從的主:

mongo --port 27011
use local;
db.sources.find();      
{ "_id" : ObjectId("4fabb18078bc627b617794d1"), "host" : "localhost:27010", "source" : "main", "syncedTo" : { "t" : 1336653868000, "i" : 1 }, "localLogTs" : { "t" : 0, "i" : 0 } }      

繼續閱讀