mongdb官方文档有点语焉不详 网上的流程没有关于开启了认证或者分片模式的 特记录如下
mongodb默认情况下是不开启慢查询的 需要开启慢查询的话可以在启动命令后面添加参数
--profile 1 --slowms 3000
完整的命令就像这样
mongod -f /data/mongodb-4.2.8/conf/shard3.conf --profile 1 --slowms 3000
--profile 1 1的意思是开启慢查询分析器 同样的还有0 和2 两个参数 0是关闭 2是收集任何信息
--slowms 是阈值 单位是ms 30000就是半分钟
也可以通过命令行去开启
db.setProfilingLevel(1, { slowms: 30000 })
这样重启之后就开启了慢查询了 每个实例都需要这个步骤 mongos上无法统一开启
config集群应该是不需要开启这个参数 的。。应该没必要分析config的慢查询 。估计也没有 数据量很少
注意mongos上通过命令行是无法开启慢查询的 只能调整慢查询的阈值 ,虽然数据是经由mongos去查询的 慢查询则无法通过mongos去查看
如果在mongos上操作 应该会报这个错误
"Profiling is not permitted on mongoS: the 'profile' field should be 0 to change 'slowms' and 'sampleRate' settings for logging, or -1 to view current values"
认证集群通常都是直接在mongos上完成的认证 查询慢查询日志的时候会发现在单独的实例上无法认证通过 正确的账密永远报错
其实是因为实例本身也有单独的认证。。这个时候在实例上创建root帐号就行了
use admin
db.createUser({user: "root",pwd: "xxxxxxx", roles: [ { role: "root", db: "admin" } ]})
然后就可以
db.getProfilingStatus()
查看慢查询的设置情况
分析器数据查询示例
要返回system.profile 集合中最近的 10 个日志条目,请运行类似于以下内容的查询:
db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty()
要返回特定集合的操作,请运行类似于以下内容的查询。此示例返回mydb
数据库 test
集合中的操作:
db.system.profile.find( { ns : 'mydb.test' } ).pretty()
要返回特定时间范围内的信息,请运行类似于以下内容的查询:
db.system.profile.find({
ts : {
$gt: new ISODate("2012-12-09T03:00:00Z"),
$lt: new ISODate("2012-12-09T03:40:00Z")
}
}).pretty()
更多的内容可以参阅