作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维
欢迎关注本人公众号,更多精彩与您分享。
oplog 是replica set或者master/slave模式专用,在replica set中oplog是一个定容集合(capped collection),其实就是一张表,它的默认大小是磁盘空间的5%(可以通过–oplogSizeMB参数修改)。
位于local库的db.oplog.rs,有兴趣可以看看里面到底有些什么内容。其中记录的是整个mongod实例一段时间内数据库的所有变更(插入/更新/删除)操作。
当空间用完时新记录自动覆盖最老的记录。其覆盖范围被称作oplog时间窗口。
需要注意的是,因为oplog是一个定容集合,所以时间窗口能覆盖的范围会因为你单位时间内的更新次数不同而变化。
1、查看oplog的内容
use local
db.oplog.rs.find().pretty()
主要需要关注的字段:
"ts" : Timestamp(1553597844, 1) <----操作时间
"op" : "n" <----操作类型
ns: <----操作所在的namespace
o: <----操作所对应的document,即当前操作的内容(比如更新操作时要更新的的字段和值)
o2: <---在执行更新操作时的where条件,仅限于update时才有该属性
关于op操作类型主要有:
"i": insert
"u": update
"d": delete
"c": db cmd
"db":声明当前数据库 (其中ns 被设置成为=>