MongoDB分區簡單一實例
分區
在Mongodb裡面存在另一種叢集,就是分區技術,可以滿足MongoDB資料量大量增長的需求。
當MongoDB儲存海量的資料時,一台機器可能不足以儲存資料也足以提供可接受的讀寫輸送量。這時,我們就可以通過在多台機器上分割資料,使得資料庫系統能儲存和處理更多的資料。
為什麼使用分區
- 複製所有的寫入操作到主節點
- 延遲的敏感性資料會在主節點查詢
- 單個複本集限制在12個節點
- 當請求量巨大時會出現記憶體不足。
- 本地磁碟不足
- 垂直擴充價格昂貴
MongoDB分區
展示了在MongoDB中使用分區叢集結構分布:
中主要有如下所述三個主要組件:
- Shard:
用於儲存實際的資料區塊,實際生產環境中一個shard server角色可由幾台機器組個一個relica set承擔,防止主機單點故障
- Config Server:
mongod執行個體,儲存了整個 ClusterMetadata,其中包括 chunk資訊。
- Query Routers:
前端路由,用戶端由此接入,且讓整個叢集看上去像單一資料庫,前端應用可以透明使用。
具體執行個體
採用三個shard一個佈建服務
1.首先啟動三個資料庫伺服器連接埠分別是:55555,55556,55557,host:localhost.
./mongod --port 55555 --dbpath=data/share1 --logpath=data/share1/logs/s1.log --logappend --fork
./mongod --port 555556--dbpath=data/share2 --logpath=data/share2/logs/s2.log --logappend --fork
./mongod --port 55557 --dbpath=data/share3 --logpath=data/share3/logs/s3.log --logappend --fork
2.啟動設定管理員
./mongod --port 55558 --dbpath=data/config --logpath=data/config/logs/cnf.log --logappend --fork
3.啟動路由服務.
./mongos --port 55554 --dbpath=data/share --logpath=data/share/logs/route.log --logappend --fork --configdb localhost:55558 --chunkSize 500
其中chunkSize為分區的大小,佈建服務主要儲存有路由資訊
4.添加shard
use admin
db.runCommand({addshard:"localhost:55555"})
db.runCommand({addshard:"localhost:55556"})
db.runCommand({addshard:"localhost:55557"})
db.runCommand({enablesharding:"test"})//資料庫test有分區能力
db.runCommand({shardcollection:"test.log",key:{id:1,time:1}})//指定文檔中資料庫對應的表通過什麼分區.這裡是test中log表根據id和time分區.
5.查看分區狀態
db.runCommand({listshards:1})
更多MongoDB相關教程見以下內容:
CentOS 編譯安裝 MongoDB與mongoDB的php擴充
CentOS 6 使用 yum 安裝MongoDB及伺服器端配置
Ubuntu 13.04下安裝MongoDB2.4.3
MongoDB入門必讀(概念與實戰並重)
Ubunu 14.04下MongoDB的安裝指南
《MongoDB 權威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
Nagios監控MongoDB分區叢集服務實戰
基於CentOS 6.5作業系統搭建MongoDB服務
MongoDB 的詳細介紹:請點這裡
MongoDB 的:請點這裡
本文永久更新連結地址: