好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Mongodb的oplog詳解

Mongodb的oplog詳解

熱門標簽:內蒙古營銷智能外呼系統哪個好 呼和浩特外呼系統原理是什么 外呼線路資源屬于電信業務嗎 crm外呼系統聯系方式 長沙電銷外呼防封卡是什么 小裙科技電銷機器人怎樣 智能外呼系統官網 河南電話外呼系統招商 青白江400企業電話申請

Oplog 是 MongoDB 實現復制集的關鍵數據結構,在復制集中 Primary 對數據庫操作之后就會產生一個 Oplog 文檔保存在 local.oplog.rs 集合中,Secondary 成員會拉取 Primary 的 Oplog 并重放相同的操作,從而達到 Secondary 成員與 Primary 有一致的數據。實際上復制集中每一個成員都會保存 Oplog,其他成員會根據連接延遲等因數選擇最近的成員拉取 Oplog 數據。

Oplog 存在集合 local.oplog.rs,這是系統內置集合,一個 capped collection,即是這個 collection 有固定大小,一旦寫滿數據會從頭開始寫入,就像一個圓形的隊列結構。這個 collection 大小在初始化集群時設置,默認的大小是 5% 的空閑磁盤空間,也可以在配置文件設置 oplogSizeMB 選項,或者在啟動 MongoDB 后使用 replSetResizeOplog 命令動態設置 collection 大小。

Oplog 與 MongoDB 的其他的文檔沒有什么不同,它固定有一些屬性:

  1. ts: MongoDB 的內置的特殊時間戳數據結構,如 Timestamp(1503110518, 1), 由秒級的 Unix 時間戳和一個順序增長的整數 increment 表示。長度為 64 位,其中 Unix 時間戳占 32 位,后 32 位可以保存同一秒內的第幾次操作。
  2. h: hash 值代表每個 Oplog 的唯一標識。
  3. v: Oplog 版本
  4. ns: namespace 命名空間,數據庫+集合,用 database.collection 表示。但如果是表操作命令等,變成 database.$cmd。
  5. op:operation type,操作類型,包含以下幾種:
    1. i: insert, 插入文檔
    2. u: update, 更新文檔
    3. d: delete, 刪除文檔
    4. c: command, 操作命令,如 createIndex 等
    5. n: 空操作,用于空閑時主從同步 Oplog 時間信息
  6. o: operation, Oplog 操作的具體內容,例如 i operation type,o 即是插入的文檔。對于 u operation type, 只更新部分內容, o 鍵的內容為 {$set: {...}}
  7. o2: 用于 update 操作,包含 _id 屬性值。

Oplog 的重放是冪等(idempotent)的,即是說同一個 Oplog 重放多次最終結果還是一致的。這是 MongoDB 將許多命令操作進行了轉化,保持生成的 Oplog 是可以冪等的,如執行以下 $inc 操作:

db.test.update({_id: ObjectId("533022d70d7e2c31d4490d22")}, {$inc: {count: 1}})

產生的 Oplog 為:

{
 "ts" : Timestamp(1503110518, 1),
 "t" : NumberLong(8),
 "h" : NumberLong(-3967772133090765679),
 "v" : NumberInt(2),
 "op" : "u",
 "ns" : "mongo.test",
 "o2" : {
  "_id" : ObjectId("533022d70d7e2c31d4490d22")
 },
 "o" : {
  "$set" : {
   "count" : 2.0
  }
 }
}

以上 MongoDB 可以保證 Oplog 的數據操作(DML 語句)是冪等的,但數據表操作(DDL 語句)命令無法保證,例如重復執行相同的 createIndex 命令。

Oplog 的查詢

Capped collection 內文檔是以插入順序排序的,沒有其他索引,但是 local.oplog.rs 是一個特殊的 capped collection,在 Wiredtiger 引擎的話,Oplog 的時間戳會作為一個特殊的元信息存儲,使得 Oplog 可以以 ts 字段排序,查詢 Oplog 時可以利用 ts 字段篩選。

一般來說 Secondary 同步需要經過 initial sync 和 incremental sync,initial sync 同步完成后,需拉取從同步時間點開始之后的 Oplog 進行持續重放。所以查詢 Oplog 的操作一般是:

db.oplog.rs.find({$gte:{'ts': Timestamp(1503110518, 1)}})

Secondary 需要不斷獲取 Primary 產生的 Oplog, 復制集會使用 tailable cursor 持續獲取 Oplog 數據,非常類似 Unix 系統的 tail -f。這會提高效率,因為一般的 cursor 使用完畢后就會關閉,而 tailable cursor 會保存上次的 id, 并持續獲取數據。

如果使用 pymongo 驅動器,則定位從某個時間點之后的 Oplog 可以這麼寫:

coll = db['local'].get_collection(
 'oplog.rs',
 codec_options=bson.codec_options.CodecOptions(document_class=bson.son.SON))

cursor = coll.find({'ts': {'$gte': start_optime}},
 cursor_type=pymongo.cursor.CursorType.TAILABLE,
 oplog_replay=True,
 no_cursor_timeout=True)

while True:
 try:
  oplog = cursor.next()
  process(oplog)
 except StopException:
  # 沒有更多的 Oplog 數據
  time.sleep(1)

cursor_type 使用 TAILABLE 或者 TAILABLE_AWAIT,使用后一種類型時,如果沒有更多的 Oplog 數據,則這次請求會阻塞等待有 Oplog 數據或者到達等待的時間超時返回。

設置 oplog_replay 標記可以表示此次請求的類型是保存 Oplog 的 capped collection, 提供 ts 篩選參數, 進行查詢優化。

獲取到 Oplog 之后,就可以做數據同步或者分發到感興趣的消費者作特殊分析,如 MongoShake 工具。

參考了文檔:

Replica Set Oplog: https://docs.mongodb.com/manual/core/replica-set-oplog/
MongoDB oplog 漫談: http://caosiyang.github.io/2016/12/24/mongodb-oplog/
MongoDB復制集原理: https://www.jb51.net/article/166148.htm

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 利用MongoDB中oplog機制實現準實時數據的操作監控
  • 關于單臺MongoDB實例開啟Oplog的過程詳解
  • mongodb中oplog介紹和格式詳析

標簽:菏澤 黃石 白山 安順 舟山 楚雄 呼倫貝爾 池州

巨人網絡通訊聲明:本文標題《Mongodb的oplog詳解》,本文關鍵詞  Mongodb,的,oplog,詳解,Mongodb,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mongodb的oplog詳解》相關的同類信息!
  • 本頁收集關于Mongodb的oplog詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 免费一区二区三区四区| 亚洲国产精品97久久无色无码| 美女啪啪网站又黄又免费| 国产精品成人一区二区网站软件| 美妇乱人伦小说在线阅读| 巨大?奶头XXXXXHD| 日本成人二区| 99re思思| 视频一区欧美| 外国黄色一级| 日韩a在线播放| 欧美老妇Ⅹ乄乂?多毛AV在线| 成人在线视频国产| 欧美高清大白屁股xxxxx| 乱色国产熟妇一区二区| 男女嘿嘿嘿动态图58期| 中国丰满女人特级A片| 美国亲胸吻胸扒衣服摸下面| 国产乱真实合集| 回娘家无删减1~5阅读视频| 屁屁影院??入口免费观看| 乱l高辣h文一女粗暴| 99久久国产精品久久99| 啦啦啦www免费高清在线观看视频| 久久成人毛片| 国产精品流白浆视频AV拍拍拍| 免费一级特黄特色大片在线| 韩国免费毛片| 午夜精品一区二区在线观看| 麻豆传煤适当放松一下自己| 我的电影网动漫手机在线观看| 午夜福利理论片一区二区三区 | 男尊女卑h+玩弄+跪趴+调教花| 久久99国产精品免费观看| 女人扒开腿让男人桶| 他忍不住挺h| 香蕉eeww99国产精选播放| 155fun吃瓜热门爆料正能量| 美女在线观看网站免费的 | 一本久久a久久免费精品网站 | 陈三当着老七面在ktv|