mongodb在建立副本集或者分片集群的时候,都会遇到数据同步的问题,从PRIMARY到SECONDARY节点的数据同步。
特别是在新导入大批量的数据,千万级,可能会非PRIMARY节点出现同步不及时,并且出错,此时节点的状态显示为RECOVERING,并且错误信息显示为“error RS102 too stale to catch up”。
查阅各种资料,提到说是oplog的设置有问题,但是我在启动mongo的时候该参数设置的为1000,即1G,我想怎么可能会出现问题呢?
因为我的需求是将副本集的数据导入到分片集群中,变化各种做法,都会出现副本集同步的错误,更不要说分片了。
查看mongo的官方文档,该参数不设置则默认为磁盘的5%,最小为1G。索性去掉该参数,导入数据后然后同步,不会报错,而且两个节点的状态一直是SECONDARY,没有任何问题。如果要设置,数据量在千万级别,建议最起码的10G以上。
可见,有的参数在不了解的情况下还是不要冒然设置,否则会走很多冤枉路。