共計(jì) 1025 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開通
這期內(nèi)容當(dāng)中丸趣 TV 小編將會(huì)給大家?guī)碛嘘P(guān) MongoDB 中怎么管理副本集,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1)診斷
副本集中的機(jī)器,可以使用
db.printReplicationInfo()
查看主數(shù)據(jù)庫的復(fù)制的狀態(tài)。
使用
db.printSlaveReplicationInfo()
查看從數(shù)據(jù)庫的復(fù)制的狀態(tài), 可以查看主從是否有復(fù)制延遲
2)oplog 設(shè)置和變更 oplog 大小
完整同步,非常消耗時(shí)間,手動(dòng)重新同步使用命令:
db.runCommand({resync :1})
使用 –oplogSize 參數(shù)設(shè)置更大的 oplog 大小。
假設(shè) MongoDB 數(shù)據(jù)目錄是 /data/db,關(guān)閉主節(jié)點(diǎn)的 mongod 服務(wù)后使用命令:
rm /data/db/local.*
mongod –oplog=8038 –master
在啟動(dòng) MongoDB 時(shí)使用了參數(shù) –noprealloc 可以關(guān)閉空間預(yù)分配。
例如我們要生成 20GB 的文件空間,使用命令:
cd /tmp/local
for i in {0..9}
do
echo $i
head -c 2146435072 /dev/zero local.$i
done
然后關(guān)閉 MongoDB 主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)文件移動(dòng)
mv /data/db/local.* /safe/data
mv /tmp/local/* /data/db/
先將原 local 文件夾中的數(shù)據(jù)備份到 /safe/data 目錄下,然后把我們預(yù)分配的空間文件 /tmp/local/* 移到數(shù)據(jù)目錄 /data/db/ 中,這樣就完成了 oplog 的空間手動(dòng)預(yù)分配。
重啟主節(jié)點(diǎn)時(shí)就可以把 oplog 的大小設(shè)置成 20G 了。使用如下命令:
mongod –master –oplogSize=20000
3) 阻塞復(fù)制使用
從節(jié)點(diǎn)的復(fù)制跟不上主節(jié)點(diǎn)的寫入操作時(shí)除了變更 oplog 的大小之外,還有一種方式能夠解決,那就是阻塞主節(jié)點(diǎn)的寫入,直到從節(jié)點(diǎn)慢慢跟上來之后再放開阻塞。使用命令如下:
db.runCommand({getLastError:1,w:2});
w 的值表示包括主節(jié)點(diǎn)在內(nèi),至少 2 個(gè)服務(wù)器記錄了寫入操作之后才返回寫入的結(jié)果。w 的值可以修改,值越大阻塞越明顯,寫操作越慢。
上述就是丸趣 TV 小編為大家分享的 MongoDB 中怎么管理副本集了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。
向 AI 問一下細(xì)節(jié)