IT有意思shell
發佈時間:18-12-2909:40數據庫
步驟:spa
1,對數據庫enableSharding3d
shell進入mongos節點,use admin庫blog
執行 db.runCommand( { enablesharding : "xx庫" } );或 sh.enableSharding()這一步是對數據庫啓用分片能力,同一個庫的不一樣collection會分佈到不一樣shard上索引
可是一個collection只會存在於一個shard上hash
2,對集合開啓分片it
在開啓了數據庫分片以後,能夠開始集合分片io
仍是要在admin庫下執行file
db.runCommand( { shardcollection : "xx庫.xx集合",key : {files_id: 1} } )有以下參數:
{ shardCollection: "<database>.<collection>", key: <shardkey>, unique: <boolean>, numInitialChunks: <integer>, collation: { locale: "simple" }, writeConcern: <document>}key :分片的片鍵。參數是個document。
{索引字段:1或-1或hashed}
索引要在開啓分片前建好。雖然mongo說若是是空庫,開啓分片時會自動建立不存在的索引,但仍是建議你事前手動建立好。
說明:索引字段最好是在空庫的時候就建好。數據量很大的時候新建索引必定要當心,第一找業務不忙的時候作,第二千萬別忘了加background參數
1:升序,-1降序,hashed:哈希分佈
mongo根據這個片鍵把documents劃分到一個個chunks(塊)中
最終是這些chunks在mongo各分片間均衡分配
因此說片鍵的選擇和chunks的分配有直接的關係
另外注意:一旦對collection執行了分片,這個片鍵的值就不可改了。也就是說分片策略就徹底固定下來了
unique:惟一性限制,默認是false。若是是hashed片鍵,不支持unique
若是將unique值爲true,意味着:
1,對於尚未分片的集合,若是這個集合有其餘的unique索引,那麼這個集合將不能進行分片
2,對於已經分片的集合,你不能在這個集合上建立其餘的unique索引
numInitialChunks:在片鍵策略是hashed時有效。就是讓mongo初始化建立好多少個chunks,而後進行均衡