MongoDB分片

一、什麼是分片
高數據量和吞吐量的數據庫應用會對單機的性能造成較大的壓力,大的查詢量會將單機的CPU耗盡,大的數數量對單機的存儲眼裏較大,最終會耗盡系統的內存二將壓力轉移到磁盤IO上。
MongoDB分片技術可以滿足多個服務器存儲數據的方法,一直吃巨大的數據儲存和對數據進行操作。分片技術可以滿足MongoDB數據量大量增長的需求,當一臺MongoDB服務器不足以存儲數據或不足以提供可接受的讀寫吞吐量是,我們就可以通過在多臺服務器上分割數據,使得數據庫系統能存儲和處理更多的數據。
二、MongoDB分片的優勢。
分片以應對高吞吐量與大數據提供了方法。
1.使用分片減少了每個分片需要處理的請求數,因此,通過水平擴展,羣集可以提高自己的存儲容量和吞吐量。比如,當插入一條數據時,應用只需要訪問存儲這條數據的分片。
2.使用分片極少了每個分片存儲的數據。
分片的優勢在於提供類似線性增長的架構,提高數據可用性,提高大型數據庫查詢服務器的性能。當MongoDB單點數據庫服務器存儲成爲瓶頸、單點數據庫服務器的性能成爲瓶頸或者需要部署大型應用充分利用內存時,可以使用分片技術。
三、MongoDB分片羣集的這一次各部分
MongoDB分片羣集主要有三分主要組件:
1.Shard:分片服務器,用於存儲實際的數據塊,實際生產環境中一個shardserver角色可以有幾臺服務器組成一個Replica Set承擔,防止主機單點故障。
2.Config Server:配置服務器,儲存了整個分片羣集的配置信息,其中包括chunk信息。
3.Routers:前端路由,客戶端由此接入,且讓整個羣集看上去像一個單一數據庫,前端應用可以透明使用。
四、部署MongoDB分片羣集。
下面介紹在一臺物理服務器上部署一個簡單結構的MongoDB分片羣集。其具體配置如下:
1臺路由實例(端口27017)。
1臺配置實例(端口37017)。
2臺Shard實例(端口47017,47018,47019)。
所使用的MongoDB包鏈接: https://pan.baidu.com/s/1qWVdLkhGT1sCEZVAM0-5Lw 密碼: gycd

1.安裝MongoDB
MongoDB分片
把解壓下來的MongoDB包修改名字並放到/usr/local下
MongoDB分片
給MongoDB的命令建立軟鏈接
MongoDB分片
建立MongoDB日誌存位置和數據存放位置。
MongoDB分片
當MongoDB處於頻繁訪問的狀態,如果shell啓動進程所佔用的資源設置較低,將會產生錯誤導致無法連接MongoDB實例。需要設置ulimit -n和ulimit -u的值大於20000。
2.部署配置服務器
MongoDB分片
MongoDB分片
當某節點內存不足時,從其他節點分配內存
MongoDB分片
啓動配置服務器
3.配置分片服務器
MongoDB分片
MongoDB分片
複製一份分片服務器,並開啓2臺分片服務器
4.啓動路由服務器
MongoDB分片
指定連接入口27017,並指定日誌存儲位置,並指定給配置服務器37017處理
5.添加分片服務器
MongoDB分片
直接使用mongo進入路由服務器,通過shardAdded命令添加分片服務器。
MongoDB分片
爲了實現分片需要創建數據,這裏直接使用for添加50000條數據
MongoDB分片
使用sh.status()查看分片狀態。這裏我們看到並沒有開啓分片
MongoDB分片
可以使用sh.enableSharding("school")來開啓數據庫分片,但是並沒有開啓表分片
MongoDB分片
首先需要創建一個索引
MongoDB分片
開啓表分片
MongoDB分片
6.添加刪除分片服務器
MongoDB分片
首先再創建一個分片服務器。在使用shardAdded命令添加分片服務器。使用sh.status()查看分片狀態。
MongoDB分片
刪除分片服務器
MongoDB分片

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