MongoDB 上线及升级
性能测试
- 真实压力,对集群完成充分的性能测试
- 压测过程中各项指标表现,例如 CRUD 达到多少,连接数达到多少等
- 根据正常指标范围配置监控阈值
- 根据压测结果按需调整硬件资源
上线前:环境检查
- 要求对生产环境所使用的操作系统进行检查和调整
- 禁用 Transparent Huge Page,否则会影响数据库效率
- NUMA(非一致性存储访问)是一种计算机体系结构,用于处理多处理器系统中的内存访问。在某些情况下,启用NUMA可能会导致大量的swap交换,这可能会对系统性能产生负面影响。如果你遇到了这个问题,禁用NUMA可能是一个解决方案
- echo 0 > /proc/sys/kernel/numa_balancing
- bcdedit /set numa off
- 重启系统
- 禁用 NUMA,否则在某些情况下会引起突发大量swap交换
- tcp_keepalive_time 调整为120秒,避免一些网络问题
- ulimit -n,避免打开文件句柄不足的情况
- 关闭 atime提高数据文件访问效率
- 更多检查参考
- 禁用 Transparent Huge Page,否则会影响数据库效率
上线后
- 性能监控
- 为防止突发状况,应对常见性能指标进行监控以及时发现问题
- 定期健康检查
- mongod 日志
- 环境设置是否有变动
- MongoDB 配置是否有变动
MongoDB 版本号
-
MongoDB 主版本号 大约一年发布一次
2.0 / 2.2 / 2.4 / 2.6
3.0 / 3.2 / 3.4 / 3.6
4.0 / 4.2 -
小版本号
- 主版本发布后的 bug fix 及小功能增强和主版本通常没有 API 或不兼容 1-2个月发布一次 小版本通常可以直接原地升级
-
主版本升级流程
MongoDB 单机升级流程
MongoDB 复制集升级流程
MongoDB 分片集群升级流程
版本升级:在线升级
-
MongoDB支持在线升级,即升级过程中不需要间断服务
-
升级过程中虽然会发生主从节点切换,存在短时间不可用
- 3.6版本开始支持自动写重试可以自动恢复主从切换引起的集群暂时不可写
- 4.2开始支持的自动读重试则提供了包括主从切换在内的读问题的自动恢复
-
升级需要逐版本完成,不可以跳版本
- 正确:3.2->3.4->3.6->4.0->4.2
- 错误:3.2->4.2
- 原因:
- MongoDB复制集仅仅允许相邻版本共存
- 有一些升级内部数据格式如密码加密字段,需要在升级过程中由mongo进行转换
升级流程:降级
- 如果升级无论因何种原因失败,则需要降级到原有旧版本
- 滚动降级过程中集群可以保持在线,仅在切换节点时会产生一定的不可写时间
- 降级前应先去除已经用到的新版本特性。例如用到了 NumberDecimal 则应把所有使用
NumberDecimal 的文档先去除该字段 - 通过设置 FCV(Feature Compatibility Version)可以在功能上降到与旧版本兼容; • - FCV 设置完成后再滚动替换为旧版本。