2017-08-18 3 views
0

MongoDBを使用してコースを保存するOpen edXを使用しています。 3ノードレプリカセットを実行しています。現在、分割mongoを使用しています - 編集前に現在の文書(バックアップ)のコピーを作成する機能です。時間が経つにつれて、これは積み重なり、大きなディスクスペースを消費します。現在、約30のコースがあり、エクスポートすると約2〜3 GBの容量が消費されます。しかし、それは実際に使用されるディスク容量は、私が主なメンバーでこれを実行したらOpen edXとsplit 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 } 

を使用してDBを圧縮しようとしました。

このような状況でディスクスペースを再利用する方法を教えてもらえますか?私はできるだけ早くprodサーバーでこれをやりたい

+0

Mojoの回答を読む:https://stackoverflow.com/questions/5518581/mongodb-data-remove-reclaim-diskspace – Hackerman

答えて

0

初期同期を行う必要があります。 1つはセカンダリで、最後にプライマリに降格して、最初の同期も行います。

したがって、セカンダリを停止し、ノードdbPathからすべてのファイルを削除します。ノードを開始し、最初の同期を実行させます。すべてのノードに対してこれを繰り返します。

+0

はい!それは私を助けてくれました。私は提案された3つのレプリカセットのすべてで初期同期を行った。それはディスクスペースを再利用し、ダウンタイムはありませんでした。ご回答有難うございます! –

関連する問題