MongoDB Replica Set排錯
1.檢查Replica Set的狀態
使用db.runCommand({"replSetGetStatus" : 1});或者rs.status();
2.檢查複寫延遲時間
source: m1.example.net:30001
syncedTo: Tue Oct 02 2012 11:33:40 GMT-0400 (EDT)
= 7475 secs ago (2.08hrs)source: m2.example.net:30002
syncedTo: Tue Oct 02 2012 11:33:40 GMT-0400 (EDT)
= 7475 secs ago (2.08hrs)複寫延遲的可能原因有:
網路延遲
可以使用ping和traceroute命令探測網路狀況
磁碟輸送量
如果Secondary的磁碟不能像Primary的磁碟那樣快速將資料重新整理到磁碟上,將不能和Primary保持同步更新。可以使用iostat或者vmstat檢查磁碟使用狀況
並發量
在某些情況下,如果Primary上長期有操作,那麼可能會阻斷Secondary的複製操作。可以考慮write concern 。再則就是查看是否有慢查詢。
Appropriate Write Concern
Replica Acknowledge Write Concern
Replica Set Write Concern
3.所有成員間的串連測試
Replica Set之間的成員需要能夠相互連通,檢查防火牆設定。
4.重啟多個Secondar的Socket Exceptions問題
當重啟Replica Set中的多個成員時,確保可以選出一個Primary。如果在維護的過程中程式出現socket串連錯誤,可以檢查TCP的keepalive設定。
cat /proc/sys/net/ipv4/tcp_keepalive_timeLinux下預設設定tcp_keepalive_time為7200秒,即兩個小時。可以將所有的MongoDB執行個體所在的伺服器的這個值設定成300秒。
echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time這種設定重啟後將消失,需要重新修改。可以直接修改/etc/sysctl.conf然後執行sysctl -p
5.檢查Oplog的大小
oplog越大,能夠接受得延遲就越大。
使用db.printReplicationInfo();查看oplog的大小
123456 db.printReplicationInfo();
configured oplog size: 50278.6203125MB
log length start to end: 143109secs (39.75hrs)
oplog first event time: Wed Mar 18 2015 00:36:53 GMT+0800 (CST)
oplog last event time: Thu Mar 19 2015 16:22:02 GMT+0800 (CST)
now: Thu Mar 19 2015 17:32:42 GMT+0800 (CST)
如果重新設定oplog的大小需要將所有的成員都設定成為大小一樣
6.Oplog Entry Timestamp Error
如果日誌中出現如下報錯
replSet error fatal couldn't query the local local.oplog.rs collection. Terminating mongod after 30 seconds.
<timestamp> [rsStart] bad replSet oplog entry?
MongoDB 3.0 正式版發布下載
CentOS編譯安裝MongoDB
CentOS 編譯安裝 MongoDB與mongoDB的php擴充
CentOS 6 使用 yum 安裝MongoDB及伺服器端配置
Ubuntu 13.04下安裝MongoDB2.4.3
MongoDB入門必讀(概念與實戰並重)
Ubunu 14.04下MongoDB的安裝指南
《MongoDB 權威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
Nagios監控MongoDB分區叢集服務實戰
基於CentOS 6.5作業系統搭建MongoDB服務
MongoDB 的詳細介紹:請點這裡
MongoDB 的:請點這裡
本文永久更新連結地址: