MongoDB中db.currentOp()输出中的奇怪操作
启动MongoDB服务器(独立实例,版本4.2.2)后,如果运行MongoDB中db.currentOp()输出中的奇怪操作,mongodb,Mongodb,启动MongoDB服务器(独立实例,版本4.2.2)后,如果运行db.currentOp()我会看到以下操作: { "type" : "op", "host" : "menzo:27017", "desc" : "waitForMajority", "active" : true, "currentOpTime" : "2020-05-06T16:16:33.077+0200", "opid"
db.currentOp()
我会看到以下操作:
{
"type" : "op",
"host" : "menzo:27017",
"desc" : "waitForMajority",
"active" : true,
"currentOpTime" : "2020-05-06T16:16:33.077+0200",
"opid" : 2,
"op" : "none",
"ns" : "",
"command" : {
},
"numYields" : 0,
"waitingForLatch" : {
"timestamp" : ISODate("2020-05-06T14:02:55.895Z"),
"captureName" : "WaitForMaorityService::_mutex"
},
"locks" : {
},
"waitingForLock" : false,
"lockStats" : {
},
"waitingForFlowControl" : false,
"flowControlStats" : {
}
}
不管经过多长时间,这个操作似乎总是存在的。此外,在某些方面,这是一个奇怪的操作:
- 它有一个非常好的日志
编号(2)opid
- 它的
是op
“无”
- 它没有通常的
或secs\u运行
参数microsecs\u运行
- 它在某些文字中提到“多数”,但我运行的不是副本集,而是独立实例
是否有人知道该操作和/或可以指向描述该操作的文档?提前谢谢 已定义等待多数服务。查看此文件的历史记录,它似乎是作为工作的一部分添加的 阅读票据描述,似乎在启动期间,多个操作可能需要等待多数提交。以前,每个线程可能都创建了一个单独的线程等待;对于多数等待服务,只有一个线程正在等待最近的所需提交 因此: 它的op是“无” 线程未执行操作 它有一个非常好的日志opid号(2) 这是因为该线程是在服务器启动时启动的 它在某些文字中提到“多数”,但我运行的不是副本集,而是独立实例
可以指示
mongod
以副本集模式运行,并将其指向由独立节点创建的数据目录,反之亦然。在这些情况下,您可能希望流程保留数据库中已有的信息,例如挂起(或需要中止)的事务。因此,启动程序可能会执行不属于要求的操作模式的操作。谢谢您的回答!浏览MongoDB源代码以找到解决方案超出了我的研究范围;)