一、分片
- 分片就是對數據庫中的數據進行拆分保存在不同機器上;
- 分片包括手動分片和自動分片;
- MongoDB則支持自動分片;
二、mongos
MongoDB需要路由進程mongos,mongos知道所有數據的存放位置,應用連接mongos發送請求.mongos對應用隱藏分片細節,將請求轉發到相應數據庫機器;
三、片鍵
1.片鍵是作爲數據拆分的依據,MongoDB依據片鍵將數據拆分;
根據機器的數量的添加和刪除,MongoDB會重新平衡數據,使的其流量比較均衡;
2.片鍵種類
片鍵包括遞增片鍵和隨機片鍵;
像"timestamp"就屬於遞增片鍵,特點是數據寫入將集中在一臺服務器、而數據的查詢速度非常快;
片鍵的選擇將影響對數據查詢的操作
四、建立分片
分片包括三個組成部分,分別是:片、mongos、配置服務器;
片:集合數據容器
mongos:路由器進程
配置服務器:存儲集羣配置信息
1.啓動配置服務器
mkdir -p ~/dbs/config
./mongod --dbpath ~/dbs/config --port 20000
2.啓動配置服務器
./mongos --port 3000 --configdb localhost:20000
3.創建分片
mkdir -p ~/dbs/db1
./mongod --dbpath ~/dbs/shard1 --port 10000
4.添加片
連接mongos
./mongo localhost:30000/admin
通過addshard命令添加片(allowLocal允許配置在本地)
db.runCommand({addshard:"localhost:10000",allowLocal:true})
{
"added":"localhost:10000",
"ok":true
}
5.切分數據庫will的test集合
首先開啓will數據庫的分片功能
db.runCommand({"enablesharding":"will"})
再對集合分片(以_id爲基準)
db.runCommand({"shardcollection":"will.test","key":{"_id":1}})
五、保證集羣的健壯性
1.多配置服務器
方法:重複配置服務器創建步驟;
啓動mongos時 ./mongos --configdb localhost:20001,localhost:20002
2.多mongos進程
方法:多啓動
3.數據的容錯性
方法:創建數據副本
六、管理分片
1.查看片
2.查看在片上的數據庫列表信息
結果中:
- _id:數據庫名
- partitioned:是否啓用分片
- primary:數據庫大本營
3.塊信息查看