检查发现MongoDB复制集从库状态为RECOVERING,后台日志显示[rsBackgroundSync] we are too stale to use xxx.xxx.xxx.xxx:27017 as a sync source
,意思是当前从库的数据已经太陈旧了,无法从主库的oplog里找到对应后续日志,所以就无法推进从库的复制进度,导致从库一直处于RECOVERING的状态。
导致从库异常的原因是某天开发在主库导入了大量数据,导致主库oplog更新过快,从库复制速度跟不上,主库oplog里的内容从库还没同步就已经清理了,所以造成从库丢失了更新,永远也无法再继续同步主库数据。
这是恢复从库可以将从库重新初始化:
1.登陆从库,db.shutdownServer()关闭从库;
2.将从库dbpath对应的目录清空或MV改名,目的是得到一个空的dbpath,但建议采用MV的做法,以免不必要的数据误删;
3.重启从库,从库会自动重新全量同步,重新初始化期间使用rs.status()可以看到从库的stateStr为STARTUP2,初始化结束后会变回SECONDARY。
MongoDB 复制集从节点recovering重新初始化
最新推荐文章于 2025-04-03 01:36:29 发布