MongoDB oplogを検索します.rs
2966 ワード
oplogはCapped Collectionで、デフォルトでは5%の空きディスク領域が割り当てられています.見てみろrsの様子:
フィールドの意味ts:8バイトのタイムスタンプで、4バイトunix timestamp+4バイトの自己増加カウントで表されます.この値は重要で、masterダウン時などの新しいprimaryを選挙するときにts最大のsecondaryを新しいprimaryとして選択します.
op:1バイトの操作タイプ、例えばiはinsert、dはdeleteを表す.
ns:操作が存在するnamespace.o:操作に対応するdocument、すなわち、現在の操作の内容(例えば、操作を更新する際に更新するフィールドや値)o 2:更新操作を実行する際の条件は、updateの場合に限られる.ここでopは、「i」:insert「u」:update「d」:delete「c」:db cmd「db」:nsが=>データベース名+'.'に設定されている現在のデータベースを宣言する「n」:no op、すなわち空の操作であり、時効性を確保するために定期的に実行される.構成を変更すると、n操作が発生します.
クエリーの例
oplog.rsシステムセットはレプリケーションにのみ使用され、インデックスは作成されず、クエリー文が遅くなります.
1時間以内のoplogのクエリー
ある期間のoplogをクエリーします(もちろん時間はUTCストレージです)
集約統計各集合のUPDATE操作量
oplogリファレンス
Replica Set Oploghttps://docs.mongodb.com/manual/core/replica-set-oplog/
rs_test:SECONDARY> use local
switched to db local
rs_test:SECONDARY> db.oplog.rs.findOne();
{
"ts" : Timestamp(1465879171, 238),
"h" : NumberLong("-2275413922284641862"),
"v" : 2,
"op" : "u",
"ns" : "MyDB.SyncTable",
"o2" : {
"_id" : "bbf80260-3d58-49f1-9c8c-e093d5d57527"
},
"o" : {
"_id" : "bbf80260-3d58-49f1-9c8c-e093d5d57527",
"EntityId" : "362569",
"TypeName" : "Product",
"Times" : 14208,
"CreateTime" : ISODate("2014-11-15T14:35:51.916Z"),
"LastModified" : ISODate("2016-06-14T04:38:21.708Z"),
"LastOperationTime" : ISODate("2016-06-14T04:39:30.957Z")
}
}
フィールドの意味ts:8バイトのタイムスタンプで、4バイトunix timestamp+4バイトの自己増加カウントで表されます.この値は重要で、masterダウン時などの新しいprimaryを選挙するときにts最大のsecondaryを新しいprimaryとして選択します.
op:1バイトの操作タイプ、例えばiはinsert、dはdeleteを表す.
ns:操作が存在するnamespace.o:操作に対応するdocument、すなわち、現在の操作の内容(例えば、操作を更新する際に更新するフィールドや値)o 2:更新操作を実行する際の条件は、updateの場合に限られる.ここでopは、「i」:insert「u」:update「d」:delete「c」:db cmd「db」:nsが=>データベース名+'.'に設定されている現在のデータベースを宣言する「n」:no op、すなわち空の操作であり、時効性を確保するために定期的に実行される.構成を変更すると、n操作が発生します.
クエリーの例
oplog.rsシステムセットはレプリケーションにのみ使用され、インデックスは作成されず、クエリー文が遅くなります.
> db.oplog.rs.find({},{"ts":1}).sort({$natural: -1})
{ "ts" : Timestamp(1406185666, 1) }
{ "ts" : Timestamp(1406180043, 1) }
{ "ts" : Timestamp(1406180033, 1) }
{ "ts" : Timestamp(1406172831, 1) }
{ "ts" : Timestamp(1406171938, 1) }
> db.oplog.rs.find({ "ts" : { "$gte" : Timestamp(1406185630, 1) } },{"ts":1})
1時間以内のoplogのクエリー
> var SECS_PER_HOUR = 3600
> var now = Math.floor((new Date().getTime()) / 1000) // seconds since epoch right now
> db.oplog.rs.find({ "ts" : { "$lt" : Timestamp(now, 1), "$gt" : Timestamp(now - SECS_PER_HOUR, 1) } }
ある期間のoplogをクエリーします(もちろん時間はUTCストレージです)
> var since = Math.floor(ISODate("2014-08-12T09:00:00.000Z").getTime() / 1000)
> var until = Math.floor(ISODate("2014-08-12T15:00:00.000Z").getTime() / 1000)
> db.oplog.rs.find({ "ts" : { "$lt" : Timestamp(until, 1), "$gt" : Timestamp(since, 1) } })
集約統計各集合のUPDATE操作量
> db.oplog.rs.aggregate([
{ $match: { "op":"u" }},
{ $group: { _id:"$ns",count:{$sum:1}}}
])
oplogリファレンス
Replica Set Oploghttps://docs.mongodb.com/manual/core/replica-set-oplog/