数据库维护和性能优化:
db.js_wx_setting_menu.storageSize();
db.js_html_alias.totalIndexSize();
故障排除和监控:
查看当前正在进行的操作:
db.currentOp() ////终止事务:db.adminCommand( { "killOp": 1, "op": "d-m5ebbc7a56ba0164:998043313" } )
使用db.currentOp()和db.currentOp(true):这两个命令可以帮助你获取当前正在运行的操作的详细信息。db.currentOp(true)会返回更多的细节,包括锁信息,这可能帮助你理解
查看运行时间超过5S的:
db.currentOp({"active": true,"secs_running": { "$gt": 5 }})
查询指定集合的操作:
db.currentOp({"query": { "$exists": true },"ns": "yourDatabase.yourCollection"})
查看特定的类型:
db.currentOp({"query": { "$exists": true },"op": "insert"})
查看数据库锁信息:
db.currentOp({"$all": true, "$or":[{"queryLocks":{"$exists":true}},{"lockStats":{"$exists":true}}]})
查看特定的用户:db.currentOp({"user": "yourUsername"})
查看服务器状态:db.serverStatus()
查看当前数据库连接数:db.serverStatus().connections
查看当前数据库连接IP:db.adminCommand({currentConn:1}) 阿里自研
数据一致性检查:
查看内存:
关注:
db.adminCommand({setParameter: 1, wiredTigerEngineRuntimeConfig: "cache_size=1610612736"})
缓存大小的调整只会影响后续的读取和写入操作,不会对已经存在于缓存中的数据产生直接影响。现有的数据将继续留在缓存中,直到它们过期或被其他数据替换
查看oplog:
集群模式下,必须要要单独进入到每个具体的分片中执行操作,在每个分片上,再分别进入primary和secondary单独操作才能生效。
在每个分片的执行的操作与上述大致相同,即:
1. 查看oplog空间大小
db.printReplicationInfo()
2. 修改oplog空间大小(单台)永久生效,不用重启
db.adminCommand({replSetResizeOplog:1,minRetentionHours:8,size:51200})
3. 再次查看oplog空间大小
db.printReplicationInfo()
请求大小限制:
集合操作:
文档操作:
查询操作:
findOneAnd操作:
更新操作:
更新文档:db.collection_name.updateOne({field1: value1}, {$set: {field2: new_value}})
更新多个文档:db.collection_name.updateMany({field1: value1}, {$set: {field2: new_value}})
替换与指定筛选器匹配的单个文档:db.collection.replaceOne()
删除文档:
删除文档:db.collection_name.deleteOne({field1: value1});
删除多个文档:db.collection_name.deleteMany({field1: value1});
删除文档所有数据:db.collection.remove({});
聚合操作:(discint count)
聚合查询:
db.ai_scene_question.aggregate([{$group: {_id: "$sceneId",count: { $sum: 1 }}},{$match: {count: { $gt: 1 }}},{$project: {field: "$_id",count: 1,_id: 0}}])
索引操作:
游标:
未在会话下打开的游标会在处于非活动状态 10 分钟后自动关闭,或者客户端已用尽游标
var myCursor = db.users.find().noCursorTimeout();
cursor.close() #手动关闭光标
var myCursor = db.users.find( { type: 2 } );
myCursor
var myCursor = db.users.find( { type: 2 } );
while (myCursor.hasNext()) {
print(tojson(myCursor.next()));}
日志管理:
复制集相关:
集群分片相关:
启动平衡器
关闭某个集合的balance
预设定的时间做balancer
连接到其中一个mongos
use config
sh.setBalancerState( true )
// 每天3-5点
db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "3:00", stop : "5:00" } } }, true )
sh.getBalancerWindow() // 查看balancer时间窗口
sh.status()
查询是否存在孤立:
结果中的统计信息,查看是否存在异常或孤立的分片键。
输出结果中包含类似 "Chunk is orphaned" 或 "collection is not sharded or orphaned" 的错误信息,则表示存在孤立的分片键。
输出结果中的每个分片的 details 字段。在该字段中,你可以检查分片的 orphaned 字段,如果为 true,则表示该分片存在孤立的分片键
公众号内直接回复加群,即可添加微信群。觉得帖子写的不错,点点关注,点点赞,多多转载,请多多支持。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有