Issei Naruta
@mirakui
mongodb、ディスク容量を空けるために db.repairDatabase() したらディスク容量が足りないって言われるし、服を買いに行く服が無い状態になる
2012-10-16 18:52:59
Issei Naruta
@mirakui
200Gのディスクで100Gのmongoのデータがあって80GくらいいあいてるけどそれでもrepairDatabaseするには足りないんだって
2012-10-16 18:58:19
Yuki Nishijima
@yuki24
@mirakui それだと、100GB 空いてる必要がありますね。repair は単に今あるデータから全く同じ新しいデータベースを書き出しているだけなのです…
2012-10-16 19:03:05
akuwano
@kuwa_tw
@mirakui 一応RepairだとDB全体になって、DBファイルと同じだけの容量が必要になるので、実質ディスク50%超えるとかけられないです。Collection単位のCompact Commandを使ってみる位しか手が無いですね、、、このへん(´;ω;`)
2012-10-16 19:03:28
Yuki Nishijima
@yuki24
@mirakui dbpath で指定されたところにある実際のデータを手作業で余裕あるディスクに移した後、dbpath を移したところに向けて mongod を再起動してから再び repair を実装するという荒技もありますが、動くかどうかは不安ですねぇ。
2012-10-16 19:13:11
Issei Naruta
@mirakui
やばい、db.collection.runCommand('compact') も collection 単体じゃなくて db 全体がロックされるな
2012-10-16 19:17:13
Yuki Nishijima
@yuki24
@mirakui mongod 止めないといけないので無理ですね。ちなみに repair 自体も global lock するので、repair しただけでも書き込みしてる奴が詰まりそうです。
2012-10-16 19:18:04
Issei Naruta
@mirakui
@yuki24 さっき試したらcollectionのcompactもglobal lockっぽかったので、マスターDBでオンラインでスペース空けるのは諦めたほうがよさそうですね…
2012-10-16 19:19:05