如果 drop 命令运行缓慢,那么它将被记录在日志中(默认情况下 >100ms),否则它的唯一记录将在oplog
(假设您正在运行一个副本集,甚至是一个单节点副本集)并且假设它在过去到目前为止没有发生,它已经“脱离”了oplog
(这是一个有上限的集合)。
注意:在针对您的 oplog 运行查询之前,请注意任何此类查询都将是表扫描,并且运行此类查询可能会很慢,尤其是在具有大oplog
. 如果您有可用的辅助,您可能希望将其用于此类查询,而不是将负载添加到您的主要。
话虽如此,让我们举一个例子。我们将调用数据库“foo”,删除它并展示您将如何搜索oplog
删除的证据。在mongo
shell 中,您的查询将如下所示:
use local;
db.oplog.rs.find({ns : "foo.$cmd", "o" : { "dropDatabase" : 1 }})
Run Code Online (Sandbox Code Playgroud)
如果找到,结果将如下所示:
{
"ts" : Timestamp(1412246712, 1),
"h" : NumberLong("-6606042550253448275"),
"v" : 2,
"op" : "c",
"ns" : "foo.$cmd",
"o" : {
"dropDatabase" : 1
}
}
Run Code Online (Sandbox Code Playgroud)
在那之后,收集此类证据的唯一其他地方将是文件系统,因为在删除数据库时文件将被取消链接/删除。关于如何做到这一点(以及潜在的问题)有很多答案——我过去曾成功地使用过这个。
归档时间: |
|
查看次数: |
2781 次 |
最近记录: |