MongoDB學習筆記之分區機制概述

來源:互聯網
上載者:User

分區是mongodb對資料進行水平擴充的一種方式,通過選擇合適的片鍵將資料均勻地儲存在shard server叢集中。

分區組件由shard server叢集、config server和mongos進程組成。如下圖所示:


config server中儲存與分區相關的中繼資料,即有哪些shard server,有哪些chunk,chunk位於哪個shard server上等。

mongos主要負責路由,將用戶端的請求轉寄到對應的shard server上。

shard server上存放了真正的資料,shard server可以是一個mongod,也可以是一個複本集。


config server

config server是一個特殊的mongod執行個體,儲存shard叢集的中繼資料。一台config server容易出現單點故障,官方建議3台config server,既保證資料安全,又降低了多台config server之間資料同步開銷。只要有任何一台config server不可用,config server叢集就變為唯讀,如果都掛了,重啟之前的讀寫請求會丟失。可以在不停機的情況下修改config server的名稱和數量。

config server通過config database來儲存中繼資料,mongos則把中繼資料快取起來。config database中與分區有關的集合有:

config.changelog 記錄中繼資料的變更;

config.chunks 記錄每個chunk的資訊,包括chunk所屬shard,以及chunk的min與max值;

config.lockpings與config.locks儲存了分布式鎖相關資訊,當均衡器在做工作之前需要先擷取鎖; 

config.mongos 儲存mongos執行個體資訊,mongos執行個體間每隔30秒會有心跳檢測;

config.settings 分區相關配置,比如chunk大小,是否啟用均衡器等

config.shards 記錄每個shard對應的機器,如果shard是一個複本集,則為對應複本集的名稱。


chunk

shard中的資料被劃分為多個chunk,每個chunk的預設大小為64M,如果chunk的大小超過64M時,mongos會嘗試對其進行分割,分割後會導致每個shard對應的chunk數不一致,mongos會對這些不均勻的分區進行遷移。

如果發現64M遷移過程太長,可以減小塊大小提高遷移速度,修改塊大小時,已經存在的塊不會立即拆分,而是在下一次拆分時進行。


均衡器

由於遷移是有開銷的,mongodb並不是在發現chunk數不一致時立即進行遷移,有一個migration thresholds概念存在,migration thresholds取值如下:

小於20 2
20~79 4
>=80  8

遷移過程如下:

(1)mongos發送movechunk命令給源分區

(2)源分區執行內部的moveChunk操作,這時對chunk的寫操作寫到源分區

(3)目的分區從源分區拷貝資料,一次一個chunk

(4)拷貝完最後一個chunk後,緊接著執行一個同步操作,把遷移過程中的修改同步到目的分區

(5)同步完成後,目的分區串連到config database,更新中繼資料,修改遷移塊對應的shard資訊

(6)更新中繼資料成功後,在源分區上刪除chunk資料

均衡器分為手動均衡和自動均衡,通過setBalancerState(false)設定後,均衡器不會進入均衡過程,可以在locks表中查看均衡器的狀態。當向叢集中添加新分區時,均衡器會嘗試為該分區寫資料,從而觸發一系列的遷移過程,影響應用程式效能,在添加分區時一般應關閉均衡器,或者控制均衡器的啟動時間範圍。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.