MongoDB-CN-Manual
  • MongoDB中文手册|官方文档中文版
  • MongoDB用户手册说明
  • MongoDB简介
    • 入门
    • 数据库和集合
      • 视图
      • 按需物化视图
      • 封顶集合
      • 时间序列集合
    • 文档
    • BSON类型
      • Comparison and Sort Order
      • MongoDB Extended JSON (v2)
      • MongoDB Extended JSON (v1)
  • 安装 MongoDB
    • 安装MongoDB社区版
      • 在Linux上安装MongoDB社区版
      • 在macOS上安装MongoDB社区版
      • 在Windows上安装MongoDB社区版
    • 安装MongoDB企业版
      • 在Linux上安装MongoDB企业版
      • 在Mac OS安装MongoDB企业版
      • 在Windows安装MongoDB企业版
      • 使用Docker安装MongoDB企业版
    • 将社区版MongoDB升级到企业版MongoDB
    • 验证MongoDB软件包的完整性
  • The mongo Shell
    • 配置mongo Shell
    • 使用 mongo Shell帮助
    • 为mongo Shell编写脚本
    • mongo Shell中的数据类型
    • mongo Shell 快速参考
  • MongoDB CRUD操作
    • 插入文档
      • 插入方法
    • 查询文档
      • 在mongo Shell中迭代游标
      • 从查询返回的项目字段
      • 查询嵌入式文档数组
      • 查询数组
      • 查询空字段或缺少字段
      • 查询嵌入/嵌套文档
    • 更新文档
      • 更新方法
      • 聚合管道更新
    • 删除文档
      • 删除方法
    • 地理空间查询
      • 用地理空间查询查找餐馆
      • GeoJSON对象
    • 批量写入操作
    • 可重试写入
    • 可重试读取
    • SQL到MongoDB的映射图表
    • 文本搜索
      • 文本索引
      • 文本索引操作
      • 集合管道中的文本索引
      • 文本索引语言
    • Read Concern读关注
      • 读关注 "local"
      • 读关注 "available"
      • 读关注 "majority"
      • 读关注 "linearizable"
      • 读关注 "snapshot"
    • Write Concern写关注
    • MongoDB CRUD概念
      • 原子性和事务
      • 读隔离性,一致性和近因性
        • 因果一致性和读写关注
      • 分布式查询
      • 通过findAndModify进行线性化读取
      • 查询计划
      • 查询优化
        • 评估当前操作性能
        • 优化查询性能
        • 写操作性能
        • 说明结果
      • 分析查询表现
      • Tailable 游标
  • MongoDB聚合
    • 聚合管道
      • 聚合管道优化
      • 聚合管道限制
      • 聚合管道和分片集合
      • 使用 Zip Code 数据集进行聚合
      • 使用用户首选项数据进行聚合
    • Map-Reduce
      • Map-Reduce 和分片集合
      • Map-Reduce 并发
      • Map-Reduce 示例
      • 执行增量 Map-Reduce
      • 对 Map Function 进行故障排除
      • 排除 Reduce Function 问题
      • Map-Reduce转换到聚合管道
    • 聚合参考
      • 聚合管道快速参考
      • 聚合命令
      • 聚合命令对比
      • 聚合表达式中的变量
      • SQL 到聚合映射图表
  • MongoDB数据模型
    • 数据建模介绍
    • 模式验证
    • 数据模型设计
      • 一对一嵌套关系模型
  • MongoDB事务
  • MongoDB事务
    • 驱动程序 API
    • 生产注意事项
    • 生产注意事项 (分片集群)
    • 事务操作
  • MongoDB索引
    • 单字段索引
    • 复合索引
    • 多键索引
      • 多键索引范围
    • 文本索引
      • 为文本索引指定语言
      • 指定文本索引的名称
      • 用权重控制搜索结果
      • 限制扫描条目的数量
    • 通配符索引
      • 通配符索引限制
    • 2dsphere 索引
      • 查询一个2dsphere索引
    • 2d 索引
      • 创建一个2d索引
      • 查询一个2d索引
      • 2d索引内部
      • 使用球面几何计算距离
    • geoHaystack 索引
      • 创建Haystack索引
      • 查询Haystack索引
    • 哈希索引
    • 索引特性
      • TTL 索引
        • 通过设置TTL使集合中的数据过期
      • 唯一索引
      • 部分索引
      • 不分大小写索引
      • Sparse 索引
    • 在填充的集合上建立索引
      • 在副本集上建立滚动索引
      • 在分片群集上建立滚动索引
    • 索引交集
    • 管理索引
    • 衡量索引使用
    • 索引策略
      • 创建索引来支持查询
      • 使用索引对查询结果进行排序
      • 确保索引适合RAM
      • 创建以确保选择性的查询
    • 索引参考
  • MongoDB安全
    • 安全检查列表
    • 启用访问控制
    • 身份验证
      • 用户
        • 添加用户
        • 权限认证机制
          • SCRAM
            • 用x.509证书来认证客户端
    • 审计
      • 配置审计过滤器
      • 配置审计
      • 系统事件审计消息
    • 网络和配置强化
    • 安全参考
      • system.roles集合
      • system.users集合
      • 资源文档
      • 权限操作
    • 附录
      • 附录-A-用于测试的 OpenSSl CA 证书
      • 附录-B-用于测试的OpenSSL服务器证书
      • 附录-C-用于测试的OpenSSL客户端证书
  • Change Streams变更流
    • 变更流生产建议
    • 变更事件
  • MongoDB复制
    • 副本集成员
    • 副本集日志
    • 副本集数据同步
    • 副本集部署架构
    • 副本集成员配置教程
    • 副本集维护教程
    • MongoDB复制参考
  • MongoDB分片
    • 分片集群组件
    • 分片键
    • 哈希分片
    • 范围分片
    • 区
      • 管理分片区
      • 按位置细分数据
      • 用于更改SLA或SLO的分层硬件
      • 按应用或客户细分数据
      • 仅插入工作负载的分布式本地写入
      • 管理分片区
    • 使用块进行数据分区
      • 在分片集群中拆分数据块
    • 分片管理
      • 查看集群设置
    • 重启一个分片集群
    • [把一个分片集群迁移到不同的硬件](fen-pian/migrate-a -sharded-cluster-to-different-hardware.md)
    • 分片参考
  • MongoDB管理
    • 产品说明
    • 操作检查列表
    • 开发检查列表
    • 配置和维护
    • 性能
    • 数据中心意识
      • MongoDB部署中的工作负载隔离
      • 区
        • 管理分片区
        • 按位置细分数据
        • 用于更改SLA或SLO的分层硬件
        • 按应用或客户细分数据
        • 仅插入工作负载的分布式本地写入
        • 管理分片区
    • MongoDB备份方法
    • MongoDB监控
  • MongoDB存储
    • 存储引擎
      • WiredTiger 存储引擎
      • 内存存储引擎
    • 日志记录
      • 管理日志记录
        • GridFS
        • FAQ:MongoDB 存储
  • MongoDB参考
    • 运算符
      • 查询与映射运算符
        • 比较查询运算符
          • $eq
          • $gt
          • $gte
          • $in
          • $lt
          • $lte
          • $ne
          • $nin
        • 逻辑查询运算符
          • $and
          • $not
          • $nor
          • $or
        • 元素查询运算符
        • 评估查询运算符
        • 地理空间查询运算符
        • 数组查询运算符
        • 按位查询运算符
        • $comment
        • 映射运算符
      • 更新运算符
        • 字段更新运算符
        • 数组更新运算符
        • 按位更新运算符
      • 聚合管道阶段
      • 聚合管道操作符
        • $abs (aggregation)
        • $acos (aggregation)
        • $acosh (aggregation)
        • $add (aggregation)
        • $addToSet (aggregation)
        • $allElementsTrue (aggregation)
        • $and (aggregation)
        • $anyElementTrue (aggregation)
        • $arrayElemAt (aggregation)
        • $arrayToObject (aggregation)
        • $asin (aggregation)
        • $asinh (aggregation)
        • $atan (aggregation)
        • $atan2 (aggregation)
        • $atanh (aggregation)
        • $avg (aggregation)
        • $ceil (aggregation)
        • $cmp (aggregation)
        • $concat (aggregation)
        • $concatArrays (aggregation)
        • $cond (aggregation)
        • $convert (aggregation)
        • $cos (aggregation)
        • $dateFromParts (aggregation)
        • $dateToParts (aggregation)
        • $dateFromString (aggregation)
        • $literal (aggregation)
      • 查询修饰符
    • 数据库命令
      • 聚合命令
      • 地理空间命令
      • 查询和写操作命令
      • 查询计划缓存命令
      • 认证命令
      • 用户管理命令
      • 角色管理命令
      • 复制命令
      • 分片命令
      • 会话命令
      • 管理命令
      • 诊断命令
      • 免费监控命令
      • 系统事件审计命令
    • mongo Shell 方法
      • 集合方法
        • db.collection.aggregate()
        • db.collection.bulkWrite()
        • db.collection.copyTo()
        • db.collection.count()
        • db.collection.countDocuments()
        • db.collection.estimatedDocumentCount()
        • db.collection.createIndex()
        • db.collection.createIndexes()
        • db.collection.dataSize()
        • db.collection.deleteOne()
        • db.collection.deleteMany()
        • db.collection.distinct()
        • db.collection.drop()
        • db.collection.dropIndex()
        • db.collection.dropIndexes()
        • db.collection.ensureIndex()
        • db.collection.explain()
        • db.collection.find()
        • db.collection.findAndModify()
        • db.collection.findOne()
        • db.collection.findOneAndDelete()
        • db.collection.findOneAndReplace()
        • db.collection.findOneAndUpdate()
        • db.collection.getIndexes()
        • db.collection.getShardDistribution()
        • db.collection.getShardVersion()
        • db.collection.insert()
        • db.collection.insertOne()
        • db.collection.insertMany()
        • db.collection.isCapped()
        • db.collection.latencyStats()
        • db.collection.mapReduce()
        • db.collection.reIndex()
        • db.collection.remove()
        • db.collection.renameCollection()
        • db.collection.replaceOne()
        • db.collection.save()
        • db.collection.stats()
        • db.collection.storageSize()
        • db.collection.totalIndexSize()
        • db.collection.totalSize()
        • db.collection.update()
        • db.collection.updateOne()
        • db.collection.updateMany()
        • db.collection.watch()
        • db.collection.validate()
    • MongoDB中的限制与阈值
    • MongoDB系统集合
    • 词汇表
    • 默认的MongoDB端口
    • 默认的MongoDB读/写关注
    • 服务器会话
  • MongoDB FAQ
    • FAQ: MongoDB基础知识
    • FAQ: MongoDB索引
    • FAQ: MongoDB并发
    • FAQ: MongoDB分片
    • FAQ: MongoDB复制和副本集
    • FAQ: MongoDB存储
    • FAQ: MongoDB诊断
  • MongoDB 版本管理
  • 联系我们
    • Tapdata Cloud
    • MongoDB中文社区
    • 社区合作伙伴—锦木信息
由 GitBook 提供支持
在本页
  • 文件系统
  • 复制
  • 分片
  • 日志:WiredTiger存储引擎
  • 硬件
  • 部署到云硬件
  • 操作系统配置
  • Linux
  • Window
  • 备份
  • 监控
  • 负载均衡
  1. MongoDB管理

操作检查列表

上一页产品说明下一页开发检查列表

最后更新于3年前

下面的清单和列表一同提供了一些建议,帮助您避免生产环境下MongoDB部署中的问题。

文件系统

  • 将磁盘分区与RAID配置对齐。

  • 避免对 使用 NFS 驱动器。使用 NFS 驱动器可能导致性能下降和不稳定。

    有关详细信息,请参阅: 。

    • VMware 用户应该通过 NFS 使用 VMware 虚拟驱动器。

  • Linux/Unix:将驱动器格式化为 XFS 或 EXT4。如果可能的话,使用 XFS,因为它通常在MongoDB 中运行得更好。

    • 对于 WiredTiger 存储引擎,强烈建议使用XFS,以避免在将 EXT4 与 WiredTiger 一起使用时产生性能问题。

    • 如果使用 RAID,可能需要使用 RAID 几何阵列配置 XFS。

  • Windows:使用 NTFS 文件系统。不要使用任何 FAT 文件系统(例如 FAT 16/32/exFAT)。

复制

  • 验证所有非隐藏副本集成员在 RAM,CPU,磁盘,网络设置等方面的配置是否相同。

    • 复制 oplog 窗口包括正常维护和停机时间窗口,以避免需要完全重新同步。

    • 复制 oplog 窗口应涵盖从上次备份还原副本集成员所需的时间。

对于早期版本的 MongoDB,复制 oplog 窗口应涵盖通过初始同步还原副本集成员所需的时间。

  • 配置副本集成员时使用主机名,而不是IP地址。

  • 确保每个主机都可以自行解决。

  • 确保副本集包含奇数个投票成员。

分片

  • 使用NTP来同步切分集群所有组件上的时钟。

  • 使用 CNAMEs 将配置服务器标识到集群,以便可以在不停机的情况下重命名和重新编号配置服务器。

日志:WiredTiger存储引擎

  • 将日志放在其自己的低延迟磁盘上,以适应写密集型的工作负载。请注意,这将影响快照样式备份,因为构成数据库状态的文件将位于单独的卷上。

硬件

  • 使用 RAID10 和 SSD 驱动器可获得最佳性能。

  • SAN 和虚拟化:

    • 在虚拟环境中运行时,请避免使用动态内存特性,如内存膨胀。

    • 避免将所有副本集成员放在同一个 SAN 上,因为 SAN 可能是单点故障。

部署到云硬件

  • 在具有高延迟存储的系统(如Microsoft Azure)上使用 MongoDB 版本 2.6.4 或更高版本,因为这些版本包括这些系统性能的改进。

操作系统配置

Linux

    • 对于 WiredTiger 存储引擎,无论存储介质类型(旋转磁盘、固态硬盘等)如何,请将文件预读设置在8到32之间,除非测试显示在较高的文件预读值中有可测量、可重复和可靠的好处。

  • 如果在 RHEL/CentOS 上使用 tuned(动态内核调优工具),则必须自定义您的 tuned 配置文件。RHEL/CentOS 附带的许多 tuned 文件可能会对其默认设置的性能产生负面影响。将您选择的 tuned 文件自定义为:

  • 对SSD驱动器使用 noop 或 deadline 磁盘调度程序。

  • 对来宾虚拟机中的虚拟化驱动器使用 noop 磁盘调度程序。

  • 为部署配置足够的文件句柄(fs.file max)、内核 pid 限制(kernel.pid_max)、每个进程的最大线程数(kernel.threads max)和每个进程的最大内存映射区域数(vm.max_map_count)。对于大型系统,以下值提供了一个良好的起点:

    • fs.file-max 值为98000,

    • kernel.pid_max 值为64000,

    • kernel.threads-max 值为64000, 和

    • vm.max_map_count 值为128000

  • 确保系统已配置交换空间。有关适当大小的详细信息,请参阅操作系统的文档。

Window

  • 考虑禁用 NTFS “最后访问时间”更新。这类似于在 Unix-like 系统上禁用atime。

备份

  • 安排定期测试备份和恢复过程,以便手头有时间估计,并验证其功能。

监控

    • 复制滞后

    • 复制 oplog 窗口

    • 断言

    • 队列

    • 页面错误

  • 监视服务器的硬件统计信息。尤其要注意磁盘使用、CPU 和可用磁盘空间。

    在没有磁盘空间监视的情况下,以下方案作为预防措施:

    • 在storage.dbPath驱动器上创建一个4 GB的虚拟文件,以确保磁盘满时有可用空间。

    • 如果没有其他监视工具可用,cron+df 的组合可以在磁盘空间达到高水位时发出警报。

负载均衡

  • 将负载平衡器配置为启用“粘滞会话”或“客户端亲和性”,并为现有连接提供足够的延时。

  • 避免在 MongoDB 集群或副本集组件之间放置负载平衡器。

译者:孔令升

以适合您的使用案例:

在 3.4 版本中更改:复制 oplog 窗口不再需要覆盖通过初始同步还原副本集成员所需的时间,因为在数据复制期间会提取 oplog 记录。但是,正在还原的成员必须在数据库中具有足够的磁盘空间,以便在此数据复制阶段的持续时间内临时存储这些 oplog 记录。

确保您的副本集至少包含三个数据承载节点,这些节点与日志记录一起运行,并且为了可用性和持久性,您使用 w:"majority" 发出写操作。

确保所有 实例之间的完全双向网络连接。

确保 实例有0票或1票。

对,将副本集部署到至少三个数据中心。

将 放在专用硬件上,以便在大型集群中获得最佳性能。确保硬件有足够的 RAM 将数据文件完全保存在内存中,并且有专用的存储器。

根据指南部署 前端路由。

确保 , 和配置服务器之间的完全双向网络连接。

确保所有实例都使用。

确保每个 已为其 配置了 IOPS,或者具有自己的物理驱动器或 LUN。

Windows Azure:将 TCP 长连接(TCP长连接时间)调整为100-120。Azure 负载均衡器上的 TCP 空闲超时对于 MongoDB 的连接池行为太慢。有关详细信息,请参阅 。

关闭透明大页。有关更多信息,请参见。

在存储数据库文件的设备上 。

可以提供关于交替文件预读配置的建议和指导。

禁用透明大页。有关说明,请参见。

无论存储介质类型如何,都将文件预读设置为8到32之间。有关详细信息,请参阅。

禁用 NUMA 或将 vm.zone_reclaim_mode 设置为0并运行具有节点交错的 实例。请参阅:了解更多信息。

调整硬件上的 ulimit 值以适合您的用例。如果多个 或者 实例在同一用户下运行,请相应地缩放 ulimit 值。有关详细信息,请参见:。

使用noatime作为 挂载点。

确保系统默认的 TCP 长连接设置正确。TCP 长连接时间值300通常为副本集和分片集群提供更好的性能。有关详细信息,请参阅常见问题中的 。

使用默认分配单元大小的格式化NTFS磁盘。

使用 或者或者另一个监控系统来监控关键数据库指标并为它们设置警报。包括以下指标的警报:

原文链接:

文件系統
复制
分片
日志:WiredTiger存储引擎
硬件
部署到云硬件
操作系统配置
备份
监控
负载均衡
开发清单
dbPath
远程文件系统
配置 oplog 的大小
本地
写策略
mongod
mongod
高可用性
配置服务器
生产配置
mongos
mongod
mongos
日志
mongod
数据库文件存储路径
Azure产品说明
透明大页设置
调整文件预读设置
MongoDB专业支持
使用 tuned 和 ktune
预读设置
mongod
MongoDB和NUMA硬件
mongod
mongos
UNIX ulimit 设置
dbPath
TCP 保持时间是否影响MongoDB部署?
4096 字节
MongoDB Cloud Manager
MongoDB 企业高级版中提供的本地解决方案- Ops Manager
https://docs.mongodb.com/manual/administration/production-checklist-operations/