集群里的單個(gè)碎片保存了總數(shù)據(jù)的一個(gè)子集,集群里的所有碎片所持有的子集就是總數(shù)據(jù)鹰晨。
在MongDB3.6版本里墨叛,為了冗余性和高可靠性,單個(gè)碎片必須是一個(gè)副本集模蜡。
用戶漠趁,客戶端,應(yīng)用應(yīng)該直接連接到碎片執(zhí)行維護(hù)操作忍疾。
在單個(gè)碎片里執(zhí)行查詢只會返回一部分?jǐn)?shù)據(jù)闯传。連接到mongos
來執(zhí)行集群級別的操作,包括讀寫操作卤妒。
重要:MongDB不保證單個(gè)碎片存在兩個(gè)連續(xù)的塊甥绿。
主碎片
每個(gè)在集群里的數(shù)據(jù)庫都有一個(gè) primary shard持有該數(shù)據(jù)庫沒碎片化的集合。每個(gè)數(shù)據(jù)庫都有自己的primary shard荚孵。primary shard 跟副本集的 primary沒有任何聯(lián)系妹窖。
當(dāng)通過持有數(shù)據(jù)量最少的碎片創(chuàng)建數(shù)據(jù)庫的時(shí)候,mongos會使用primary shard收叶。mongos
使用listDatabase命令返回的totalSize字段來作為一部分的選擇標(biāo)準(zhǔn)骄呼。
[圖片上傳失敗...(image-257913-1520013137947)]
使用 movePrimary
命令來改變數(shù)據(jù)庫的primary shard。完成遷移primary shard需要消耗大量時(shí)間判没,并且在遷移完成前你不應(yīng)該訪問數(shù)據(jù)庫的集合蜓萄。根據(jù)被遷移的數(shù)據(jù)量,遷移可能會對集群里的整體操作造成影響澄峰。在嘗試更改primary shard前嫉沽,應(yīng)該從分考慮到網(wǎng)絡(luò)暢通性和對集群操作的影響。
以前是一個(gè)副本集俏竞,現(xiàn)在你的碎片建立在該副本集之上且把該碎片加入到集群里的時(shí)候绸硕,所有已經(jīng)存在的數(shù)據(jù)庫繼續(xù)運(yùn)行在當(dāng)前的副本集里。以后創(chuàng)建的數(shù)據(jù)庫可能會存在于集群里的其他任何碎片中魂毁。
碎片狀態(tài)
在mongo shell運(yùn)行sh.status()方法可以查看當(dāng)前集群的大概情況玻佩。其中包括了哪個(gè)碎片是當(dāng)前數(shù)據(jù)庫的primary shard,還可以看到碎片里的chunk描述席楚。
集群安全性
使用 Internal Authentication來確保內(nèi)部集群的安全性和避免無效用戶訪問集群咬崔。為了集群的內(nèi)部身份驗(yàn)證,您必須在集群中使用適當(dāng)?shù)陌踩O(shè)置啟動每個(gè)mongod。
碎片的本地用戶
每個(gè)碎片都支持s Role-Based Access Control (RBAC) 來限制未認(rèn)證的用戶訪問和操作碎片垮斯。啟動每個(gè)mongod實(shí)例的時(shí)候指定 --auth
選項(xiàng)來強(qiáng)制開啟RBAC郎仆。另外,未用戶開啟 Internal Authentication同時(shí)也會開啟RBAC兜蠕。
每個(gè)碎片都有自己的本地用戶扰肌。這些用戶不能用于其他碎片上,也不能用來連接mongos
.