轉載自 http://www.cnblogs.com/spnt/
Mongodb的Sharding維護也是就那幾個命令,相對來說都很簡單,結合執行個體做下示範。
1,列出所有的Shard Server
注意一點是:需要串連到路由的admin下。listshards的參數1是一個固定的預設值,沒有特殊的意義。
2,查看Sharding的資訊
切換到Friends資料庫,使用printShardingStatus(),可以看到當前Sharding的資訊。
3,對現有的表執行Sharding。
上面我們對FriendUserAttach表執行了分區,下面我們在對另外一個表FriendUser進行分區。
首先我們查看下FriendUser的狀態
第一行 sharded=false,說明該表未被分區。然後我們串連到路由器的admin上執行分區命令
對資料庫Friends的表FriendUser做了分區,片鍵是_id,我們運行命令查看下狀態
看以看到已經成功分區。
4,新增Shard Server
新增Shard Server的用處就不在說了,這是大資料下肯定會用到的命令。下面說步驟
首先我們在啟動一個新的Mongodb ,連接埠號碼定為2002。
把這個新的進程添加到咱們已經做好的“串”中,注意:這點是要串連到路由的admin中
然後我們看下當前的分區情況
可以看到多了一個shard0002的分區。
5,移除分區
移除分區不是立刻實現的,他需要一個把分區上的資料轉移到其他分區的過程,當轉移完成後該分區才會被正式踢下線。這時候也需要多次調用命令,查看移除操作執行到了那裡。
移除命令是:db.runCommand({"removeshard":"ip+連接埠"}),注意是這裡需要用admin資料庫來執行操作
這裡看以清晰的看到狀態:
started:移除的動作剛剛開始
ongoing:移除進行中
completed:完成
到最後一個提示"can't find shard" 說明已經是被踢下線了。