MongoDB在Ubuntu中的存储结构
一 默认目录与配置文件
- 数据目录:默认在**/var/lib/mongodb**,用于存放数据库文件与引擎数据文件。
- 日志目录:默认在**/var/log/mongodb**,常见日志文件为mongod.log。
- 配置文件:常见为**/etc/mongod.conf**(YAML格式),可通过其中的storage.dbPath指定数据目录。
- 可执行程序:服务端为**/usr/bin/mongod**。
- 说明:不同安装方式或版本可能略有差异,但APT安装包在Ubuntu上的上述路径最为常见。
二 数据目录内部结构(以WiredTiger为例)
- 核心数据文件:以collection-.wt、index-.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”)提升数据安全。