MongoDB oplog是一个capped collection保存,按大小保存数据。TokuMX改变了这一做法,并更改了oplog的设计。

  • 改为按天保存(expireOplogDays)更人性化;
  • capped collection不能满足TokuMX高并发的要求;
  • TokuMX 后台线程删除过期的oplog,在TokuMX 1.3.3及之前版本实现得并不完美,在遇到删除大量oplog的时候,会出现性能问题, 在1.4.0版本中采用类似关系数据库的分区表来解决之前版本的问题。

另外,目前分区表有一些限制:

  • 不支持辅助索引, _id索引是唯一的一个索引,跟根据_id分区;
  • 分区集合不能重命名;
  • addPartition/dropPartition 命令不能复制,因此不能在其他库使用。

查看oplog分区信息及删除oplog分区: javascript toku:PRIMARY> rs.oplogPartitionInfo() { "numPartitions" : NumberLong(8), "partitions" : [ { "_id" : NumberLong(5), "max" : { "" : BinData(0,"AAAAAAAAAAYAAAAAAAAAtw==") }, "createTime" : ISODate("2014-02-12T12:56:45.290Z") }, { "_id" : NumberLong(6), "max" : { "" : BinData(0,"AAAAAAAAAAYAAAAAAAABRw==") }, "createTime" : ISODate("2014-02-13T12:56:45.608Z") }, { "_id" : NumberLong(7), "max" : { "" : BinData(0,"AAAAAAAAAAYAAAAAAAAB1w==") }, "createTime" : ISODate("2014-02-14T12:56:45.928Z") }, { "_id" : NumberLong(8), "max" : { "" : BinData(0,"AAAAAAAAAAYAAAAAAAACZw==") }, "createTime" : ISODate("2014-02-15T12:56:46.209Z") }, { "_id" : NumberLong(9), "max" : { "" : BinData(0,"AAAAAAAAAAYAAAAAAAAC9w==") }, "createTime" : ISODate("2014-02-16T12:56:46.498Z") }, { "_id" : NumberLong(10), "max" : { "" : BinData(0,"AAAAAAAAAAYAAAAAAAADhw==") }, "createTime" : ISODate("2014-02-17T12:56:46.807Z") }, { "_id" : NumberLong(11), "max" : { "" : BinData(0,"AAAAAAAAAAYAAAAAAAAEFw==") }, "createTime" : ISODate("2014-02-18T12:56:47.115Z") }, { "_id" : NumberLong(12), "max" : { "" : { "$maxKey" : 1 } }, "createTime" : ISODate("2014-02-19T12:56:47.441Z") } ], "ok" : 1 } toku:PRIMARY> rs.oplogRefsPartitionInfo() { "numPartitions" : NumberLong(1), "partitions" : [ { "_id" : NumberLong(1), "max" : { "" : { "$maxKey" : 1 } }, "createTime" : ISODate("2014-02-08T12:56:34.965Z") } ], "ok" : 1 } toku:PRIMARY> rs.trimToGTID(BinData(0,"AAAAAAAAAAYAAAAAAAAAtw==")) { "ok" : 1 } toku:PRIMARY> rs.trimToTS(ISODate("2014-02-13T12:56:45.608Z")) { "ok" : 1 }

参考: http://www.tokutek.com/2014/02/whats-new-in-tokumx-1-4-part-2-partitioned-oplog/

0 回复
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。