mongodb切片配置方法


---------------------------------切片架構圖-------------------------------------------------------------------------------
          切片1  切片2  切片3
     |          |           |
              ------------------
                         |
                         |                 | -----配置服務器(主)
用戶---------->路由-----------|-----配置服務器(從1)
                                 |-----配置服務器(從2)

注:mongo 3.4版本以后配置服務器必須是復本集,因此看到有的教程配置服務器是一台時都是老版本了。
-----------------------------------------------------------------------------------------------------------------------------------

步驟:
1、先配置配置服務器的復本集
1)主 ./mongod --configsvr --dbpath /home/jack/mongoData01/data --logpath /home/jack/mongoData01/log/log --port 3000 --replSet myset 
2)從1 ./mongod --configsvr --dbpath /home/jack/mongoData02/data --logpath /home/jack/mongoData02/log/log --port 3100 --replSet myset 
3)從2 ./mongod --configsvr --dbpath /home/jack/mongoData03/data --logpath /home/jack/mongoData03/log/log --port 3300 --replSet myset 
**說明:--configsvr一定要加上,說明該服務器是配置服務器
4)主從全部起動,用shell登陸主,然后設置副本集
(1)、配置信息
rsconf={
   "_id" : "myset",
    "members" : [
      {
        "_id" : 0,
        "host" : "172.16.60.180:3000"
      }
    ]
  }
(2)、初始化
   rs.initiate(rsconf)
(3)、添加集群
   rs.add("172.16.60.180:3100")
   rs.add("172.16.60.180:3200")
2、配置路由服務器並啟動
  ./mongos --configdb myset/172.16.60.180:3000,172.16.60.180:3100,172.16.60.180:3200 --logpath /home/jack/mongoData04/log/log --port 3300 
  說明:configdb后面的myset必須與配置服務器上的副本集名字一致。
3、配置切片服務器
1) cd /home/jack/mongodb-linux-x86_64-3.4.5/bin
  ./mongod --dbpath /home/jack/mongoData06/data --logpath /home/jack/mongoData01/log/log --port 3400 --shardsvr
2) cd /home/jack/mongodb-linux-x86_64-3.4.5/bin
  ./mongod --dbpath /home/jack/mongoData06/data --logpath /home/jack/mongoData01/log/log --port 3500 --shardsvr
  **說明:--shardsvr一定要加上,說明該服務器是切片服務器
3、連接路由並添加切片
1)sh.addShard('172.16.60.180:3400')
2)sh.addShard('172.16.60.180:3500')
3)sh.addShard('172.16.60.180:3600')
4、添加待分片的庫
sh.enableSharding(databaseName)
5、添加待分片的表
sh.shardCollection('dbName.CollectionName',{field:1})
--------------------------------------------------------------------------------------------------------------
**說明:1)若需要分片時,數據已經存在,則需要對collection中的某一字段先創建索引
2)一旦分片鍵和分片值確定下來了就不可以改變。
其他命令:
1)查看其他集群狀態信息
sh.status()
2)自定義分片(例子)
for(var i=0;i<40;i++){
sh.splitAt('dbName.CollectionName',{field:i*1000})
}
3)修改chunck大小(單位:M)
(1)、use config
(2)、db.settings.save({_id:"chuncksize",value:64})

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


免責聲明!

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



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