共計(jì) 1284 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
這篇文章主要為大家展示了“MongoDB 中副本集丟失數(shù)據(jù)的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“MongoDB 中副本集丟失數(shù)據(jù)的示例分析”這篇文章吧。
1. 概要描述
測(cè)試場(chǎng)景為:一主一從一驗(yàn)證
測(cè)試案例
step1:關(guān)閉從副本;
step 2;向主副本中插入那條數(shù)據(jù);
step 3:關(guān)閉主副本;
step 4:開啟輔助副本, 此副本升級(jí)為主副本,這是后會(huì)看到新的主副本沒(méi)有剛才插入的幾筆數(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:PortXXX.XXX.XXX.124:27220XXX.XXX.XXX.123:27221XXX.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ò)程中,關(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 文件。
以上是“MongoDB 中副本集丟失數(shù)據(jù)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!