问题描述
MongoDB 副本集结构中,从节点会保存从主节点同步过来的数据日志,这种方式和 MySQL 数据库的 bin-log 主从复制的方式类似,MongoDB 采用的是根据 oplog 来从主节点同步数据到从节点。但是 oplog 不是无限大,超过其配置大小,oplog 会被覆盖。
在日常运维场景中,当从库发生故障时。主节点仍正常运行,还不会影响整个副本集运行状态,但如果重新启动从节点,那么从节点需要从主节点上恢复数据,这时,如果 oplog 被覆盖,从节点需要恢复的数据就会有遗漏,中间被覆盖的数据就会丢失,这种情况下,从节点无法恢复正常。另外一些情况下,数据库重启、主从延迟高都可能会出现 oplog 不够用的情况。
解决方案
使用数据库智能管家 DBbrain,可帮您7 * 24小时实时观察生产所有节点 oplog 保存问题相关的风险项,从而避免此类故障产生。
使用“异常诊断”功能排查数据库异常情况(推荐)
异常诊断功能提供故障主动定位和优化,不需要任何数据库运维经验,不仅能发现 CPU 利用率过高的异常情况,经过多年 MongoDB 运维专家经验沉淀,结合机器学习、大数据与智能分析算法的运用,快速复制资深数据库专家经验,赋能您的数据库,智能运维 MongoDB 数据库,几乎可以实时发现 MongoDB 生产数据库中所有的异常与故障问题。
操作步骤及示例如下:
1. 登录 DBbrain 控制台,在左侧导航选择诊断优化,在上方选择异常诊断页。
2. 概览卡片中,呈现黄色标记,告知此时间点发现异常风险项。
3. 右侧的诊断详情列表中,同时出现 oplog 保存时间太短的风险项。n![](https://qcloudimg.tencent-cloud.cn/image/document/604e27ffc6aafb80423445b7a2b02033.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/604e27ffc6aafb80423445b7a2b02033.png)
4. 单击该风险项查看,可进一步获得更详细的异常信息。优化建议会根据当前情况给出合理的处理措施。n![](https://qcloudimg.tencent-cloud.cn/image/document/be1f8ce5b553fe6ce0063082b5cbdf7c.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/be1f8ce5b553fe6ce0063082b5cbdf7c.png)