这里仅针对只有一台Windows系统服务器的情景:
这个时候就需要多磁盘存储了。
将storage.directoryPerDB
设置为true
,这样设置的目的是每个数据库放在独立的文件夹内:
storage:
dbPath: >
journal:
enabled: >
commitIntervalMs: >
# 默认为false设置为true
directoryPerDB: true
修改之前:
不同数据集的数据分布在多个文件里,设置后,添加了一个test
数据集:
在创建数据集之前
使用mklink创建映射,目的是MongoDB数据库的文件通过映射放置到其他磁盘下,我们以image
为例进行说明:
非dbPath
磁盘下创建一个目录# 语法
mklink /D LinkFolderName TargetFolderPath
# 测试
mklink /D D:\mongodb\data\image E:\mongodb\data\image
C:\Users\Administrator>mklink /D D:\mongodb\data\image E:\mongodb\data\image
为 D:\mongodb\data\image <<===>> E:\mongodb\data\image 创建的符号链接
创建成功后,在dbPath
目录下出现了一个类似快捷方式但是类型是文件夹的
image目录:
要特别注意的是:目录符号链接不会在物理上复制文件,它们只是提供了一个不同名称的访问路径。文件仅存储在TargetFolderPath
目录下也就是E:\mongodb\data\image
目录下,这样,test库和image库就存储在不同的磁盘上了。
创建跟映射目录名称一致的新的数据集image
,创建成功后可发现dbPath
目录下有数据集的文件了,实际上并非在dbPath
所在的磁盘,而是在映射目录的磁盘。
仅适合非分布式,Windows多磁盘的场景,Linux未进行测试。