返回顶部
首页 > 资讯 > 数据库 >查询MongoDB oplog.rs
  • 908
分享到

查询MongoDB oplog.rs

2024-04-02 19:04:59 908人浏览 薄情痞子
摘要

oplog是Capped Collection,默认分配5%的空闲磁盘空间。来看下oplog.rs的样子:rs_test:SECONDARY> use local switched

oplog是Capped Collection,默认分配5%的空闲磁盘空间。

来看下oplog.rs的样子:

rs_test:SECONDARY> use local
switched to db local

rs_test:SECONDARY> db.oplog.rs.findOne();
{
        "ts" : Timestamp(1465879171, 238),
        "h" : NumberLong("-2275413922284641862"),
        "v" : 2,
        "op" : "u",
        "ns" : "MyDB.SyncTable",
        "o2" : {
                "_id" : "bbf80260-3D58-49f1-9c8c-e093d5d57527"
        },
        "o" : {
                "_id" : "bbf80260-3d58-49f1-9c8c-e093d5d57527",
                "EntityId" : "362569",
                "TypeName" : "Product",
                "Times" : 14208,
                "CreateTime" : ISODate("2014-11-15T14:35:51.916Z"),
                "LastModified" : ISODate("2016-06-14T04:38:21.708Z"),
                "LastOperationTime" : ISODate("2016-06-14T04:39:30.957Z")
        }
}


字段含义

ts:8字节的时间戳,由4字节unix timestamp + 4字节自增计数表示。
这个值很重要,在选举(如master宕机时)新primary时,会选择ts最大的那个secondary作为新primary。

op:1字节的操作类型,例如i表示insert,d表示delete。

ns:操作所在的namespace。
o:操作所对应的document,即当前操作的内容(比如更新操作时要更新的的字段和值)
o2: 在执行更新操作时的条件,仅限于update时才有该属性。

其中op,可以是如下几种情形之一:
"i": insert
"u": update
"d": delete
"c": db cmd
"db":声明当前数据库 (其中ns 被设置成为=>数据库名称+ '.')
"n": no op,即空操作,其会定期执行以确保时效性。修改配置,会产生 "n" 操作。


查询示例


oplog.rs系统集合只用于复制,不能创建索引,查询语句会很慢。

> db.oplog.rs.find({},{"ts":1}).sort({$natural: -1})
{ "ts" : Timestamp(1406185666, 1) }  
{ "ts" : Timestamp(1406180043, 1) }  
{ "ts" : Timestamp(1406180033, 1) }  
{ "ts" : Timestamp(1406172831, 1) }  
{ "ts" : Timestamp(1406171938, 1) }  

> db.oplog.rs.find({ "ts" : { "$gte" : Timestamp(1406185630, 1) } },{"ts":1})


查询一小时内的oplog

> var SECS_PER_HOUR = 3600
> var now = Math.floor((new Date().getTime()) / 1000) // seconds since epoch right now
> db.oplog.rs.find({ "ts" : { "$lt" : Timestamp(now, 1), "$gt" : Timestamp(now - SECS_PER_HOUR, 1) } }


查询某一时间段内的oplog(当然注意时间是UTC存储)

> var since = Math.floor(ISODate("2014-08-12T09:00:00.000Z").getTime() / 1000)
> var until = Math.floor(ISODate("2014-08-12T15:00:00.000Z").getTime() / 1000)
> db.oplog.rs.find({ "ts" : { "$lt" : Timestamp(until, 1), "$gt" : Timestamp(since, 1) } })


聚合统计各个集合的UPDATE操作量

> db.oplog.rs.aggregate([
        { $match: { "op":"u" }},
        { $group: { _id:"$ns",count:{$sum:1}}}
    ])


oplog参考


Replica Set Oplog
https://docs.mongoDB.com/manual/core/replica-set-oplog/


您可能感兴趣的文档:

--结束END--

本文标题: 查询MongoDB oplog.rs

本文链接: https://lsjlt.com/news/36879.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 查询MongoDB oplog.rs
    oplog是Capped Collection,默认分配5%的空闲磁盘空间。来看下oplog.rs的样子:rs_test:SECONDARY> use local switched...
    99+
    2024-04-02
  • MongoDB如何查oplog.rs集合里的操作日志
    首先需要介绍一下mongodb local库的作用 local库是MongoDB的系统库,记录着时间戳和索引和复制集等信息 test:PRIMARY> use local switched to ...
    99+
    2024-04-02
  • 3.mongodb 查询
    MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档。语法格式如下:db.collection.find(query, projection)query :可选...
    99+
    2024-04-02
  • MongoDB的查询
        MongoDB使用find来查询,不指定任何参数说明是对整个集合的文档查询。find查询    指定返回的键 ...
    99+
    2024-04-02
  • MongoDB(3): 查询
    一、普通查询find方法语法:  find([条件,需显示的字段]);注意:  1、如果没有条件,则查询全部  2、如果没有显示指定_id字段隐藏,则默认会显示,显示指定隐藏,...
    99+
    2024-04-02
  • mongodb慢查询
    开启 Profiling 功能1. 直接在启动参数里直接进行设置      启动MongoDB时加上–profile=1 即可     还可以慢查...
    99+
    2024-04-02
  • golang mongodb 查询
    Golang与MongoDB的联合使用,成为了很多开发人员的选择。这篇文章将介绍如何在Golang中使用MongoDB进行查询操作。简介MongoDB是一个流行的开源文档数据库,它被广泛地用于各种应用程序中。在Golang中,可以使用一些流...
    99+
    2023-05-21
  • mongodb 之慢查询
    mongodb中慢查询日志 1.开启查询日志.(1)动态开启,可以选择性的对指定DB开启慢查询日志,但服务器重启后慢查询日志又要人工手动开启。db.setProfilingLevel(1,300)...
    99+
    2024-04-02
  • mongodb高级查询
      MongoDB 的逻辑结构是一种层次结构。主要由文档(document)、集合(collection)、数据库(database)这三部分组成的。逻辑结构是面向用户的用户使用MongoDB 开...
    99+
    2024-04-02
  • mongodb id 查询golang
    MongoDB是一个非常流行的文档数据库,在现代互联网应用程序中广泛使用。在使用MongoDB时,有时需要使用唯一的ID来查询文档。这个唯一的ID是MongoDB中的_object ID_。在本文中,我们将探讨如何在Go中使用MongoDB...
    99+
    2023-05-15
  • mongodb之查询篇-查询选择器
    引用 https://docs.mongodb.com/manual/reference/operator/query/ 查询选择器: $eq 匹配等于指定值的值。 $gt 匹配大于指定值...
    99+
    2024-04-02
  • MongoDB慢日志查询
    MongoDB system.profile前言Part1:写在最前    说到MongoDB的慢日志分析,就不得不提到profile分析器,profile分析器将记...
    99+
    2024-04-02
  • MongoDB多条件查询
    1.查看集合 show collections2.向集合中添加数据 db.runoob.insertMany([ { 'title':'data1', 'u...
    99+
    2024-04-02
  • mongodb慢查询分析
    1.用慢查询日志(system.profile)找到超过500ms的语句  mongos>db.setProfilingLevel(1,500) 2.然后再通过.explain()...
    99+
    2024-04-02
  • 过滤查询 mongodb Golang
    php小编西瓜今天要为大家介绍的是关于过滤查询mongodb的Golang实现。在使用mongodb数据库进行数据查询时,我们经常需要对查询结果进行过滤,以满足特定的条件。Golang...
    99+
    2024-02-12
  • 【MongoDB学习笔记17】MongoDB的查询:find中的数组查询
    db.post.find()    { "_id" : ObjectId("54a530c3ff0df3732bac1681"), "i...
    99+
    2024-04-02
  • 【MongoDB学习笔记18】MongoDB的查询:find查询内嵌文档
    查询内嵌文档和查询普通文档完全相同;例如:> db.post.find()    { "_id" : ObjectId("54ac...
    99+
    2024-04-02
  • mongodb高级聚合查询
      https://www.cnblogs.com/zhoujie/p/mongo1.html mongodb高级聚合查询     在工作中会经常遇到一些mongodb的聚合操作,特此总结下。mongo存储的可以是复杂类型,比...
    99+
    2016-06-26
    mongodb高级聚合查询
  • mongodb 常用查询用户
    一、查询 find方法   db.collection_name.find();   查询所有的结果:   select * from users;   db.users.find();   指定返回那些列(键):   ...
    99+
    2020-01-07
    mongodb 常用查询用户
  • MongoDB入门6——查询(二)
     3.查询中null的处理         null的匹配非常有意思:null不仅仅会匹配到指定键的值确实等于null的文档,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作