時間:2024-02-13 10:24作者:下載吧人氣:21
背景
隨著數據的積累,MongoDB中的數據量越來越大,數據分析團隊從數據庫中抽取變化數據(假如依據欄位createdatetime,transdatetime),越來越困難。我們知道MongoDB的副本集有一個數據結構Oplog,里面存儲了Primary節點的所有寫操作(此處的寫操作是指查詢以外的操作,包含 更新、異常等)。其實,數據的抽取完全可以從Oplog中抓取這些操作,然后去重放。
oplog是local庫下的一個固定集合,Secondary就是通過查看Primary 的oplog這個集合來進行復制的。每個節點都有oplog,記錄這從主節點復制過來的信息,這樣每個成員都可以作為同步源給其他節點。
Oplog 可以說是Mongodb Replication的紐帶了。
但是在實際的生產環境中,我們很多MongoDB 數據庫是單實例的,那么我們能否在單實例數據庫上開啟Oplog?
答案是肯定的。
其原理就是,在單實例上配置副本集,如果配置成功了,自然就有了Oplog。
配置過程
其實配置的過程比較簡單。
step 1 : 在配置文件中 添加副本集參數(replSet);
step 2 :重啟服務;
step 3:在local數據庫或admin數據庫執行初始化副本集的腳本,rs.initiate()。
注意事項
1. 在配置文件中增加副本集參數(replSet=??),MongoDB實例重啟,第一次登入,執行其他命令時(例如:show dbs),會提示錯誤,錯誤信息如下,
{
“ok” : 0,
“errmsg” : “not master and slaveOk=false”,
“code” : 13435,
“codeName” : “NotMasterNoSlaveOk”
}
網友評論