签到成功

知道了

CNDBA社区CNDBA社区

Mongodb 目录结构 和 数据文件 说明

2022-04-28 20:24 3157 1 原创 MongoDB
作者: dave

在MongoDB的配置文件中,我们会指定相关的路径:

[dave@www.cndba.cn  ~]# cat /etc/mongo.conf
#数据库数据存放目录
dbpath=/mongodb/data
#数据库日志存放目录
logpath=/mongodb/logs/mongodb.log

直接使用tree 目录查看data 目录的层次结构:

http://www.cndba.cn/dave/article/107955

[dave@www.cndba.cn  data]# tree .
.
├── collection-0-6283992699196298408.wt
├── collection-2-6283992699196298408.wt
├── collection-4-6283992699196298408.wt
├── collection-7-6283992699196298408.wt
├── diagnostic.data
│   ├── metrics.2022-04-27T11-41-22Z-00000
│   ├── metrics.2022-04-28T01-09-02Z-00000
│   ├── metrics.2022-04-28T01-13-42Z-00000
│   └── metrics.interim
├── index-1-6283992699196298408.wt
├── index-3-6283992699196298408.wt
├── index-5-6283992699196298408.wt
├── index-6-6283992699196298408.wt
├── index-8-6283992699196298408.wt
├── index-9-6283992699196298408.wt
├── journal
│   ├── WiredTigerLog.0000000003
│   ├── WiredTigerPreplog.0000000001
│   └── WiredTigerPreplog.0000000002
├── _mdb_catalog.wt
├── mongod.lock
├── sizeStorer.wt
├── storage.bson
├── WiredTiger
├── WiredTigerHS.wt
├── WiredTiger.lock
├── WiredTiger.turtle
└── WiredTiger.wt

2 directories, 26 files
[dave@www.cndba.cn  data]#

[dave@www.cndba.cn  journal]# pwd
/mongodb/data/journal
[dave@www.cndba.cn  journal]# ll -lh
total 300M
-rw------- 1 root root 100M Apr 28 09:33 WiredTigerLog.0000000003
-rw------- 1 root root 100M Apr 28 09:13 WiredTigerPreplog.0000000001
-rw------- 1 root root 100M Apr 28 09:13 WiredTigerPreplog.0000000002
[dave@www.cndba.cn  journal]#

相关说明如下:http://www.cndba.cn/dave/article/107955

  1. _mdb_catalog.wt : 里存储了所有集合的元数据,包括集合对应的WT table名字,集合的创建选项,集合的索引信息等,WT存储引擎初始化时,会从_mdb_catalog.wt里读取所有的集合信息,并加载元信息到内存。

    http://www.cndba.cn/dave/article/107955

  2. sizeStorer.wt : 里存储所有集合的容量信息,如文档数、文档总大小等,当插入、删除、更新文档时,这些信息会先cache到内存,每操作1000次会刷盘一次;mongod进程crash可能导致sizeStorer.wt里的数据与实际信息不匹配,可通过validate()命令来重新扫描集合以订正统计信

    http://www.cndba.cn/dave/article/107955

  3. journal, MongoDB 的日志文件,类似于Oracle的redo log。
    如果开启了journal日志功能,MongoDB先在内存保存写操作,并记录journal日志到磁盘,然后才会把数据改变刷入到磁盘上的数据文件。MongoDB的日志文件只是用来在系统出现宕机时候恢复尚未来得及同步到硬盘的内存数据。
    WiredTiger 引擎的journal 日志单个文件最大约为100MB。 当达到这个限制时,会自动创建新的journal 日志你文件。 WiredTiger 会自动删除旧的journal 日志文件,仅保留从最后一次checkpoint 之后recover 恢复需要的文件。http://www.cndba.cn/dave/article/107955

  4. WiredTiger*, MongDB存储引擎配置文件。http://www.cndba.cn/dave/article/107955

    http://www.cndba.cn/dave/article/107955

  5. diagnostic.data 目录下存放的是诊断数据,每次重启MongoDB 实例都会重新生成一个文件。 http://www.cndba.cn/dave/article/107955http://www.cndba.cn/dave/article/107955

    http://www.cndba.cn/dave/article/107955

  6. index: 索引的存储文件。

  7. collections:集合的存储文件。

查看集合时,我们可以看到集合数据和索引存储的对应位置。

> use ustc
switched to db ustc
> db.comment.stats({indexDetails:true})
{
        "ns" : "ustc.comment",
        "size" : 1015,
        "count" : 5,
        "avgObjSize" : 203,
        "storageSize" : 20480,
        "freeStorageSize" : 0,
        "capped" : false,
        "wiredTiger" : {
                "metadata" : {
                        "formatVersion" : 1
                },
……
"type" : "file",
"uri" : "statistics:table:collection-7-6283992699196298408",
                ……
  "indexDetails" : {
                "_id_" : {
……
"type" : "file",
"uri" : "statistics:table:index-8-6283992699196298408",
……
   "userid_1" : {
……
"type" : "file",
"uri" : "statistics:table:index-9-6283992699196298408",

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2297
    原创
  • 3
    翻译
  • 644
    转载
  • 198
    评论
  • 访问:9616669次
  • 积分:4542
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ