2016-08-24 19 views
0

背景: MongoDB ReplicaSetが1つのメンバーと1つのアービタを持つように設定されています。 MongoDBのデータはもう必要ないので、ディスク領域を解放する必要があります。 db.collection.remove({})コマンドですべての文書が削除されました。あなたが見ることができるように、153メガバイトの合計ストレージサイズ(第2のコレクションに)DBでちょうど6の文書があるMongoDBからの空き領域の再利用3.2

> db.stats() 
{ 
    "db" : "database", 
    "collections" : 2, 
    "objects" : 6, 
    "avgObjSize" : 167.83333333333334, 
    "dataSize" : 1007, 
    "storageSize" : 153042944, 
    "numExtents" : 0, 
    "indexes" : 5, 
    "indexSize" : 45056, 
    "ok" : 1 
} 

db.runCommand ({ compact: 'collection', force:true})db.collection.reIndex()db.repairDatabase()が走った 後、db.stats()は、ように見えました。 しかし、我々は、ディスク領域の使用状況を見れば:

# du -h --max-depth=1 | grep mongodb 
9.8G ./mongodb 

そして、MongoDBのディレクトリの中には:

ls -l 
total 9365696 
-rw-r----- 1 username usergroup  16384 Aug 19 14:19 collection-0-2472884588219438804.wt 
-rw-r----- 1 username usergroup  36864 Aug 19 14:19 collection-0-4266045208498277842.wt 
-rw-r----- 1 username usergroup  12288 Aug 24 15:55 collection-0--7009505821458556818.wt 
-rw-r----- 1 username usergroup  49152 Aug 19 14:20 collection-0--7439052959034576211.wt 
-rw-r----- 1 username usergroup  36864 Aug 19 14:20 collection-0-8676027872146699793.wt 
-rw-r----- 1 username usergroup  36864 Aug 19 14:19 collection-2-2472884588219438804.wt 
-rw-r----- 1 username usergroup  32768 Aug 23 13:54 collection-2-2911328926458913167.wt 
-rw-r----- 1 username usergroup 9589645312 Aug 24 15:55 collection-4-2472884588219438804.wt 
-rw-r----- 1 username usergroup  36864 Aug 19 14:19 collection-7--7439052959034576211.wt 
-rw-r----- 1 username usergroup  36864 Aug 19 14:19 collection-9--7439052959034576211.wt 
drwxr-x--- 2 username usergroup  4096 Aug 24 16:03 diagnostic.data 
-rw-r----- 1 username usergroup  4096 Aug 24 15:54 index-10-561247476684508201.wt 
-rw-r----- 1 username usergroup  36864 Jul 20 15:09 index-10--7439052959034576211.wt 
-rw-r----- 1 username usergroup  36864 Aug 19 14:19 index-11--7439052959034576211.wt 
-rw-r----- 1 username usergroup  16384 Mar 4 09:20 index-1-2472884588219438804.wt 
-rw-r----- 1 username usergroup  36864 Jul 20 15:09 index-1-4266045208498277842.wt 
-rw-r----- 1 username usergroup  36864 Aug 19 14:20 index-1--7439052959034576211.wt 
-rw-r----- 1 username usergroup  16384 Jul 5 13:25 index-1-8676027872146699793.wt 
-rw-r----- 1 username usergroup  36864 Jul 20 15:09 index-2-4266045208498277842.wt 
-rw-r----- 1 username usergroup  16384 Mar 4 09:20 index-3-2472884588219438804.wt 
-rw-r----- 1 username usergroup  16384 Aug 23 14:00 index-6-561247476684508201.wt 
-rw-r----- 1 username usergroup  16384 Aug 23 14:00 index-7-561247476684508201.wt 
-rw-r----- 1 username usergroup  4096 Aug 24 15:54 index-8-561247476684508201.wt 
-rw-r----- 1 username usergroup  16384 Aug 19 14:19 index-8--7439052959034576211.wt 
-rw-r----- 1 username usergroup  4096 Aug 24 15:54 index-9-561247476684508201.wt 
drwxr-x--- 2 username usergroup  4096 Aug 24 15:55 journal 
-rw-r----- 1 username usergroup  36864 Aug 24 15:55 _mdb_catalog.wt 
-rwxr-x--- 1 username usergroup   6 Aug 19 14:19 mongod.lock 
-rw-r----- 1 username usergroup  36864 Aug 24 15:56 sizeStorer.wt 
-rw-r----- 1 username usergroup   95 Dec 30 2015 storage.bson 
-rw-r----- 1 username usergroup   46 Dec 30 2015 WiredTiger 
-rw-r----- 1 username usergroup  534 Dec 30 2015 WiredTiger.basecfg 
-rw-r----- 1 username usergroup  4096 Aug 19 14:19 WiredTigerLAS.wt 
-rw-r----- 1 username usergroup   21 Dec 30 2015 WiredTiger.lock 
-rw-r----- 1 username usergroup  903 Aug 24 15:57 WiredTiger.turtle 
-rw-r----- 1 username usergroup  94208 Aug 24 15:57 WiredTiger.wt 

この文字列は、私には奇妙に思える:

-rw-r----- 1 username usergroup 9589645312 Aug 24 15:55 collection-4-2472884588219438804.wt 

質問:何謎のコレクション - 4-2472884588219438804.wtファイルにすることができますか? compact、repairDatabaseコマンドの影響を受けないのはなぜですか? MongoDBにこのファイルを空にする方法や、何とかスペースを取り戻す方法はありますか?

更新: @ james-wahlinの助けを借りて、9.8GbがReplica Set Oplogのサイズです。しかし、他のReplica Setメンバーのデータ損失の可能性があるにもかかわらず、MongoDBに余裕を持たせるにはどうしたらよいですか?あなたはすべての文書を削除しないと、データが不要になった事実に基づいて

+0

これはlocal.oplog.rsというコレクションです(https://docs.mongodb.com/manual/core/replica-set-oplog/)。 「ローカル」データベースのdb statsを確認して確認します。 –

+0

はい、あなたは絶対に正しいです!それはoplog.rsのファイルです: '> db.oplog.rs.stats(){ "NS": "local.oplog.rs"、 "カウント":30036627、 "サイズ":7106989772、 "avgObjSize" :236、 が "storageSize":9589645312、 は "キャップ":真、 "MAX":-1、 "maxSizeの":NumberLong( "7050707456")、 "sleepCount":0、 "sleepMS":0 、 "wiredTiger":{ ...、 "uri": "統計:テーブル:collection-4-2472884588219438804"、 – cleversokol

+0

@JamesWahlin、どうにかしてMongoDBにこのコレクションをクリーンアップしたり、空にしたりすることはできますか?同期するメンバーがなく、このデータはもはや必要ではないことはわかっています。私は、必要に応じて、2番目のメンバーノード上の空のDBとの同期を開始するオプションが常にあります。 – cleversokol

答えて

0

  1. 停止のmongodプロセス
  2. 手動

    > use admin 
    switched to db admin 
    > db.shutdownServer() 
    2016-08-24T08:50:29.085-0500 I NETWORK DBClientCursor::init call() failed server should be down... 
    2016-08-24T08:50:29.096-0500 I NETWORK trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed 
    2016-08-24T08:50:30.103-0500 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:10061 No connection could be made because the target machine actively refused it. 
    2016-08-24T08:50:30.104-0500 I NETWORK reconnect 127.0.0.1:27017 (127.0.0.1) failed failed couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed 
    > 
    
    # cd ./mongodb 
    # rm -rf * 
    
  3. ./mongodbディレクトリからすべてのファイルを削除

mongoを再起動すると、必要に応じてmongodbディレクトリが初期化されます。

関連する問題