【NoSQL】mongo_detail.py中均衡器信息的处理思路
发布时间:2020-12-13 13:32:42 所属栏目:百科 来源:网络整理
导读:【ToolsForMongo】mongo_detail.py中均衡器信息的处理思路 先看下几种典型状况下的 db.settings.find({'_id':'balancer'}) 输出: 1.创建mongos之后,从未设置balancer时: mongos var x = db.settings.findOne({'_id':'balancer'})mongos x == nulltruemongo
【ToolsForMongo】mongo_detail.py中均衡器信息的处理思路先看下几种典型状况下的 1.创建mongos之后,从未设置balancer时: mongos> var x = db.settings.findOne({'_id':'balancer'}) mongos> x == null true mongos> sh.getBalancerState() true 2.创建了mongos之后,因故手动关闭了balancer mongos> db.settings.findOne({'_id':'balancer'}) { "_id" : "balancer","mode" : "off","stopped" : true } mongos> sh.getBalancerState() false 3.设置了balancer的运行时间段,但当前时间不在其中 mongos> var x = db.settings.findOne({'_id':'balancer'}) mongos> x { "_id" : "balancer","stopped" : true,"activeWindow" : { "start" : "00:00","stop" : "06:00" } } mongos> sh.getBalancerState() false 4.设置了balancer的运行时间段,当前时间在其中 mongos> var x = db.settings.findOne({'_id':'balancer'}) mongos> x { "_id" : "balancer","stopped" : false,"stop" : "22:00" } } mongos> sh.getBalancerState() true 再看下官方mongo shell中的js代码 mongos> sh.getBalancerState function (configDB) { if (configDB === undefined) configDB = sh._getConfigDB(); var x = configDB.settings.findOne({_id: "balancer"}); if (x == null) return true; return !x.stopped; } 1.先处理了configDB不是默认的config库的情况 2. 3.对返回值中的.stopped项进行取反,得到是否正在运行 mongos> sh.isBalancerRunning function (configDB) { if (configDB === undefined) configDB = sh._getConfigDB(); var x = configDB.locks.findOne({_id: "balancer"}); if (x == null) { print("config.locks collection empty or missing. be sure you are connected to a mongos"); return false; } return x.state > 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |