MongoDB副本集配置系列七:MongoDB oplog詳解


1:oplog簡介

oplog是local庫下的一個固定集合,Secondary就是通過查看Primary 的oplog這個集合來進行復制的。每個節點都有oplog,記錄這從主節點復制過來的信息,這樣每個成員都可以作為同步源給其他節點。

 

2:副本集數據同步的過程

副本集中數據同步的詳細過程:Primary節點寫入數據,Secondary通過讀取Primary的oplog得到復制信息,開始復制數據並且將復制信息寫入到自己的oplog。如果某個操作失敗(只有當同步源的數據損壞或者數據與主節點不一致時才可能發生),則備份節點停止從當前數據源復制數據。如果某個備份節點由於某些原因掛掉了,當重新啟動后,就會自動從oplog的最后一個操作開始同步,同步完成后,將信息寫入自己的oplog,由於復制操作是先復制數據,復制完成后再寫入oplog,有可能相同的操作會同步兩份,不過MongoDB在設計之初就考慮到這個問題,將oplog的同一個操作執行多次,與執行一次的效果是一樣的。

3:oplog的增長速度

oplog是固定大小,他只能保存特定數量的操作日志,通常oplog使用空間的增長速度跟系統處理寫請求的速度相當,如果主節點上每分鍾處理1KB的寫入數據,那么oplog每分鍾大約也寫入1KB數據。如果單次操作影響到了多個文檔(比如刪除了多個文檔或者更新了多個文檔)則oplog可能就會有多條操作日志。db.testcoll.remove() 刪除了1000000個文檔,那么oplog中就會有1000000條操作日志。如果存在大批量的操作,oplog有可能很快就會被寫滿了。

 

4:oplog注意事項:

local.oplog.rs特殊的集合。用來記錄Primary節點的操作。

為了提高復制的效率,復制集中的所有節點之間會相互的心跳檢測(ping)。每個節點都可以從其他節點上獲取oplog。

oplog中的一條操作。不管執行多少次效果是一樣的

5:oplog的大小

第一次啟動復制集中的節點時,MongoDB會建立Oplog,會有一個默認的大小,這個大小取決於機器的操作系統

rs.printReplicationInfo()

db.getReplicationInfo()

可以用來查看oplog的狀態、大小、存儲的時間范圍

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM