ITPub博客

首页 > 数据库 > NoSQL > mongodb replicat internal(一)

mongodb replicat internal(一)

原创 NoSQL 作者:wei-xh 时间:2014-01-21 19:17:57 0 删除 编辑
这几天在看MONGODB权威指南,第十二章提到了,复制集创建索引的时候,可以把备份节点启动到standalone方式,然后先在备份节点创建索引,然后再在主节点创建索引,这中间的好处我就不写了,我在考虑,备份节点以stand alone方式启动后,创建索引后也会产生oplog,等下一次备份节点正常启动加入集群后,根据自己的oplog去查看主节点或者备份节点的oplog,岂不是会对不上,那么怎么这些多余的OPLOG怎么处理?

> use local
switched to db local
> db.oplog.rs.find().sort({$natural:-1}).limit(2)
{ "ts" : Timestamp(1390301622, 1000), "h" : NumberLong("793634680372110302"), "v" : 2, "op" : "i", "ns" : "test.coll", "o" : { "_id" : ObjectId("52de51b6a69b146212ea6d4f"), "count" : 999 } }
{ "ts" : Timestamp(1390301622, 999), "h" : NumberLong("683697805657698615"), "v" : 2, "op" : "i", "ns" : "test.coll", "o" : { "_id" : ObjectId("52de51b6a69b146212ea6d4e"), "count" : 998 } }

> use test
switched to db test
> db.coll.ensureIndex({count:1})
> db.coll.stats()
{
        "ns" : "test.coll",
        "count" : 3000,
        "size" : 120008,
        "avgObjSize" : 40.00266666666667,
        "storageSize" : 348160,
        "numExtents" : 4,
        "nindexes" : 2,
        "lastExtentSize" : 262144,
        "paddingFactor" : 1,
        "systemFlags" : 1,
        "userFlags" : 0,
        "totalIndexSize" : 196224,
        "indexSizes" : {
                "_id_" : 106288,
                "count_1" : 89936
        },
        "ok" : 1
}
> use local
switched to db local
> db.oplog.rs.find().sort({$natural:-1}).limit(2)
{ "ts" : Timestamp(1390301622, 1000), "h" : NumberLong("793634680372110302"), "v" : 2, "op" : "i", "ns" : "test.coll", "o" : { "_id" : ObjectId("52de51b6a69b146212ea6d4f"), "count" : 999 } }
{ "ts" : Timestamp(1390301622, 999), "h" : NumberLong("683697805657698615"), "v" : 2, "op" : "i", "ns" : "test.coll", "o" : { "_id" : ObjectId("52de51b6a69b146212ea6d4e"), "count" : 998 } }


咦?发现索引创建的OPLOG根本没记录到OPLOG集合里。
再试试其他操作
> for (i=0; i<1000; i++) {db.coll.insert({count: i}) }
> db.coll.stats()
{
        "ns" : "test.coll",
        "count" : 4000,
        "size" : 160008,
        "avgObjSize" : 40.002,
        "storageSize" : 348160,
        "numExtents" : 4,
        "nindexes" : 2,
        "lastExtentSize" : 262144,
        "paddingFactor" : 1,
        "systemFlags" : 1,
        "userFlags" : 0,
        "totalIndexSize" : 302512,
        "indexSizes" : {
                "_id_" : 138992,
                "count_1" : 163520
        },
        "ok" : 1
}
> db.oplog.rs.find().sort({$natural:-1}).limit(2)> use local
switched to db local
> db.oplog.rs.find().sort({$natural:-1}).limit(2)
{ "ts" : Timestamp(1390301622, 1000), "h" : NumberLong("793634680372110302"), "v" : 2, "op" : "i", "ns" : "test.coll", "o" : { "_id" : ObjectId("52de51b6a69b146212ea6d4f"), "count" : 999 } }
{ "ts" : Timestamp(1390301622, 999), "h" : NumberLong("683697805657698615"), "v" : 2, "op" : "i", "ns" : "test.coll", "o" : { "_id" : ObjectId("52de51b6a69b146212ea6d4e"), "count" : 998 } }

依然没有记录。看来MONGO会识别到你启动的备份节点是一个RS节点,当以stand alone方式启动后,不会记录你在里面进行的修改操作。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-1073616/,如需转载,请注明出处,否则将追究法律责任。

上一篇: numa不是我想象
请登录后发表评论 登录
全部评论
Oracle ACE组成员,DBGeeK用户组发起人。曾在DTCC、ORACLE技术嘉年华、Gdevops等公开场合做过数据库技术专题分享,2017年应Oracle邀请在世界最大的数据库会议OOW上做技术分享。组织翻译了《拨云见日,解密Oracle ASM内核》一书。

注册时间:2009-07-04

  • 博文量
    422
  • 访问量
    2306734