主分片 分片狀態(tài) 分片集群的安全
一個分片包含分片集群中分片數(shù)據(jù)的一部分。同時,集群中的所有分片擁有整個集群的全部的數(shù)據(jù)。
分片應該被部署為復制集模式,以提供數(shù)據(jù)冗余和高可用性。
用戶,客戶端,或者應用程序只有在執(zhí)行本地管理或者維護操作時才能直連分片(否則應該連接到mongos路由服務)。
在一個單獨的分片上執(zhí)行查詢操作只會返回數(shù)據(jù)的一部分。應該連接到mongos來執(zhí)行集群級別的操作,包括讀或?qū)懖僮鳌?/p>
重要 MongoDB不保證任意兩個連續(xù)的數(shù)據(jù)塊存在于同一個分片中。
主分片
一個分片集群中的每個數(shù)據(jù)庫都有一個主分片,數(shù)據(jù)庫中的所有非分片集合存儲在主分片中。主分片和復制集中的主節(jié)點是不同的概念。
當創(chuàng)建一個新的數(shù)據(jù)庫時,mongos會選擇集群中數(shù)據(jù)最少的分片作為數(shù)據(jù)庫的主分片。Mongos使用listDatabase 命令返回的totalSize 字段作為選擇條件的一部分。

如果要改變數(shù)據(jù)庫的主分片,使用movePRimary命令。主分片的遷移過程可能花費大量時間,并且你將不能訪問數(shù)據(jù)庫中的集合直到該過程完成。取決于遷移數(shù)據(jù)量的大小,遷移過程可能影響所有的集群操作。因此,在試圖修改主分片之前,需要考慮對集群操作和網(wǎng)絡負載的影響。
當前使用此前被部署為復制集模式的分片來構(gòu)建一個分片集群時,所有已經(jīng)存在的數(shù)據(jù)會繼續(xù)存在它們原來的復制集(分片)中。之后創(chuàng)建的數(shù)據(jù)庫可能會存儲在集群中的任意分片。
分片狀態(tài)
在mongo命令行使用sh.status()方法可以查看集群的概況。報告信息包含了每個數(shù)據(jù)庫的主分片以及數(shù)據(jù)塊的分布情況。查看sh.status()方法獲取更多詳情。
分片集群的安全
使用內(nèi)部認證(Internal Authentication)來保證內(nèi)聯(lián)網(wǎng)集群的安全并阻止未經(jīng)授權(quán)的集群組件訪問集群。為了實施內(nèi)部認證,你必須以恰當?shù)陌踩O置啟動集群中的每個MongoDB 主程序(mongod )。
查看Deploy Sharded Cluster with Keyfile access Control 獲取部署一個安全的分片集群的指南。
分片本地用戶
每個分片都支持基于角色的訪問控制(RBAC) 來限制對分片數(shù)據(jù)未經(jīng)授權(quán)的訪問和操作。啟動復制集中的每個mongod 主程序時,通過攜帶–auth 選項來實施RBAC。或者,使用內(nèi)部認證(Internal Authentication)來保證內(nèi)聯(lián)網(wǎng)集群的安全,也可以基于RBAC實現(xiàn)對用戶的訪問控制。
每個分片擁有它自己的分片本地用戶。這些用戶不能在其它分片上使用,也不能用于通過mongos連接分片集群。
查看Enable Auth獲取關于添加用戶到一個啟用了RBAC的MongoDB部署的指南。
新聞熱點
疑難解答