1. 程式人生 > >【MongoDB】管理命令收集

【MongoDB】管理命令收集

副本 asc tty javascrip 主機 min gte plog class

[TOC]

慢查詢

// 開啟2000毫秒以上的慢查詢記錄
db.setProfilingLevel(1,2000)
// 查看最近5條慢查詢
show profile
// 按照慢查詢執行時間倒序查詢
db.system.profile.find().sort({‘millis‘:-1}).pretty
// 查看查詢計劃
db.Sync_Log.find({"$and":[{"mbid" :{$eq 7542163}},{‘t‘:{$gte:2333}}]}).explain()
// 關閉慢查詢記錄
db.setProfilingLevel(0)

任務管理

停止超過一定時間的查詢

db.currentOp().inprog.forEach(
function(item){
if (item.secs_running > 1000 ) 
db.killOp(item.opid);
}
)

停止對某個表的查詢

db.currentOp().inprog.forEach(
function(item){
if (item.ns == "dbA.tbA")
db.killOp(item.opid)
}
)

找出某種類型的任務

db.currentOp().inprog.forEach(
function(item){
if (item.op=="query")
{print(item.opid,item.op);}
}
)

另一種思路的任務查看

db.currentOp(
    {$and :[
        {ns:{$ne:‘local.oplog.rs‘}},
        {ns:{$ne:‘local.replset.minvalid‘}},
        {ns:{$ne:‘admin.$cmd‘}},
        {ns:{$ne:‘‘}}]
    }
)

副本集管理

修改主機名

cfg = rs.conf()
cfg.members[0].host = "xxxhost: 20000"
cfg.members[1].host = "yyyhost: 20001"
cfg.members[2].host = "zzzhost: 20002"
rs.reconfig(cfg)

分片管理

修改primary shard

MongoDB 分片集群創建數據庫時,系統會挑一個可用空量最大的節點作為其默認節點。

db.runCommand({"movePrimary": "test", "to": "shard0000"})

手動遷移集合的數據塊

用途:在需要下線某個節點時,預先遷移出數據

sh.moveChunk("dbA.collectionB", { collC: "53187" }, "shard0019")

若出現錯誤

【MongoDB】管理命令收集