2017-08-18 41 views
0

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

我尝试使用this script

一旦在主成员执行该清理不必要的课程,它需要一些时间,并删除所有不必要的文件。但它不释放磁盘空间。

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 
} 


[email protected]:~# 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 } 

它并没有帮助来压缩数据库。

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

+0

阅读Mojo回答:https://stackoverflow.com/questions/5518581/mongodb-data-remove-reclaim-diskspace – Hackerman

回答

0

您需要进行初始同步。当时只有一个辅助人员,最后让你的主人下台,并在那里进行初始同步。

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

+0

是的!它确实帮了我。建议我在所有三个副本集中完成初始同步。它回收了磁盘空间,并没有停机。感谢您的回答! –