mongodb高可用集群01---單實例、主從模式、一主多從模式


本人根據此文章進行學習:http://blog.jobbole.com/72610/

會不斷更新內容主要分為四大模塊:

  • mongodb各種方式的部署
  • 常用使用[工作不用就沒必要學了,精力有限]
  • 性能優化
  • 故障排除

很多會和網上資料一樣,主要是自己學習不斷梳理資料,追求:提及精華

 

單實例:

1)建立mongodb測試文件

#存放整個mongodb文件

mkdri-p /data/mongodbtest/single

#mongodb數據文件

mkdir /data/mongodbtest/data

2)mongodb安裝

cd /data/mongodbtest/single
tar mongodb-linux-x86_64-rhel62-3.0.6.tgz
mv mongodb-linux-x86_64-rhel62-3.0.6 mongodb

3)啟動單實例mongodb

/data/mongodbtest/single/mongodb/bin/mongod  --dbpath /data/mongodbtest/single/data

輸出日志如下,表示已成功:

 [initandlisten] db version v3.0.6
 [initandlisten] git version: 1ef45a23a4c5e3480ac919b28afcba3c615488f2
 [initandlisten] build info: Linux ip-10-67-194-123 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 BOOST_LIB_VERSION=1_49
 [initandlisten] allocator: tcmalloc
 [initandlisten] options: { storage: { dbPath: "/data/mongodbtest/single/data/" } }
 [initandlisten] waiting for connections on port 27017

Web訪問:localhost:28017

注:第一次啟動會有點久

 

主從模式:

1)       ip:192.168.30.131 作為主節點master

ip:192.168.30.132 作為從節點slave

2)       master創建文件夾:/data/mongodbtest/master

slave  創建文件夾:/data/mongodbtest/slave

3)啟動master:

/data/mongodbtest/single/mongodb/bin/mongod--dbpath /data/mongodbtest/master –master

輸出日志如下,表示已成功:

[initandlisten] MongoDBstarting :pid=3978 port=27017 dbpath=/data/mongodbtest/master master=1 64-bit host=hadoop03
……
[initandlisten] options: { master: true, storage: { dbPath: "/data/mongodbtest/master" } }

 

啟動slave:

/data/mongodbtest/single/mongodb/bin/mongod–dbpath /data/mondbtest/slave –slave –source 192.168.30.131:27017

輸出日志如下,表示已成功:

[initandlisten] MongoDBstarting :pid=3521 port=27017 dbpath=../slave slave=1 64-bit host=hadoop04
……
[initandlisten] options: { slave: true, source: "192.168.30.131:27017", storage: { dbPath: "../slave" } }
……
[replslave] repl: syncing from host:192.168.30.131:27017

4)       測試主從復制

在主節點上連接到終端:

/data/mongodbtest/single/monodb/bin/mongo 127.0.0.1
> use test;
switched to db test
>db.testdb.insert({"test1":"testvall"})
WriteResult({ "nInserted" : 1 })
>db.testdb.find()
{ "_id" : ObjectId("5601085dc618d904c883a5e2"), "test1" : "testvall" }

檢查從主機的數據:

/data/mongodbtest/single/monodb/bin/mongo 127.0.0.1
> use test;
switched to db test
>db.testdb.find();
{ "_id" : ObjectId("5601085dc618d904c883a5e2"), "test1" : "testvall" }

 

從slave主機上查看服務狀態:

>db.printReplicationInfo()
this is a slave, printing slave replication info.
source: 192.168.30.131:27017
         syncedTo: Tue Sep 22 2015 15:57:59 GMT+0800 (CST)
         13 secs (0 hrs) behind the freshest member (no primary available at the moment)

 

一主多從模式:

和主從模式一樣,只是再添加從主機而已,這里就不多講了

 

總結上述模式的缺陷:

a)  主節點掛了能否自動切換連接?目前需要手工切換。

b)  主節點的寫壓力過大如何解決?

c)  從節點每個上面的數據都是對數據庫全量拷貝,從節點壓力會不會過大?

d)  就算對從節點路由實施路由訪問策略能否做到自動擴展?

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM