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_time
Linux下默认设置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的大小
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?
参考资料:
http://docs.mongodb.org/v2.4/tutorial/troubleshoot-replica-sets/
http://docs.mongodb.org/v2.4/faq/diagnostics/#faq-keepalive
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com