0

我正在使用使用 MongoDB 存储课程的 Open edX。我们正在运行三节点副本集。它目前正在使用 split mongo - 一种在编辑之前制作当前文档(备份)的副本的功能。随着时间的推移,这会堆积起来,导致消耗大量磁盘空间。目前大约有 30 门课程,当我导出它时,它消耗大约 2-3 GB。但是,它实际使用的磁盘空间是

我尝试使用此脚本清理不需要的课程

在主要成员中执行此操作后,需要一些时间并删除所有不需要的文档。但它不会释放磁盘空间。

rs0:SECONDARY> db.stats()
{
        "db" : "edxapp",
        "collections" : 5,
        "objects" : 277557,
        "avgObjSize" : 112645.21484235671,
        "dataSize" : 31265467896,
        "storageSize" : 57843929088,
        "numExtents" : 0,
        "indexes" : 6,
        "indexSize" : 6938624,
        "ok" : 1
}


root@mongo:~# df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev             4082828       12   4082816   1% /dev
tmpfs             817564      396    817168   1% /run
/dev/xvda1       8115168  1805528   5874364  24% /
none                   4        0         4   0% /sys/fs/cgroup
none                5120        0      5120   0% /run/lock
none             4087804        0   4087804   0% /run/shm
none              102400        0    102400   0% /run/user
/dev/xvdf       62904320 57542660   5361660  92% /edx
/dev/xvdh       72117576    53012  68378164   1% /tmp/repairdb

我尝试使用压缩数据库

rs0:SECONDARY> db.runCommand( { compact : 'modulestore.structures', force: 'true' } )
{ "ok" : 1 }

它也没有帮助。

有人可以让我知道在这种情况下如何回收磁盘空间吗?我想尽可能快地在产品服务器中执行此操作。

4

1 回答 1

0

您需要进行初始同步。当时有一个次要,最后退出你的主要并对其进行初始同步。

因此,您停止辅助,然后从节点 dbPath 中删除所有文件。启动节点并让它进行初始同步。对所有节点重复此操作。

于 2017-08-20T16:26:41.170 回答