mongodb日志oplog解读

一、新增记录日志

{
    "ts": Timestamp(1510305485,41),
    "t": NumberLong(5),
    "h": NumberLong("7492832279483245745"),
    "v": 2,
    "op": "i",
    "ns": "z3dbus.test",
    "o": {
        "_id": ObjectId("5a056ecdb96f487a7f77d2c5"),
        "name": "name_insert"
    }
}

二、修改记录日志

{
    "ts": Timestamp(1510305775,34),
    "t": NumberLong(5),
    "h": NumberLong("-6029253721195928804"),
    "v": 2,
    "op": "u",
    "ns": "z3dbus.test",
    "o2": {
        "_id": ObjectId("5a056ecdb96f487a7f77d2c5")
    },
    "o": {
        "_id": ObjectId("5a056ecdb96f487a7f77d2c5"),
        "name": "name_update"
    }
}

三、删除记录日志

{
    "ts": Timestamp(1510305960,2),
    "t": NumberLong(5),
    "h": NumberLong("-4557629900402454893"),
    "v": 2,
    "op": "d",
    "ns": "z3dbus.test",
    "o": {
        "_id": ObjectId("5a056ecdb96f487a7f77d2c5")
    }
}

字段含义
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,即空操作,其会定期执行以确保时效性 。

你可能感兴趣的:(数据存储)