千家信息网

查询MongoDB oplog.rs

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,oplog是Capped Collection,默认分配5%的空闲磁盘空间。来看下oplog.rs的样子:rs_test:SECONDARY> use localswitched to db loca
千家信息网最后更新 2026年11月01日查询MongoDB oplog.rs

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

来看下oplog.rs的样子:

rs_test:SECONDARY> use localswitched to db localrs_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/


查询 字节 时间 更新 字段 数据 数据库 最大 重要 内容 名称 含义 小时 属性 情形 所在 时效 时效性 时间段 机时 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 万易互联网科技 互联网 科技服务平台 互联网科技素材视频竖屏 互联网巨头投资的硬核科技 山东吉时兔互联网科技有限公司 华中科技有哪些互联网大佬 哈尔滨新华互联网科技学院 互联网科技热点资讯 花神(南京)互联网科技有限公司 佛山市翊博互联网络科技有限公司 雨阳互联网卡科技有限公司 容联科技互联网电商 互联网公司属于科技吗 福仕德教育科技互联网 互联网科技的前景 北京瑞云互联网科技有限公司 恒生科技互联网指数十大成分股 高科技和互联网的现代国家 如何强化互联网金融科技 互联网科技产业 互联网科技工作委员会主任 狮子座互联网科技 互联网科技网站 岳阳华臻互联网科技有限公司 阿大互联网科技有限公司 长沙互联网科技 伊宁互联网科技做什么的 上海同邻互联网科技有限公司规模 安徽零酒互联网科技有限公司
0