MongoDB副本集管理方法介紹

chenfeng發表於2017-10-07
1)診斷
副本集中的機器,可以使用
>db.printReplicationInfo()
檢視主資料庫的複製的狀態。

使用
>db.printSlaveReplicationInfo()
檢視從資料庫的複製的狀態,可以檢視主從是否有複製延遲


2)oplog設定和變更oplog大小


完整同步,非常消耗時間,手動重新同步使用命令:
>db.runCommand({"resync":1})


使用--oplogSize引數設定更大的oplog大小。
假設MongoDB資料目錄是/data/db,關閉主節點的mongod服務後使用命令:
>rm /data/db/local.*
>mongod --oplog=8038 --master


在啟動MongoDB時使用了引數--noprealloc可以關閉空間預分配。
例如我們要生成20GB的檔案空間,使用命令:
cd /tmp/local
for i in {0..9}
do
echo $i
head -c 2146435072 /dev/zero > local.$i
done


然後關閉MongoDB主節點進行資料檔案移動 

mv /data/db/local.*  /safe/data
mv /tmp/local/* /data/db/


先將原local資料夾中的資料備份到/safe/data目錄下,然後把我們預分配的空間檔案/tmp/local/*移到資料目錄/data/db/中,這樣就完成了oplog的空間手動預分配。
重啟主節點時就可以把oplog的大小設定成20G了。使用如下命令:
mongod --master --oplogSize=20000

3) 阻塞複製使用
  從節點的複製跟不上主節點的寫入操作時除了變更oplog的大小之外,還有一種方式能夠解決,那就是阻塞主節點的寫入,直到從節點慢慢跟上來之後再放開阻塞。使用命令如下:


>db.runCommand({getLastError:1,w:2});


w的值表示包括主節點在內,至少2個伺服器記錄了寫入操作之後才返回寫入的結果。w的值可以修改,值越大阻塞越明顯,寫操作越慢。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2145732/,如需轉載,請註明出處,否則將追究法律責任。

相關文章