MongoDB知識點(diǎn)

writeConcern選項(xiàng)

MongoDB支持的WriteConncern選項(xiàng)如下

w: 數(shù)據(jù)寫入到number個節(jié)點(diǎn)才向用客戶端確認(rèn){w: 0} 對客戶端的寫入不需要發(fā)送任何確認(rèn),適用于性能要求高,但不關(guān)注正確性的場景{w: 1} 默認(rèn)的writeConcern,數(shù)據(jù)寫入到Primary就向客戶端發(fā)送確認(rèn){w: “majority”} 數(shù)據(jù)寫入到副本集大多數(shù)成員后向客戶端發(fā)送確認(rèn),適用于對數(shù)據(jù)安全性要求比較高的場景购撼,該選項(xiàng)會降低寫入性能

j: 寫入操作的journal持久化后才向客戶端確認(rèn)默認(rèn)為”{j: false},如果要求Primary寫入持久化了才向客戶端確認(rèn),則指定該選項(xiàng)為true

wtimeout: 寫入超時時間鞋怀,僅w的值大于1時有效双泪。當(dāng)指定{w: }時,數(shù)據(jù)需要成功寫入number個節(jié)點(diǎn)才算成功密似,如果寫入過程中有節(jié)點(diǎn)故障焙矛,可能導(dǎo)致這個條件一直不能滿足,從而一直不能向客戶端發(fā)送確認(rèn)結(jié)果残腌,針對這種情況村斟,客戶端可設(shè)置wtimeout選項(xiàng)來指定超時時間,當(dāng)寫入過程持續(xù)超過該時間仍未結(jié)束抛猫,則認(rèn)為寫入失敗蟆盹。



MongoDB journal與oplog區(qū)別

journal

journal 是 MongoDB 存儲引擎層的概念,目前 MongoDB主要支持 mmapv1闺金、wiredtiger逾滥、mongorocks 等存儲引擎,都支持配置journal掖看。

MongoDB 所有的數(shù)據(jù)寫入匣距、讀取最終都是調(diào)存儲引擎層的接口來存儲、讀取數(shù)據(jù)哎壳,journal 是存儲引擎存儲數(shù)據(jù)時的一種輔助機(jī)制毅待。

以wiredtiger 為例,如果不配置 journal归榕,寫入 wiredtiger 的數(shù)據(jù)尸红,并不會立即持久化存儲;而是每分鐘會做一次全量的checkpoint(storage.syncPeriodSecs配置項(xiàng)刹泄,默認(rèn)為1分鐘)外里,將所有的數(shù)據(jù)持久化。如果中間出現(xiàn)宕機(jī)特石,那么數(shù)據(jù)只能恢復(fù)到最近的一次checkpoint盅蝗,這樣最多可能丟掉1分鐘的數(shù)據(jù)。

所以建議「一定要開啟journal」姆蘸,開啟 journal 后墩莫,每次寫入會記錄一條操作日志(通過journal可以重新構(gòu)造出寫入的數(shù)據(jù))。這樣即使出現(xiàn)宕機(jī)逞敷,啟動時 Wiredtiger 會先將數(shù)據(jù)恢復(fù)到最近的一次checkpoint的點(diǎn)狂秦,然后重放后續(xù)的 journal 操作日志來恢復(fù)數(shù)據(jù)。

MongoDB 里的 journal 行為 主要由2個參數(shù)控制推捐,storage.journal.enabled 決定是否開啟journal裂问,storage.journal.commitInternalMs 決定 journal 刷盤的間隔,默認(rèn)為100ms,用戶也可以通過寫入時指定 writeConcern 為 {j: ture} 來每次寫入時都確保 journal 刷盤堪簿。

oplog

oplog 是 MongoDB 主從復(fù)制層面的一個概念痊乾,通過 oplog 來實(shí)現(xiàn)復(fù)制集節(jié)點(diǎn)間數(shù)據(jù)同步,客戶端將數(shù)據(jù)寫入到 Primary戴甩,Primary 寫入數(shù)據(jù)后會記錄一條 oplog符喝,Secondary 從 Primary(或其他 Secondary )拉取 oplog 并重放,來確保復(fù)制集里每個節(jié)點(diǎn)存儲相同的數(shù)據(jù)甜孤。

oplog 在 MongoDB 里是一個普通的 capped collection协饲,對于存儲引擎來說,oplog只是一部分普通的數(shù)據(jù)而已缴川。

MongoDB 的一次寫入

MongoDB 復(fù)制集里寫入一個文檔時茉稠,需要修改如下數(shù)據(jù)

1.將文檔數(shù)據(jù)寫入對應(yīng)的集合

2.更新集合的所有索引信息

3.寫入一條oplog用于同步

上面3個修改操作,需要確保要么都成功把夸,要么都失敗而线,不能出現(xiàn)部分成功的情況,否則如果數(shù)據(jù)寫入成功恋日,但索引寫入失敗膀篮,那么會出現(xiàn)某個數(shù)據(jù),通過全表掃描能讀取到岂膳,但通過索引就無法讀取

如果數(shù)據(jù)誓竿、索引都寫入成功,但 oplog 寫入不成功谈截,那么寫入操作就不能正常的同步到備節(jié)點(diǎn)筷屡,出現(xiàn)主備數(shù)據(jù)不一致的情況。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末簸喂,一起剝皮案震驚了整個濱河市毙死,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喻鳄,老刑警劉巖扼倘,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異除呵,居然都是意外死亡唉锌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門竿奏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腥放,你說我怎么就攤上這事泛啸。” “怎么了秃症?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵候址,是天一觀的道長吕粹。 經(jīng)常有香客問我,道長岗仑,這世上最難降的妖魔是什么匹耕? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮荠雕,結(jié)果婚禮上稳其,老公的妹妹穿的比我還像新娘。我一直安慰自己炸卑,他們只是感情好既鞠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盖文,像睡著了一般嘱蛋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上五续,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天洒敏,我揣著相機(jī)與錄音,去河邊找鬼疙驾。 笑死凶伙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荆萤。 我是一名探鬼主播镊靴,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼链韭!你這毒婦竟也來了偏竟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤敞峭,失蹤者是張志新(化名)和其女友劉穎踊谋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旋讹,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡殖蚕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沉迹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睦疫。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鞭呕,靈堂內(nèi)的尸體忽然破棺而出蛤育,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布瓦糕,位于F島的核電站底洗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咕娄。R本人自食惡果不足惜亥揖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望圣勒。 院中可真熱鬧费变,春花似錦、人聲如沸灾而。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旁趟。三九已至昼激,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锡搜,已是汗流浹背橙困。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耕餐,地道東北人凡傅。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像肠缔,于是被迫代替她去往敵國和親夏跷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • feisky云計(jì)算明未、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,855評論 0 5
  • 復(fù)制集 mongodb在集群環(huán)境中槽华,通過復(fù)制的形式對數(shù)據(jù)進(jìn)行冗余。mongodb復(fù)制集有Primary趟妥、Secon...
    奕_然閱讀 1,975評論 0 2
  • 本文包括以下幾個方面: –安全措施 – 部署架構(gòu) – 系統(tǒng)優(yōu)化 – 索引設(shè)計(jì) – 備份監(jiān)控 – 模式設(shè)計(jì) – 程序...
    張偉科閱讀 3,984評論 0 9
  • 本文為轉(zhuǎn)載文章猫态,覺得寫得不錯,雖然只是寫到了3.0版本的存儲引擎披摄,后續(xù)我會補(bǔ)充3.4的現(xiàn)狀 在歷經(jīng)版本號修改(2....
    倪寶華閱讀 2,059評論 1 9
  • 一亲雪、 設(shè)計(jì)理念 1.空間換時間 1)多級緩存,靜態(tài)化 客戶端頁面緩存(http header中包含Expires/...
    零一間閱讀 1,602評論 0 13