前提
- 不考虑shard(使用场景受限,运维成本比较高)
- mongo实例的库规模超过百g,单个collection 超过千万
- 未达到这个规模的集群,性能不会太差,维护的手段可以选择使用,降低维护成本
使用层面
- 生产环境应默认开启journal log
- write reference 使用 JOURNAL_SAFE(更严格的模式依次为 1主机成功;2多数成功;3 fs.sync)
- read reference 使用 secondary first 的模式
mongo参数调优
- 建立必要的索引
- 超过千万的 collection 可以考虑开启轮询模式(capped)或者定时过期(ttl index)
- 开启directoryperdb 为硬件调优提供可能性
维护层面
- 定期执行repiarDB(去除文件碎片,rebuild 索引)
- 为不同的DB目录挂载不同的物理磁盘