mysql binlog oplog_阅读mongoDB Binlogs

您可以在MongoDB中使用类似的方法. binlog的等价物是

oplog(与MySQL binlog一样)通常用于复制.在MongoDB中,oplog是一个名为oplog.rs的

capped collection,它位于本地数据库中.作为一个上限集合,oplog保留了固定的历史记录.你可以

change the size of the oplog.

为了让MongoDB创建一个oplog,您需要配置您的mongod以使用复制.如果您只需要oplog,则可以创建仅包含一个节点的虚拟副本集.

注意:建议的生产配置是使用至少包含三个节点的复制,因为这提供了故障转移和数据冗余.

解释oplog格式的一系列有用的博客文章以:Replication Internals开头.您可以像查看普通的MongoDB集合一样查询它,这样您就可以尝试一些更新并查看生成的命令是什么.

在给定名称空间(mydb数据库,mycollection)中查找给定对象ID(o2._id)的所有更新的示例:

> use local

> db.oplog.rs.find({'ns':'mydb.mycollection', 'o2._id' : ObjectId("501c87fa9d2b5b2b54437125")})

{

"ts" : Timestamp(1344047454000, 1),

"h" : NumberLong("226994175309144171"),

"op" : "u",

"ns" : "mydb.mycollection",

"o2" : {

"_id" : ObjectId("501c87fa9d2b5b2b54437125")

},

"o" : {

"name" : "Bobby Tables",

"iq" : 180

}

}

在上面的示例中,我找到了具有ObjectID 501c87fa9d2b5b2b54437125的文档的更新条目(op:u).应用了两个列更新:name,iq.

MySQL binlogs需要注意的一个区别是MongoDB oplog是要应用的idempotent更改的列表; MySQL binlog是修改数据的语句列表. oplog格式允许MongoDB多次安全地应用条目而不会产生不必要的副作用.这也意味着您将发现影响多个文档的更新命令的结果作为oplog中每个文档的单独条目,而不是像binlog中显示的单个“UPDATE ..”语句.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值