慢查询

// 开启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") 

若出现错误