mongoDB data dosyalarının purge edilmesi

mongoDB data dizinine baktığınızda

-rw------- 1 root root  64M 2012-02-21 12:04 xxx.0
-rw------- 1 root root 128M 2012-02-21 12:02 xxx.1
-rw------- 1 root root 256M 2012-02-21 12:02 xxx.2
-rw------- 1 root root 512M 2012-02-21 12:04 xxx.3
-rw------- 1 root root 1.0G 2012-02-21 12:03 xxx.4
-rw------- 1 root root 2.0G 2012-02-21 12:04 xxx.5
-rw------- 1 root root 2.0G 2012-02-21 12:03 xxx.6

şeklinde uzayıp giden dosyalar göreceksiniz.

Bu dosyalar belli zaman sonra artacaktır.

Bunun nedeni şu:

mongoDB belirli büyüklükte (Örn 2GB) data dosyaları tutuyor. Bu alanı kullansanızda kullanmasanız da bu alanı ayırıyor. Siz veritabanı üstünde delete ve insertler yaptığınızda mongoDB’ni bu alanlardaki dataları delete etse bile hala bu alanı ayırmaya devam ediyor.

Bu yüzden belirli aralıklarla bu alanları free etmeniz gerekiyor.

Bunun içinde db.repairDatabase() komutunu çalıştırıp bu alanları free edebilirsiniz.

Komutu;

PRIMARY> use xxx
switched to db xxx

PRIMARY> db.repairDatabase();
{ "ok" : 1 }

şeklinde çalıştırabilirsiniz.

Not : Burada xxx fazlasıyla yer kaplayan veritabanının ismi.

Bu işlem sırasında bu veritabanınızı lock edeceği için production makinesinde yapacaksınız kullanılmadığı bir zamanda yapmanız mantıklı olur.

Yoksa;

Tue Feb 14 15:00:54 [conn78277] warning: ClientCursor::yield can't unlock b/c of recursive lock ns: xxx.xxx top: { opid: 212476020, active: true, lockType: "write", waitingForLock: false, secs_running: 1, op: "query", ns: "xxx", query: { repair
Database: 1.0 }, client: "xxx.xxx.xxx.xxx:38186", desc: "conn", threadId: "0x7f736eacc700", connectionId: 78277, msg: "index: (3/3) btree-middle", numYields: 0 }

şeklinde bir hata göreceksiniz log dosyasında.

Bu işlemler başarılı bir şekilde bittikten sonra gözle görülür şekilde disk kullanımından tasarruf etmiş olacaksınız.

Posted in Linux, MongoDB on February 21st, 2012 by Kürşad DARA | | 0 Comments

Anlık mongodb istatistikleri

Anlık olarak mongodb nin istatistiklerini görmek isterseniz:

root@mongodbs1:~# mongostat -h xxx.xxx.xxx.xxx
connected to: xxx.xxx.xxx.xxx
insert  query update delete getmore command flushes mapped  vsize    res faults locked % idx miss %     qr|qw   ar|aw  netIn netOut  conn   set repl       time 
     0      0      0      0       1       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:35 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:36 
     0      0      0      0       1       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:37 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:38 
     0      0      0      0       1       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:39 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:40 
     0      0      0      0       1       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:41 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:42 
     0      0      0      0       0       2       0  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   192b     1k     5 myset    M   12:14:43 
     0      0      0      0       1       2       1  14.2g  29.2g  2.86g      0        0          0       0|0     1|0   239b     1k     5 myset    M   12:14:44 

Posted in Linux, MongoDB on February 17th, 2012 by Kürşad DARA | | 0 Comments