1. Touchconfig.conf içi boş bir dosya yarat
Sudo vim config.conf düzenle
CONFİG.CONF
Dbpath = /data/db
Bind_id = 127.0.0.1 -> istekleri hangi ip den
Port : 27017 hangi port tan
Config Dosyalarına şurdanhttp://docs.mongodb.org/manual/reference/configuration-options/
Smallfiles =>true yarattığı dosyalar 64 mb den daha küçük olacaktır.
Replication
http://docs.mongodb.org/manual/replication/
1.
Her bir sunucu 2 sn bir bir birlerine pingatarlar , 10sn den fazla atılmazsa sunucu iptal durumdadır. Secondarylerprimary ölmüştür der. Ping
atarken memorydurumu , makinanın durumu kendi primaryolabilirmi . Primary giderse aralarında karar verirler , hepsinin bir oy hakkı vardır.
Sunucularda çekimse oy yoktur. Ölen primary hayatınasecondary olarak devam eder.
2.
Çoğunluk secondary giderse , ?
3 tane datadir oluşturuldu. /data/db/rs0/rs0-1 ( 2 / 3 )
Replica Set oluşturmak için ve başlatmak içinhttp://docs.mongodb.org/manual/administration/replica-sets/
Linux :./mongod --replSet rs0 ( ad ) --dbpath /data/db/rs0/rs0-1 --port 27000 ( 27001,2002)
Windows :mongod --replSet rs0 --dbpath C: datadbrs0rs0-1 --port 27000
Burda –configvererek replSet vermeye gerek yok
2. Oluşturduğumuz replica setlerine bağlanmak için mongo - -port 27000
Primary Oluşturmak İçin ?Replica set oluşturup eklemek için
o mongo --port 27000 ( bir tanesi bağlandık , primary yapmak iiçin)
o conf = {_id:"rs0", members: [{_id:0, host:"127.0.0.1:27000"}]}
o rs.initiate(conf)
o rs.add(“”127.0.0.1:27001”)
o rs.status()
o rs.stepDown() hemen secondary ye döndü
o Secondarylerde okuma yazma yapamıyoruz. db.setSlaveOk(true) dersek SECONDARY de collectionslarıfelangörebiliriz. Önce hangi
veritabanına bağlanacağız
Daha sonra bu komutu kullanalımki hata vermesin.
o Her makinanın oy verme hakkını biz verebiliriz , fikir belirtmeme hakkı yok. Arbiterlarreplica setlerinde oy kullanmak için eklenir, çift sayılı
olması durumunda eklenir özellikle.http://docs.mongodb.org/manual/tutorial/add-replica-set-arbiter/ . Arbiter çok hafiftir , secondary veya
primary aynı makinada olabilir.
o Aşağıdaki işlemi Primary veya secondary de yapıyoruz.
Conf = rs.conf()
Conf.members[2].priority =.5
Conf.members[0].votes = 2
Rs.reconfig(conf) -- Secondary den confige izin vermiyor
Conf.members[0].arbiterOnly = true => herhangi bir primary veya secondaryi ( Son versiyonda secondary veya primary ise
değştiremiyrouz )
rs.addArb(“127.0.0.1:27017”) = >arbitary eklemek için
Arbitary başlatmak için ???
Conf.members*2+.priority = 0 ( primary olmasını istemediğimiz makinaya 0 veriyoruz )
Configuration Dosyam
o dbpath = c:datadb
o bind_ip = 127.0.0.1
o port = 27017
o replSet = rs0/127.0.0.1:27000 , 127.0.0.1:27001 , 127.0.0.1:27002
Config ile başlatmak için
o Mongod –port 23000 --config C:dataconfig.conf
3. OPLOG
>mongod -replSet rs0 --dbpath C:datadbrs0rs0-1 --port 27000 --smallfiles-–diaglog –-oplog 1
Yapılan işlemler log için.
SHARDİNG
MongoDB verdiğimiz şartlara göre read ve writeları makinalara gönderiyor.
Config sunucusu bulunur , Mongosconfig sunucusundan bilgileri çekiyor.
ShardKey en önemlisi .
Her uygulamaya bir Mongos.
3 tane config sunucusu bulunur.
Shardların içerisinde REPLİCA SET lerden oluşuyor. Ama Shardlar bir birinden bağımsızdır.
4.
cd C:datadbshard sonra sh0 , sh1 oluşturuldu
mongod –-configsvr –-dbpath C:datadbshardconfigdb --port 27000
mongos –-configdb 127.0.0.1:27000 ( mongosa senin config sunucun bu diyorum )
sonra bağlanıyorum >mongo diyorum ( eğer port default 27017 olmasaydı veririz )
bağlanınamongos> denemesi lazım
artık shardlamayabaşlayalım :
o sh.addShard(“127.0.0.1:27010”) eğer replica set ekleyeceksek ;
sh.addShard(“rs0/127.0.0.1:27001,127.0.0.1:27002,127.0.0.1:27003”)
db.adminCommand({addShard:”rs0/127.0.0.1:27001,127.0.0.1:27002,127.0.0.1:27003”})
o tekrar bağlandım mongo diyerek
o sh.status()
o sh.ebableSharding(“deneme”) hangi veritabanını yaptığıma bakıyorum.
o Sh.shardCollection(“deneme.User”,{“admin”:1,”username”:1})
Önce index le diye hata verir.
db.User.ensureIndex({"admin":1,"username":1})
configserveremongo –port 27000 ile bağlanıyorum
useconfig diyerek bağlandım.
Db.settings.find()
db.settings.save({'_id':'chunksize','value':1})
db.setttings.update({'_id':'balancer'},{$set:{activeWindow:{start:"15:00",stop:"15.05"}}},true)
SECURİTY
db.getSiblingDB("admin")
5. db.addUser({user:"ertugrul",pwd:"ertugrul",roles:["userAdminAnyDatabase"]})
opensslrand –base64 741
config Dosyası>mongod –config [config_path]
o dbpath = c:datadb
o bind_ip = 127.0.0.1 , 10.0.0.1 , 192.168.3.10
o port = 27017
o auth = true # eğer localhosten girenin admin olmasını istemiyorsak
o enableLocalhostAuthBypass = false # default u true dur
o #keyFile = /mongo/bin/key
o #fork = true
o logpath = /mongo/bin/mongod.log
o logappend = true
o journal = true
o slowms = 50
o profile = 2
o verbose = true
o vvvvv = true
o dialog = 0 , 1 ,2 , 3 , 7
BACKUP
Backup almak için
o mongodump --dbpath C:datadb --out C:databackup
o mongodump –host 127.0.0.1 –port 27017
o indexleribackup olarak almaz eğer sadece collectionbackup alacaksak. Ama bir database in alacaksak alır.
o mongorestore
db.copyDatabase(“deneme”,”deneme2”,”127.0.0.1”)
db.cloneDatabase(“127.0.0.1:27017”)