为什么我的MongoDB复制品一直落后?
昨晚在将一个集合转换为封顶集合时,我的中学的optime开始落后于小学。它进展缓慢,每隔几分钟就有几秒钟,最终从primary的oplog窗口掉了出来。按照说明,我停止了辅助服务器上的mongod,删除了所有数据文件,并重新启动了它,尽管我忘记了锁定主服务器的写操作。Secondary完成了它的初始化阶段,这花费了大量的时间,最终恢复了业务,但当我登录时,复制现在甚至落后了 因为这是云,毕竟,我创建了我的主映像(应该复制所有数据),尽管当时我无法运行db.fsyncLock(),因为它需要一些写入操作。新映像完成后,我基于该映像启动了一个新服务器,将其添加到我的副本集中,删除旧的辅助映像,这样生活就很好了,对吗?不完全是这样——新的中学落后了大约一个小时,一整天(以及今晚)终于落后了14个小时(尽管奇怪的是仍然在oplog窗口内) 我从“重新同步过时的成员页面”开始执行下一步。关闭两台服务器上的mongod,gzip并将我的数据文件夹从主服务器复制到辅助服务器,解压缩并启动它们,db.fsyncLock()我的主服务器。让我震惊的是,即使使用相同的数据,在初始化之后,我的中学说它落后了1个小时。我把它添加回副本集中,它很快就落后了5分钟 很好,对吗?不,快闪前进,二级正在缓慢前进,现在落后了20分钟。Mongostat的secondary被锁定在95%以上,iostat-xm2没有显示出任何疯狂的东西-由于没有进行写操作,secondary目前处于空闲状态,secondary肯定没有做多少事情(.04 wMB/秒)。不确定这是否值得一提,但primary目前感觉狗狗在登录mongo shell时反应迟钝,等等 Mongo,你怎么了?你为什么不能迎头赶上呢?我试图让我的第二个孩子赶上我,这有什么错 编辑 回答问题:为什么我的MongoDB复制品一直落后?,mongodb,replication,Mongodb,Replication,昨晚在将一个集合转换为封顶集合时,我的中学的optime开始落后于小学。它进展缓慢,每隔几分钟就有几秒钟,最终从primary的oplog窗口掉了出来。按照说明,我停止了辅助服务器上的mongod,删除了所有数据文件,并重新启动了它,尽管我忘记了锁定主服务器的写操作。Secondary完成了它的初始化阶段,这花费了大量的时间,最终恢复了业务,但当我登录时,复制现在甚至落后了 因为这是云,毕竟,我创建了我的主映像(应该复制所有数据),尽管当时我无法运行db.fsyncLock(),因为它需要一些写
- 版本:2.0.4
- 硬件:两个节点都是相同的硬件,我可以说是-8GB内存,四核CPU。我想这是虚拟化的东西
- 写入速率:不同。如前所述,昨晚我正在转换成一个封顶系列,这引发了整个事件。一夜之间,有一个进程每小时编写大约几百个小文档(每个约155字节)几次,所以我估计最大值约为100-200KB/小时。白天,处理过程更加紧张,更新了数十万个500字节的文档,并编写了数十万个文档。仍然没有谈论大量的数据EDIT找到今天早些时候的一些iostat输出:
- 工作集:我还没有找到公认的计算工作集的方法,但如果有帮助的话:
- 一些来自次级市场的近期mongostat样本: