温馨提示×

MongoDB在Ubuntu中的存储结构是怎样的

小樊
43
2025-12-28 11:30:55
栏目: 云计算

MongoDB在Ubuntu中的存储结构

一 默认目录与配置文件

  • 数据目录:默认在**/var/lib/mongodb**,用于存放数据库文件与引擎数据文件。
  • 日志目录:默认在**/var/log/mongodb**,常见日志文件为mongod.log
  • 配置文件:常见为**/etc/mongod.conf**(YAML格式),可通过其中的storage.dbPath指定数据目录。
  • 可执行程序:服务端为**/usr/bin/mongod**。
  • 说明:不同安装方式或版本可能略有差异,但APT安装包在Ubuntu上的上述路径最为常见。

二 数据目录内部结构(以WiredTiger为例)

  • 核心数据文件:以collection-.wtindex-.wt命名的WiredTiger表文件,分别存储集合与索引数据。
  • 元数据与诊断文件:如WiredTiger.*.wt、诊断文件(WT_SESSION diagnostic files)。
  • 锁文件:如**.mongod.lock**,用于记录进程锁状态。
  • 预写日志(Journal):用于崩溃恢复,位于数据目录下的**journal/**子目录(WiredTiger引擎下默认启用)。
  • 注意:WiredTiger将集合与索引组织为表文件,不再使用早期MMAPv1时代的**.0/.1数据段与.ns**命名空间文件形态。

三 逻辑到物理的映射

  • 逻辑层:数据库(Database)→ 集合(Collection)→ 文档(Document),文档以BSON格式存储,包含唯一**_id**。
  • 物理层(WiredTiger):数据按Extent(区)Page(页)管理,页是基本的读写单位;集合与索引分别映射为WT表文件,索引采用B+树结构以加速查询。

四 自定义存储路径与生效方式

  • 编辑配置文件:在**/etc/mongod.conf**中设置
    storage:
    dbPath: /your/data/path
  • 准备目录与权限:
    sudo mkdir -p /your/data/path
    sudo chown -R mongodb:mongodb /your/data/path
  • 重启服务并验证:
    sudo systemctl restart mongod
    sudo systemctl status mongod
    tail -f /var/log/mongodb/mongod.log
  • 提示:修改路径后,请确保新目录存在且MongoDB运行账户对其拥有读写权限。

五 存储引擎与关键配置要点

  • 存储引擎:MongoDB 3.2+默认使用WiredTiger,支持文档级并发、检查点与压缩;如需兼容旧应用可改用MMAPv1(已不推荐)。
  • 缓存配置:WiredTiger缓存建议设为物理内存的50%–75%,如:
    storage:
    wiredTiger:
    engineConfig:
    cacheSizeGB: 4
  • 压缩配置:WiredTiger支持snappy(默认)与zlib等压缩算法,可在collection或全局层面配置。
  • 持久化:确保storage.journal.enabled: true(默认开启),并结合合适的Write Concern(如j: true、w: “majority”)提升数据安全。

0