MongoDB副本和分片基本概念

http://www.xuchanggang.cn/archives/1015.html

1.副本集 Replicat sets模式

MongoDB副本和分片基本概念
MongoDB副本和分片基本概念

1.主服務器負責整個副本集的讀寫,副本集按期同步數據備份,一但主節點掛掉,副本節點就會選舉一個新的主服務器,這一切對於應用服務器不須要關心
2.副本集中的副本節點,在主節點掛掉後,經過心跳機制檢測到後,就會在集羣內發起主節點的選舉機制,自動選舉一位新的主服務器
3.Mongodb 提供了各類開發語言訪問 Mongodb replica sets 的驅動程序,因此,訪問地址的高可用在客戶端訪問代碼中實現
4.Mongodb Replicat sets 同步測試
5.Mongodb Replicat sets 故障切換測試
6.Mongodb Replicat sets 讀寫分離配置
讀寫分離,將讀壓力分散到副本集的副本節點上,能夠減輕主節點的讀寫壓力
(1)設置讀寫分離,須要先在副本節點SECONDARY ,設置 setSlaveOk。
(2)在程序中設置副本節點負責讀操做,html

2.分片

mongos:

數據庫集羣請求的入口,全部的請求都經過mongos進行協調,不須要在應用程序添加一個路由選擇器;
      mongos本身就是一個請求分發中心,它負責把對應的數據請求請求轉發到對應的shard服務器上;
      在生產環境,一般有多mongos做爲請求的入口,防止其中一個掛掉全部的mongodb請求都沒有辦法操做。

config server:

顧名思義爲配置服務器,存儲全部數據庫元信息(路由、分片)的配置;
      mongos自己沒有物理存儲分片服務器和數據路由信息,只是緩存在內存裏,配置服務器則實際存儲這些數據;
      mongos第一次啓動或者關掉重啓就會從 config server 加載配置信息,之後,若是配置服務器信息變化會通知到全部的 mongos 更新本身的狀態;
      這樣, mongos 就能繼續準確路由;
      在生產環境一般有多個 config server 配置服務器,由於它存儲了分片路由的元數據,這個可不能丟失!就算掛掉其中一臺,只要還有存貨, mongodb集羣就不會掛掉。

shard:

這就是傳說中的分片了。
      一臺機器的一個數據表 Collection1 存儲了 1T 數據,壓力太大了;
      在分給4個機器後,每一個機器都是256G,則分攤了集中在一臺機器的壓力;
      也許有人問一臺機器硬盤加大一點不就能夠了,爲何要分給四臺機器呢?不要光想到存儲空間,實際運行的數據庫還有硬盤的讀寫、網絡的IO、CPU和內存的瓶頸;
      在mongodb集羣只要設置好了分片規則,經過mongos操做數據庫就能自動把對應的數據操做請求轉發到對應的分片機器上;
      在生產環境中分片的片鍵可要好好設置,這個影響到了怎麼把數據均勻分到多個分片機器上,不要出現其中一臺機器分了1T,其餘機器沒有分到的狀況,這樣還不如不分片!

replica set:

分片若是沒有 replica set 是個不完整架構; 假設,其中的一個分片掛掉那四分之一的數據就丟失了,因此,在高可用性的分片架構,還須要對於每個分片構建 replica set 副本集保證分片的可靠性;      生產環境一般是 2個副本 + 1個仲裁。

MongoDB副本和分片基本概念

mongos 3個, config server 3個,數據分3片 shard server 3個,每一個shard 有一個副本一個仲裁也就是 3 * 2 = 6 個,總共須要部署15個實例

3.問題

db.books.stats(); 從上面看,咱們這個插入的數據,分配很不均衡,至於何解,有待研究mongodb

相關文章
相關標籤/搜索