單實例:
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: Linuxip-10-67-194-123 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011x86_64 BOOST_LIB_VERSION=1_49 [initandlisten] allocator: tcmalloc [initandlisten] options: { storage: { dbPath:"/data/mongodbtest/single/data/" } } [initandlisten] waiting for connections on port27017
Web訪問:localhost:28017
注:第一次啓動會有點久
主從模式:
ip:192.168.30.131 作爲主節點master
ip:192.168.30.132 作爲從節點slave
master創建文件夾:/data/mongodbtest/master
slave 創建文件夾:/data/mongodbtest/slave
啓動master:
/data/mongodbtest/single/mongodb/bin/mongod --dbpath/data/mongodbtest/master -master
輸出日誌如下,表示已成功:
[initandlisten] MongoDBstarting :pid=3978port=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=3521port=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 fromhost:192.168.30.131:27017
測試主從複製
在主節點上連接到終端:
/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 replicationinfo. source: 192.168.30.131:27017 syncedTo:Tue Sep 22 2015 15:57:59 GMT+0800 (CST) 13secs (0 hrs) behind the freshest member (no primary available at the moment)
一主多從模式:
和主從模式一樣,只是再添加從主機而已,這裏就不多講了
總結上述模式的缺陷:
a) 主節點掛了能否自動切換連接?目前需要手工切換。
b) 主節點的寫壓力過大如何解決?
c) 從節點每個上面的數據都是對數據庫全量拷貝,從節點壓力會不會過大?
d) 就算對從節點路由實施路由訪問策略能否做到自動擴展?