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