Mongodb - 查看数据库何时被删除

5 mongodb

我想知道是否有办法查看数据库何时被删除。日志文件中是否有条目或其他方式可以查看何时发生

Ada*_*m C 5

如果 drop 命令运行缓慢,那么它将被记录在日志中(默认情况下 >100ms),否则它的唯一记录将在oplog(假设您正在运行一个副本集,甚至是一个单节点副本集)并且假设它在过去到目前为止没有发生,它已经“脱离”了oplog(这是一个有上限的集合)。

注意:在针对您的 oplog 运行查询之前,请注意任何此类查询都将是表扫描,并且运行此类查询可能会很慢,尤其是在具有大oplog. 如果您有可用的辅助,您可能希望将其用于此类查询,而不是将负载添加到您的主要。

话虽如此,让我们举一个例子。我们将调用数据库“foo”,删除它并展示您将如何搜索oplog删除的证据。在mongoshell 中,您的查询将如下所示:

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)

在那之后,收集此类证据的唯一其他地方将是文件系统,因为在删除数据库时文件将被取消链接/删除。关于如何做到这一点(以及潜在的问题)有很多答案——我过去曾成功地使用过这个