8 Şubat 2015 Pazar

MongoDB (AB15)

MongoDB (humongous'dan geliyor. Çok büyük, kocaman anlamında)
* ölçeklenebilir
* doküman tabanlı
* C++ ile 10gen tarafından geliştirilmiş
* NoSQL veritabanı uygulaması.

MongoDB, özellikle hız gerektiren ve geleneksel ilişkisel veritabanlarının (rdbms) hantal ve yavaş kaldığı yapılarda kullanılmaktadır.

SQL                                            MongoDB

database                                    database

table                                           collection

row                                            document ya da BSON(Binary Json) document

column                                       field
 
Kurulum: (Centos 6.6 minimal için)

#vim /etc/yum.repos.d/mongodb.repo

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

# yum install -y mongodb-org

# chkconfig --add mongodb

Konsol yönetimi için , birincil arka plan kabuğunu çalıştırmamız gerekiyor.
#mongod

veritabanlanlarını listeler:
> show dbs
admin  (empty)
local  0.078GB

> use aborgtr
switched to db aborgtr

O anki veritabanını gösteriyor:
> db
aborgtr

veri basarken:
> for (var i = 1; i<=100; i++) {
... db.aborgtr.insert( {x : i} )
... }

döküman listelerken:
> db.aborgtr.find()
{ "_id" : ObjectId("54cdcc52a6b7739755db0c3c"), "x" : 1 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c3d"), "x" : 2 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c3e"), "x" : 3 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c3f"), "x" : 4 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c40"), "x" : 5 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c41"), "x" : 6 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c42"), "x" : 7 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c43"), "x" : 8 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c44"), "x" : 9 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c45"), "x" : 10 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c46"), "x" : 11 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c47"), "x" : 12 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c48"), "x" : 13 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c49"), "x" : 14 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c4a"), "x" : 15 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c4b"), "x" : 16 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c4c"), "x" : 17 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c4d"), "x" : 18 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c4e"), "x" : 19 }
{ "_id" : ObjectId("54cdcc52a6b7739755db0c4f"), "x" : 20 }
Type "it" for more

Replika için yapılandırma ayarları:
vim /etc/mongod.conf

#where to log
logpath=/var/log/mongodb/mongod.log

logappend=true

bind_ip = 0.0.0.0

# fork and run in background
fork=true

port = 27017

dbpath= /var/lib/mongodb

# location of pidfile
pidfilepath = /var/run/mongodb/mongod.pid

# Turn on/off security. Off is currently the default
noauth=true

# Specifies a maximum size in megabytes for the replication operation log
oplogSize = 12288

# Configure ReplicaSet membership
replSet = replicaadi

# Enable rest API (disabled by default)
rest = true

(smallfiles=true)
# service mongod start

Primary olarak belirlenmiş mongo makinesine bağlanılır :
# mongo --host (mongo-primary-ip)

Replica makineler gruba eklenir :(rs: replica set)
> rs.add("mongo-rep02")
> rs.add("mongo-rep03")

Replica seti ayarları ve durumu görüntülenebilir :
> rs.status()
> rs.conf()

dump alırken : 
# mongodump --username aybuke --password foo --db aborgtr --out /root --authenticationDatabase admin

#ls -l /root/aborgtr/

Master önceliklendirme
>cfg = rs.conf()
>cfg.members[0].priority = 0.5
>cfg.members[1].priority = 2
>cfg.members[2].priority = 2
>rs.reconfig(cfg)
rs.conf() ile duruma bakılabilir
2 yüksek öncelikli 0.5 düşük öncelikli manasında

Hidden Member(Gizli üye) Ayarlama
>cfg = rs.conf()
>cfg.members[0].priority = 0
>cfg.members[0].hidden = true
>rs.reconfig(cfg)
rs.conf() ile son duruma bakılabilir

Delayed (Gecikmeli) Üye Ayarlama
>cfg = rs.conf()
>cfg.members[0].priority = 0
>cfg.members[0].hidden = true
>cfg.members[0].slaveDelay = 3600
>rs.reconfig(cfg)
3600 sn geriden gelen bir replika set üyesi ayarlanır.

MongoOplog ile belirli bir süre önceki verileri alma
Primary oplog'undan belirli bir süreye kadar olan değişiklikler aşağıdaki şekilde aktarılır
mongodb0 primary makinesinin oplogundan son 1 saatteki değişiklikleri mongodb02 makinesine al :
# mongooplog --from mongodb0.ab.org.tr --host mongodb02.ab.org.tr --seconds 3600

yararlı komutlar:

abrep1:PRIMARY> rs.printReplicationInfo()
configured oplog size:   1024MB
log length start to end: 67144secs (18.65hrs)
oplog first event time:  Sun Feb 01 2015 15:34:43 GMT+0200 (EET)
oplog last event time:   Mon Feb 02 2015 10:13:47 GMT+0200 (EET)
now:                     Mon Feb 02 2015 10:44:59 GMT+0200 (EET)
---
abrep1:PRIMARY> rs.printSlaveReplicationInfo()
source: centos4.ab.org.tr:27017
        syncedTo: Mon Feb 02 2015 10:13:47 GMT+0200 (EET)
        0 secs (0 hrs) behind the primary
source: centos5.ab.org.tr:27017
        syncedTo: Mon Feb 02 2015 10:13:47 GMT+0200 (EET)
        0 secs (0 hrs) behind the primary

Hiç yorum yok:

Yorum Gönder