轉載自 http://www.cnblogs.com/spnt/
Mongodb複本集配置好以後,少不了維護,維護內容也不是很多,主要是現在狀態和增刪節點等。
在說維護之前,得先說說Mongodb複本集的同步機制。
資料複製的目的是使資料得到最大的可用性,避免單點故障引起的整站不能訪問的情況的發生,Mongodb的複本集在同一時刻只有一台伺服器是可以寫的,複本集的主從複製也是一個非同步同步的過程,是slave端從primary端擷取日誌,然後在自己身上完全順序的執行日誌所記錄的各種操作(該日誌是不記錄查詢操作的),這個日誌就是local資料庫中的oplog.rs表,預設在64位機器上這個表是比較大的,占磁碟大小的5%,oplog.rs的大小可以在啟動參數中設定:--oplogSize 1000,單位是M。
在生產環境中建議此值設定的大一些,以防止無法同步的情況發生。
現在開始正式說維護命令
1,查看同步狀態
命令db.printSlaveReplicationInfo()可以查看slave延遲情況。
source:從庫的ip和連接埠
syncedTo:目前的同步情況,以及最後一次同步的時間
從上面可以看出,在資料庫內容不變的情況下他是不同步的,資料庫變動就會馬上同步。
2增刪節點
1,增加節點
Mongodb可以做到在不停機的情況下無縫增加節點。命令也很簡單,兩步就可以完成
1,啟動新的Mongodb,並指定複本集
2,把複本集添加到"串"中
啟動一個新的進程,我用的mongodb4這個目錄,連接埠號碼4444,然後運行添加命令。
命令的格式是:rs.add("ip+連接埠號碼")
注意:這個命令只能用在主庫中,可以看到我重新串連到了連接埠號碼是3333的主庫。
然後查看下狀態
可以看到4444已經做為從庫添加到了複本集。
大家也可以發現這裡多出了一個屬性:stateStr和errmsg,這兩個屬性工作表示當前同步的狀態,到了什麼進度
stateStr:RECOVERING//表示正在同步資料,
SECONDARY//表示已經成功同步,可以正常使用。
2,刪除節點
出於種種原因把,現在準備刪除一個節點,空閑出一台伺服器
這時使用命令rs.remove("IP+連接埠")即可移除該節點
現在我移除剛剛添加上的4444這個節點
4444已經被刪除。
複本集的基本維護也就這麼多了,能滿足大部分的需求。