日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

搭建mongodb集群(副本集+分片)

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搭建mongodb集群(副本集+分片) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

完整的搭建mongodb集群(副本集+分片)的樣例。。。

準(zhǔn)備四臺(tái)機(jī)器,各自是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0

副本集及分片策略確定例如以下:

  • 將創(chuàng)建3個(gè)副本集,命名為shard1,shard2,shard3;
  • 以上3個(gè)副本集作為3個(gè)分片;
  • 每一個(gè)副本集包括3個(gè)副本(主、輔1、輔2);
  • 副本分開存儲(chǔ),即shard1存在bluejoe1、bluejoe2、bluejoe3上各一份。。。

    以此類推

  • 將創(chuàng)建3個(gè)配置庫(kù)實(shí)例,一臺(tái)機(jī)器一個(gè)
  • bluejoe0上配置一個(gè)mongos(mongos一般能夠配置在應(yīng)用端)
畫了一個(gè)圖:


詳細(xì)操作過程例如以下:
  • 在bluejoe1上下載mongdb安裝包。
  • 解壓至/usr/local/mongdb(注意改名)。
  • 創(chuàng)建data/db1,db2,db3文件夾,啟動(dòng)3個(gè)mongod實(shí)例,注意replSet的名字:
    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 &
  • 使用scp命令。將mongodb文件夾復(fù)制至bluejoe2和bluejoe3機(jī)器,并依照第3步啟動(dòng)每臺(tái)機(jī)器上的3個(gè)實(shí)例;
  • 初始化副本:
    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"}]}})
  • 觀察副本集的實(shí)時(shí)復(fù)制特性
  • 連接上bluejoe1:10001。看到db1:PRIMARY>的字樣,說(shuō)明它是db1的主節(jié)點(diǎn)
  • 創(chuàng)建一張新表。創(chuàng)建幾條測(cè)試記錄
  • 連接上bluejoe3:10002。看到shard1:SECONDARY>的字樣,說(shuō)明它是shard1的輔助節(jié)點(diǎn)
  • 注意此時(shí)無(wú)法查詢前面新增的記錄,會(huì)報(bào)錯(cuò)not master and slaveOk=false
  • 回到bluejoe1:10001,設(shè)置slaveOk
    db.getMongo().setSlaveOk()
  • 再回到bluejoe3:10002,就可以看到主節(jié)點(diǎn)寫入的記錄
  • 觀察副本集的故障轉(zhuǎn)移特性
  • 殺掉bluejoe1:10001的進(jìn)程
  • 再次連接上bluejoe3:10002。看到shard1:PRIMARY>的字樣,說(shuō)明它已經(jīng)變成shard1的主節(jié)點(diǎn)
  • 假設(shè)這時(shí)再啟動(dòng)bluejoe1:10001,則發(fā)現(xiàn)它已經(jīng)變成shard1:SECONDARY>
  • 創(chuàng)建data/configdb。啟動(dòng)配置庫(kù)實(shí)例:
    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 &
    假設(shè)須要關(guān)閉mongod服務(wù),可使用--shutdown選項(xiàng)。如:
    /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/configdb --shutdown
    到如今為止應(yīng)該有12個(gè)mongd實(shí)例。當(dāng)中3個(gè)為配置庫(kù)實(shí)例,剩下的屬于3個(gè)副本集。接下來(lái)管理分片,在bluejoe0上啟動(dòng)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 }能夠看出,雖然注冊(cè)的時(shí)候僅僅是提供了副本集的主節(jié)點(diǎn),但mongos已知曉了各輔助節(jié)點(diǎn);

    對(duì)某個(gè)庫(kù)開啟分片功能:
    mongos> db.runCommand({"enablesharding":"test"}) { "ok" : 1 } mongos> db.runCommand({"shardcollection":"test.person","key":{_id:'hashed'}}) { "collectionsharded" : "test.person", "ok" : 1 }插入測(cè)試數(shù)據(jù):
    mongos> for(var i=0;i<10;i++){db.person.insert({name:"bluejoe"+i});} WriteResult({ "nInserted" : 1 })查看數(shù)據(jù)分片存儲(chǔ)情況:
    [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>

    總結(jié)

    以上是生活随笔為你收集整理的搭建mongodb集群(副本集+分片)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。