搭建mongodb集群(副本集+分片)
生活随笔
收集整理的這篇文章主要介紹了
搭建mongodb集群(副本集+分片)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
完整的搭建mongodb集群(副本集+分片)的樣例。。。
準備四臺機器,各自是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0
副本集及分片策略確定例如以下:
- 將創建3個副本集,命名為shard1,shard2,shard3;
- 以上3個副本集作為3個分片;
- 每一個副本集包括3個副本(主、輔1、輔2);
- 副本分開存儲,即shard1存在bluejoe1、bluejoe2、bluejoe3上各一份。。。
以此類推
- 將創建3個配置庫實例,一臺機器一個
- bluejoe0上配置一個mongos(mongos一般能夠配置在應用端)
詳細操作過程例如以下:
mkdir /usr/local/mongodb/data/db1 /usr/local/mongodb/data/db2 /usr/local/mongodb/data/db3 nohup /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/db1 --port 10001 --replSet db1 --logpath=/usr/local/mongodb/log/db1.log & nohup /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/db2 --port 10002 --replSet db2 --logpath=/usr/local/mongodb/log/db2.log & nohup /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/db3 --port 10003 --replSet db3 --logpath=/usr/local/mongodb/log/db3.log &
mongo bluejoe1:10001use admindb.runCommand({"replSetInitiate":{"_id":"db1","members":[{"_id":1,"host":"bluejoe1:10001"},{"_id":2,"host":"bluejoe2:10001"},{"_id":3,"host":"bluejoe3:10001"}]}})mongo bluejoe1:10002use admindb.runCommand({"replSetInitiate":{"_id":"db2","members":[{"_id":1,"host":"bluejoe1:10002"},{"_id":2,"host":"bluejoe2:10002"},{"_id":3,"host":"bluejoe3:10002"}]}})mongo bluejoe1:10003use admindb.runCommand({"replSetInitiate":{"_id":"db3","members":[{"_id":1,"host":"bluejoe1:10003"},{"_id":2,"host":"bluejoe2:10003"},{"_id":3,"host":"bluejoe3:10003"}]}})
db.getMongo().setSlaveOk()
mkdir /usr/local/mongodb/data/configdb nohup /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/configdb --port 20000 --logpath=/usr/local/mongodb/log/configdb.log &
假設須要關閉mongod服務,可使用--shutdown選項。如:
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/configdb --shutdown
到如今為止應該有12個mongd實例。當中3個為配置庫實例,剩下的屬于3個副本集。接下來管理分片,在bluejoe0上啟動mongs:
nohup /usr/local/mongodb/bin/mongos --port 30000 --configdb bluejoe1:20000,bluejoe2:20000,bluejoe3:20000 &連接上mongos,配置分片信息:
mongo bluejoe0:30000mongos> use admin switched to db admindb.runCommand({"addShard":"db1/bluejoe1:10001"}) db.runCommand({"addShard":"db2/bluejoe1:10002"}) db.runCommand({"addShard":"db3/bluejoe1:10003"})查看分片情況:
mongos> ?db.runCommand({listshards:1}) {"shards" : [{"_id" : "db1","host" : "db1/bluejoe1:10001,bluejoe2:10001,bluejoe3:10001"},{"_id" : "db2","host" : "db2/bluejoe1:10002,bluejoe2:10002,bluejoe3:10002"},{"_id" : "db3","host" : "db3/bluejoe1:10003,bluejoe2:10003,bluejoe3:10003"}],"ok" : 1 }能夠看出,雖然注冊的時候僅僅是提供了副本集的主節點,但mongos已知曉了各輔助節點;
對某個庫開啟分片功能:
mongos> db.runCommand({"enablesharding":"test"}) { "ok" : 1 } mongos> db.runCommand({"shardcollection":"test.person","key":{_id:'hashed'}}) { "collectionsharded" : "test.person", "ok" : 1 }插入測試數據:
mongos> for(var i=0;i<10;i++){db.person.insert({name:"bluejoe"+i});} WriteResult({ "nInserted" : 1 })查看數據分片存儲情況:
[root@hadoop0 ~]# mongo bluejoe3:10002 MongoDB shell version: 2.6.5 connecting to: bluejoe3:10002/test shard1:PRIMARY> db.person.find() { "_id" : ObjectId("546ff1013a0d0ec68b42a914"), "name" : "bluejoe0" } { "_id" : ObjectId("546ff1013a0d0ec68b42a915"), "name" : "bluejoe1" } { "_id" : ObjectId("546ff1013a0d0ec68b42a91a"), "name" : "bluejoe6" } { "_id" : ObjectId("546ff1013a0d0ec68b42a91b"), "name" : "bluejoe7" } { "_id" : ObjectId("546ff1013a0d0ec68b42a91c"), "name" : "bluejoe8" } shard1:PRIMARY> exit bye [root@hadoop0 ~]# mongo bluejoe2:10001 MongoDB shell version: 2.6.5 connecting to: bluejoe2:10001/test shard2:PRIMARY> db.person.find() { "_id" : ObjectId("546ff1013a0d0ec68b42a918"), "name" : "bluejoe4" } shard2:PRIMARY> exit bye [root@hadoop0 ~]# mongo bluejoe3:10001 MongoDB shell version: 2.6.5 connecting to: bluejoe3:10001/test shard3:PRIMARY> db.person.find() { "_id" : ObjectId("546ff1013a0d0ec68b42a916"), "name" : "bluejoe2" } { "_id" : ObjectId("546ff1013a0d0ec68b42a917"), "name" : "bluejoe3" } { "_id" : ObjectId("546ff1013a0d0ec68b42a919"), "name" : "bluejoe5" } { "_id" : ObjectId("546ff1013a0d0ec68b42a91d"), "name" : "bluejoe9" } shard3:PRIMARY>
總結
以上是生活随笔為你收集整理的搭建mongodb集群(副本集+分片)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse git commit
- 下一篇: Caffe 网络结构可视化