MongoDB副本集oplog大小为何被重置?
以下是导致oplog大小被意外重置的常见情况:
临时调整未持久化到配置文件
如果当初仅通过replSetResizeOplog命令动态调整oplog大小,未修改MongoDB配置文件中的oplogSizeMB参数,那么当实例重启(包括虚拟机重启、服务重启)时,MongoDB会读取配置文件中的原始值,重新创建oplog并恢复到旧大小。实例执行修复或全量同步
当对节点执行mongod --repair操作,或者因节点长时间离线、同步异常触发全量重新同步时,oplog集合会被重新初始化,此时会使用配置文件中的oplogSizeMB值或默认大小(如果未配置),覆盖之前的调整。节点移除后重新加入副本集
若将节点从副本集移除后重新添加,或者用新实例替换原有节点,新实例如果未配置正确的oplogSizeMB参数,会使用默认值或旧配置值创建oplog,导致大小被重置。自动化工具或运维脚本误操作
运维过程中,配置管理工具、监控脚本或自动化运维任务可能会覆盖MongoDB配置文件,或者误执行了重置oplog的命令,导致oplog大小被修改回初始值。版本升级时配置未保留
在MongoDB版本升级过程中,如果未确保自定义的oplogSizeMB配置被正确迁移到新版本的配置文件中,升级后的实例可能会使用默认配置重新初始化oplog,从而重置大小。存储卷或磁盘配置变更
如果oplog所在的存储卷被重新格式化、挂载,或者进行了磁盘扩容/缩容操作,某些情况下可能触发MongoDB重新识别存储环境,若此时配置文件中的oplog参数未同步更新,会导致oplog大小被重置。
内容的提问来源于stack exchange,提问作者m-dev

