Mongodb數據庫集羣分片技術簡述

一、分片
  • 分片就是對數據庫中的數據進行拆分保存在不同機器上;
  • 分片包括手動分片和自動分片;
  • 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.查看片
db.shards.find()

2.查看在片上的數據庫列表信息
db.databases.find()
結果中:
  • _id:數據庫名
  • partitioned:是否啓用分片
  • primary:數據庫大本營

3.塊信息查看
db.chunks.find()



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