程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> mongodb學習筆記09--shard分片

mongodb學習筆記09--shard分片

編輯:DB2教程

mongodb學習筆記09--shard分片


概述

shard 分片 就是 把不同的數據分在不同的服務器

模型

這裡寫圖片描述

其中:<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjxiciAvPg0K08O7p7bUbW9uZ29kYrXEstnX97a8ysfP8m1vbmdzx+vH87XEPGJyIC8+DQpjb25maWdzdnIg08PT2rGjtOajrMSzzPXK/b7dsaO05tTaxMS49nNoYXJktcTJzzxiciAvPg0KJm5ic3A7PC9wPg0KPGgxIGlkPQ=="如何使用分片">如何使用分片

先啟動2個節點作為shard

mongd --dbpath ~/db/mongo1/databse --logpath ~/db/mongo1/log/mongo.log --port 27017 --fork --smallfiles
mongd --dbpath ~/db/mongo2/databse --logpath ~/db/mongo2/log/mongo.log --port 27018 --fork --smallfiles

啟動 configsvr,就是比前面的多加了 –configsvr

mongd --dbpath ~/db/mongo3/databse --logpath ~/db/mongo3/log/mongo.log --port 27019 --fork --smallfiles --configsvr

啟動mongos,注意–configdb 指定configsvr

mongos --logpath ~/db/mongo4/log/mongs.log --port 27020  --configdb 127.0.0.1:27020 --fork

連到mongos

mongo --port 27020

把前面運行的2個節點,添加進來

sh.addShard("127.0.0.1:27017")
sh.addShard("127.0.0.1:27018")

查看狀態

sh.status()

定義分片規則:比如 先聲明test庫可以分片,然後定義依據my表的my_id來分片

sh.enableSharding('test')
sh.shardCollection('test.my',{'my_id':1})

分片原理
n篇文檔,形成一個“chunk”,先放到某個shard上,當這片shard的上的chunk數,比其它shard上的chunk數區別大時,就移動chunk到另一個shard上。

修改chunk的大小:比如修改到4m
默認某個chunk的大小是64m

use config
db.setting.save({_id:'chunksize',value:4m})

手動預先分片

前面的分片方法中,根據chunk數來分片,這樣會帶來影響IO的問題。
可以手動預制分片,例如定義my_id 0~1000 放在shard1中,1001~2000 放在shard2中,2001~3000 中放在shard3中

sh.enableSharding('test')
sh.shardCollection('test.my',{'my_id':1})
sh.splitAt('my',{my_id:1000})
sh.splitAt('my',{my_id:2000})
sh.splitAt('my',{my_id:3000})

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved