mongoDB開啓分片操做

mongoDB開啓分片操做

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,而後進行均衡

相關文章
相關標籤/搜索