mongodb3.4版本 副本集+分片配置

使用了2臺服務器

副本集:rs0
62:
27100 主
69:
27100 從
27200 仲裁

-----------------------------------------------------------------------

分片:
62:
28000  
30000 路由
69:
28000
30000 confServer

----------------------------------------------------------------------

前面的安裝mongodb就不多說了,直接說一下我的文件存放位置

我在mongo目錄下新建了四個文件夾,分別是bin conf data log

==============bin================

其中在bin中存放的是mongodb安裝以後bin目錄下的所有命令,

cp * /home/data/mongodb/bin

環境變量設置:

export PATH=/home/data/mongodb/bin:$PATH

==============conf================

存放的是配置文件,命名爲mongod_端口的形式命名

如下圖

==============data================

數據存放位置

==============log================

日誌存放位置

 

============================以上是說明=========================================

好,介紹完了以後開始進入正題:

首先配置副本集

----------------副本集開始-------------------------------

#創建文檔路徑

cd /home/data/mongodb/log
#62
mkdir 27100 
#69
mkdir 27100 27200

mongod_27100的配置信息

dbpath=/home/data/mongodb/data/27100
logpath=/home/data/mongodb/log/27100/mongodb.log
port=27100
logappend=1
nojournal=true
profile = 1 # 開啓Profiling和設置 日誌級別
slowms = 500 #多久以上纔會記錄
replSet = rs0 #副本集名稱
shardsvr=true
fork=1

#連接27100
mongod -f  mongod_27100.conf 

mongo --port=27100


#設置副本,初始化

rsconf = {
           _id: "rs0",
           members: [
                      {
                       _id: 0,
                       host: "192.168.1.62:27100"
                      }
                    ]
         }
rs.initiate(rsconf)

-------------------------------分割線----------

mongod_27100.conf配置信息

dbpath=/home/data/mongodb/data/27100
logpath=/home/data/mongodb/log/27100/mongodb.log
port=27100
logappend=1
nojournal=true
profile = 1 # 開啓Profiling和設置 日誌級別
slowms = 500 #多久以上纔會記錄
replSet = rs0
fork=1
shardsvr=true 

mongod_27200.conf配置信息_仲裁者

dbpath=/home/data/mongodb/data/27200
logpath=/home/data/mongodb/log/27200/mongodb.log
port=27200
logappend=1
nojournal=true
profile = 1 # 開啓Profiling和設置 日誌級別
slowms = 500 #多久以上纔會記錄
replSet = rs0
fork=1
shardsvr=true

ps:shardsvr=true #這裏是分片的時候使用,不設置的情況下雖然能添加到分片上,但是存儲數據的時候不會往這個副本集上存.


#啓動69上的27100,27200

mongod -f mongod_27100.conf 

mongod -f mongod_27200.conf

#在62上進行操作,添加副本集和仲裁者
rs.add("192.168.1.69:27100") #副本集

rs.addArb("192.168.1.69:27100") #仲裁者


#副本集中打開查詢_69上操作
db.getMongo().setSlaveOk();  #db.setSlaveOk(true)
 

#查看狀態

 rs.status()

#判斷是否主服務器

rs.isMaster()

========================副本集設置結束===================

========================分片設置開始===================

#創建shard分片用到的文件夾

mkdir /home/data/mongodb/shard/s1

mkdir /home/data/mongodb/shard/logs

mkdir /home/data/mongodb/shard/config

 

mongod_28000.conf 配置

dbpath=/home/data/mongodb/shard/s1
logpath=/home/data/mongodb/shard/logs/s1.log
port=28000
logappend=1
nojournal=true
profile = 1 # 開啓Profiling和設置 日誌級別
slowms = 500 #多久以上纔會記錄
fork=1
shardsvr=true

#62,69啓動28000

mongod -f mongod_28000.conf 

69上mongod_30000.conf(confServer的配置)

dbpath=/home/data/mongodb/shard/config
logpath=/home/data/mongodb/shard/logs/config.log
port=30000
logappend=1
profile=1 # 開啓Profiling和設置 日誌級別
slowms=500 #多久以上纔會記錄
fork=1
replSet=rs_shard
configsvr=true


#啓動Config_69
mongod -f mongod_30000.conf 

 

#登錄config服務器,設置副本集_ 3.4版本中configSever需要副本集(沒有測試過不使用副本集是否可以,看其他人的文章中有說明)
mongo -port=30000

use admin

cfg = {
    _id:'rs_shard',
    configsvr:true,
    members:[
        {_id:0,host:'192.168.1.69:30000'}
     ]
};
rs.initiate(cfg)

 

62上的mongod_30000.conf配置信息

logpath=/home/data/mongodb/shard/logs/route.log
port=30000
logappend=1
fork=1
configdb=rs_shard/192.168.1.69:30000


#啓動路由服務_62
mongos -f mongod_30000.conf  #分片的路由服務啓動使用的是mongos,其他的confServer,以及shard都是mongod
mongo -port=30000
use admin

#添加分片
 sh.addShard("192.168.1.62:28000")
  sh.addShard("192.168.1.69:28000")
  sh.status()
  #設置分片db 
  sh.enableSharding("demo")


#設置分片集
 sh.shardCollection("demo.account",{"name":1})

#這裏需要注意的是,在3.4版本中分片服務器必須設置shardsvr=true,
同樣的在confServer中也需要設置configsvr=true,否則報錯

#填充數據測試
 for(i=1;i<1991000;i++){ db.account.insert({"id":i,"name":"mongodb","age":6,"date":new Date()}); }
#查看
sh.status()

此時可以看到分片0/1上都有數據存在

mongos> sh.setBalancerState(true)  #關閉自動均衡器,手動均衡,打開:sh.setBalancerState(true)
mongos> db.settings.find()          #查看均衡器狀態

#設置一個均衡時間窗口:activeWindow
mongos> db.settings.update({"_id":"balancer"},{"$set":{"activeWindow":{"start":"00:00","stop":"05:00"}}},true)
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : "balancer" })
mongos> db.settings.find({"_id":"balancer"})
{ "_id" : "balancer", "activeWindow" : { "start" : "00:00", "stop" : "05:00" } }

------------------------------------------------------------分片結束------------------------------------

-------------------------------------------分片+副本集--------------------------------


#添加副本集分片_副本集要啓動了纔可以,第二個參數是設置副本集的分片名稱
sh.addShard("rs0/192.168.1.62:27100,192.168.1.69:27100","rs")


#刪除副本分片
 use admin   #需要到admin下面刪除
switched to db admin
db.runCommand({"removeshard":"rs0"})

ps:如果執行完以後,發現一直處於draining狀態 ,可以再執行一次刪除操作,
這裏是db.runCommand({"removeshard":"rs0"})

-------------------------------------------分片+副本集結束--------------------------------

 


備註:
啓動關閉
mongodb的啓動順序是,先啓動配置服務器,在啓動分片,最後啓動mongos.

關閉時,直接killall殺掉所有進程

killall mongod
killall mongos

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章