MongoDB副本集丟失數(shù)據(jù)的測(cè)試實(shí)例教程
在MongoDB副本集的測(cè)試中發(fā)現(xiàn)了一個(gè)丟數(shù)據(jù)的案例。
1. 概要描述
測(cè)試場(chǎng)景為:一主一從一驗(yàn)證
測(cè)試案例
step1 :關(guān)閉從副本;
step 2 ;向主副本中插入那條數(shù)據(jù);
step 3 :關(guān)閉主副本;
step 4 :開啟輔助副本,此副本升級(jí)為主副本,這是后會(huì)看到新的主副本沒有剛才插入的幾筆數(shù)據(jù)。
----測(cè)試時(shí),請(qǐng)注意測(cè)試步驟。
step 5 :原主節(jié)點(diǎn) 再次加入到集群中后,會(huì)變成新的輔助副本。測(cè)試插入的數(shù)據(jù)會(huì)產(chǎn)生回滾。
2. 具體的測(cè)試步驟
(1)測(cè)試服務(wù)器,原測(cè)試環(huán)境
主Server:Port | 副Server:Port | 見證Server:Port |
XXX.XXX.XXX.124:27220 | XXX.XXX.XXX.123:27221 | XXX.XXX.XXX.134:27220 |
(2)測(cè)試步驟
Step 1 向主數(shù)據(jù)庫(kù)(XXX.XXX.XXX.124:27220),插入以下數(shù)據(jù),執(zhí)行時(shí)間要長(zhǎng)一些。
for(var i = 0; i < 100000; i++) { db.order0522.insert({a: i});};
Step 2 在上述命令執(zhí)行的過程中,關(guān)于副主Server上的mongodb服務(wù),服務(wù)命名為mongodboplogtest.service
systemctl stop mongodboplogtest.service
Step 3.查詢主副本上數(shù)據(jù)庫(kù)insert的數(shù)據(jù)量,為100000.命令完全插入。
Step 4.關(guān)閉主副本上的Mongodb 服務(wù),服務(wù)命名為mongodboplogtest.service
systemctl stop mongodboplogtest.service
Step 5 開啟輔助節(jié)點(diǎn)上的MongoDB服務(wù)
systemctl start mongodboplogtest.service
step 6 此時(shí)輔助節(jié)點(diǎn)(XXX.XXX.XXX.123)升級(jí)為主節(jié)點(diǎn),此時(shí)數(shù)據(jù)為30337(100000-30337 筆記錄丟失了)
此時(shí) 124 (原主節(jié)點(diǎn))為"stateStr" : "(not reachable/healthy)"
step 7 開啟原主節(jié)點(diǎn)上的服務(wù),集群的狀態(tài),關(guān)于原主節(jié)點(diǎn)的描述短暫處于"stateStr" : "ROLLBACK"
step 8 回滾后,狀態(tài)變?yōu)?stateStr" : "SECONDARY"
step 9 查詢?cè)鞴?jié)點(diǎn)數(shù)據(jù),此時(shí)數(shù)據(jù)量為30337(100000-30337 筆也記錄丟失了)
3.丟失的數(shù)據(jù)是否可以找到
我們發(fā)現(xiàn),重啟原主節(jié)點(diǎn)(XXX.XXX.XXX.124)mongodb服務(wù)后,在數(shù)據(jù)目錄下多了一個(gè)rollback 目錄。
重啟前的數(shù)據(jù)目錄
重啟后的數(shù)據(jù)目錄
進(jìn)去這個(gè)目錄后,我們看到生成了一個(gè)以數(shù)據(jù)庫(kù)+集合名字+時(shí)間的 bson 文件。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
MongoDB操作之日期轉(zhuǎn)換方式(string、ISODate、時(shí)間戳)
這篇文章主要介紹了MongoDB操作之日期轉(zhuǎn)換方式(string、ISODate、時(shí)間戳),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07mongodb數(shù)據(jù)庫(kù)遷移變更的解決方案
眾所周知mongodb數(shù)據(jù)庫(kù)是一個(gè)非關(guān)系類型的數(shù)據(jù),有著非常靈活和高性能的特點(diǎn)得到了開發(fā)者的喜愛,這篇文章主要給大家介紹了關(guān)于mongodb數(shù)據(jù)庫(kù)遷移變更的相關(guān)資料,需要的朋友可以參考下2021-09-09MongoDB插入、更新、刪除文檔實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家簡(jiǎn)單介紹了mongodb插入、更新、刪除文檔的方法,需要的的朋友參考下吧2017-04-04詳解MongoDB中用sharding將副本集分配至服務(wù)器集群的方法
副本集是MongoDB的主從復(fù)制中的重要功能,經(jīng)常被用來作額外的備份,這里我們就來詳解MongoDB中用sharding將副本集分配至服務(wù)器集群的方法,首先還是來回顧一下MongoDB中副本集的基本知識(shí):2016-07-07MongoDB數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)整理
這篇文章介紹了MongoDB數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07MongoDB4.28開啟權(quán)限認(rèn)證配置用戶密碼登錄功能
這篇文章主要介紹了MongoDB4.28開啟權(quán)限認(rèn)證配置用戶名和密碼認(rèn)證登錄,本文分步驟給大家介紹開啟認(rèn)證登錄的方法,需要的朋友可以參考下2022-01-01