【问题标题】:MongoDB Timestamp of last write operation?上次写操作的MongoDB时间戳?
【发布时间】:2013-04-17 19:42:17
【问题描述】:

我想验证我们设置的几个 Mongo DB 是否被实际使用。因此,我希望获得最后一次写入操作的时间戳。到目前为止我发现了什么:

  • 使用时间戳查询集合。问题:不同集合的不同查询。并非所有人都有时间戳。大量数据库中的大量集合。​​

  • 一般的 Oplog。对于 STANDALONE 服务器将无法工作 - 除非我现在通过使独立服务器在副本集中运行来创建 oplog。然后也许我可以 ping oplog 并获取数据。让 JS 脚本请求最后一个对象可能会更快。

  • mongooplog command。用于复制更改(将更改从 A 应用到 B)。我宁愿浏览 oplog 本身。

  • 使用 ObjectID(它的时间戳精确到一秒)。甚至还有一步一步的博客文章detailing how

不过,我想知道是否有办法只查询数据库并让它回答。最好是每个集合,但如果我能得到每个数据库的答案,那就太酷了。这将允许我删除未使用的数据库。有什么可以用的吗?

【问题讨论】:

    标签: mongodb timestamp


    【解决方案1】:

    怎么样

    db.serverStatus() 
    

    在此命令的输出中,您有许多操作:

    "opcounters" : {
            "insert" : 1111,
            "query" : 532,
            "update" : 0,
            "delete" : 0,
            "getmore" : 4,
            "command" : 357
        },
    

    连接数:

    "connections" : {
        "current" : 1,
        "available" : 2047
    },
    

    网络利用率:

    "network" : {
        "bytesIn" : 82202280,
        "bytesOut" : 24469137,
        "numRequests" : 1635
    },
    

    简单的监控就够了

    【讨论】:

    • 嗯...必须说,我没有考虑到这个命令。服务器的状态是一个,虽然它非常擅长简单的监控,但我认为这不能给我关于“上次使用这是多少天前”的信息。不过,会仔细看看,谢谢你的建议。
    • 绝对是简单监控的好选择,但也绝对不能告诉我上次写操作发生的时间。至少在 Mongo 2.4.3 上它不能。
    • 偶然发现了这个答案并最终将其用作快速破解解决方案。我只是运行一个简单的线程,它每 100 毫秒调用一次此方法,如果插入操作计数器自上次调用以来增加,那么我将 last_insert_time var 设置为当前时间。这给了我大约 1/10 秒的精度,这对于我的应用程序来说已经绰绰有余了。这对我来说效果很好,因为我的应用程序与 DB 在同一台服务器上,所以我不担心延迟,但如果有人提出了更好的解决方案,请分享..
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多