MongoDB Replica Set Nedir? Avantajları Nelerdir? MongoDB Replica Set Kurulumu

mongodbreplicaset_mshowto212

MongoDB Replica Set Nedir? Avantajları Nelerdir?

Replica set, master-slave replikasyonu ve aralarında yapılandırılmış bir otomatik yük devretme ile çoklu düğümlerden oluşan veri tabanı kümesini tanımlamak için kullanılan bir terimdir.

MongoDB Replica Set veri tabanının yedekli olmasını sağlar ve farklı veri tabanı sunucularında birden çok veri kopyasıyla veri kullanılabilirliğini artırır. Çoğaltma ayrıca donanım arızalarından ve hizmet kesintilerinden kurtulmanıza da olanak tanır.

Replica Set için iki veya daha fazla üye olması gerekmektedir.

Çoğaltma kümesinde yalnızca bir birincil düğüm olabilir.

Tüm veriler birincilden ikincil düğüme kopyalanır.

Başarısız olan düğümün kurtarılmasından sonra, tekrar replika kümesine katılır ve ikincil bir düğüm olarak çalışır.

Verilerin ek kopyalarıyla, birini felaket kurtarma, raporlama veya yedeklemeye ayırabilirsiniz.

Resim-1

MongoDB Replica Set Kurulumu

Replica Set kurulumuna geçmeden önce MongoDB sisteminizde kurulu olması gerekmektedir.

Eğer sisteminizde MongoDB kurulu değilse bir önceki yazımıza göz atabilirsiniz. MongoDB Nedir? Avantajları ve Dezavantajları, CentOS 7 Üzerinde MongoDB Kurulumu, Default Port Değiştirme

MongoDB kurulu olan sistemde config dosyası default oluşmaktadır. Linux tabanlı sistemlerde “/etc/” dizini altında bulunmaktadır.

cd /etc/ komutu ile etc dizinine gidiyoruz.

etc dizininde bulunan “mongod.conf” dosyasını “cp” komutu ile kopyalayarak “/etc/mongod2.conf” hedef dizini ve dosya adını (mongod2.conf) olarak veriyoruz.

Aynı şekilde “mongod3.conf” dosyasını oluşturuyoruz.

cd /etc/
cp mongod.conf /etc/mongod2.conf
cp mongod.conf /etc/mongod2.conf

Resim-2

Replica Set için hali hazırda gelen config dosyası dışında 2 adet config dosyası oluşturmuş olduk. “vi” veya başka editör ile yapılandırma ayarlarımızı yapabiliriz.

vi /etc/mongod.conf

Config dosyasında dikkat edilmesi gerekenler;

  1. Log dosyasının yazılacağı dizin:

    path: /var/log/mongodb/mongod.log

  2. Veri tabanı dosya dizini:

    dbPath: /var/lib/mongo

  3. Port Ayarı: Replica Set kurulumu yapacağımız için 3 farklı node olacaktır ve portlar birbirinden farklı olması gerekir.

    port: 27017

  4. IP Adres: ilk kurulumda “bindIp: 127.0.0.1” şeklinde gelmektedir. Lokal dışından erişim sağlanacağı için sunucunun ip adresini vermemiz gerekiyor.

    bindIp: 192.168.1.14

  5. En önemlisi olan “replication” ayarı:

    replication:

    replSetName: replica-adı

Örnek yapılandırma ayarları aşağıdadır;

# mongod.conf
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
  bindIp: 192.168.1.14 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
#security:
#operationProfiling:
replication:
  replSetName: testreplica
#sharding:
## Enterprise-Only Options
#auditLog:

Aynı yapılandırma işlemlerini diğer dosyalar üzerinde yapmamız gerekmektedir.

Yapılandırmaya geçmeden önce dikkat edilmesi gereken noktalardan bahsetmek istiyorum.

Log dosyası, Port ve Veri tabanı dizini farklı olmalıdır. Aynı olursa ilk yapılandırdığımız dosyasının üzerine yazmaya çalışacağı için hata verecektir.

DbPath dizininde mongo2 klasörü olmadığı için oluşturup yetki vermemiz gerekiyor;

mkdir /var/lib/mongo2
sudo chown -R mongod:mongod /var/lib/mongo2/

Mongo2 klasörünü oluşturduktan sonra yapılandırma ayarlarına geçebiliriz.

vi /etc/mongod2.conf

path: /var/log/mongodb/mongod2.log

dbPath: /var/lib/mongo2

port: 27018

replication:

replSetName: testreplica

Mongo3 klasörünü oluşturuyoruz ve yapılandırma ayarlarına geçiyoruz.

vi /etc/mongod3.conf

path: /var/log/mongodb/mongod3.log

dbPath: /var/lib/mongo3

port: 27019

replication:

replSetName: testreplica

3 dosyayı da düzenledikten sonra MongoDB uygulamasını çalıştırabiliriz. Aşağıdaki komutlar ile her bir veri tabanını çalıştırıyoruz.

mongod -config /etc/mongod.conf
mongod -config /etc/mongod2.conf
mongod -config /etc/mongod3.conf

Resim-3

Veri tabanlarının ne durumda olduğunu görmek için “ps aux | grep mongod” komutunu çalıştırabiliriz.

Ek olarak kullanılan portları görmek için “netstat –tulp” komutunu kullanabiliriz.

Resim-4

Veri tabanları çalışır durumda olduğuna göre Replica Set yapılandırmasına geçebiliriz.

“mongo -host 192.168.1.14 -port 27017” komutu ile Primary (Birincil) veri tabanına bağlanıyoruz.

Replica Set ortamını aktif hale getirmek için bağlanmış olduğumuz MongoDB konsolunda aşağıdaki komutu çalıştırıyoruz.

rs.initiate()

Bu komutu çalıştırdıktan sonra yapılandırma dosyasında verdiğimiz “testreplica” replica adı gelecektir.

Resim-5

Diğer veri tabanlarına bağlanmadan Primary (Birincil) üzerinden yapılandırmaya devam ediyoruz.

Aşağıdaki komut ile diğer veri tabanlarını ekliyoruz.

rs.add("192.168.1.14:27018")
rs.add("192.168.1.14:27019")

Not: Eğer hostname şeklinde eklemek isterseniz IP adresi yerine host adını yazabilirsiniz.

Replica Set için diğer üyeleri eklerken hata yok ise (“ok” : 1, ) çıktısını vermektedir.

Secondary olan MongoDB ortamına bağlanarak ReplicaSet durumunu kontrol ediyoruz.

mongo -host 192.168.1.14 -port 27018

Bağlantı sağladıktan sonra “testreplica:SECONDARY> ” olarak Shell ekranı bizi karşılayacaktır.

rs.status() komutu ile oluşturduğumuz Replica Set için durumu gözlemliyoruz.

Resim-6

Replica Set ortamı 1 Primary ve 2 Secondary olarak çalışır durumdadır.

Priority öncelik verme ayarı çok önemli bir konudur. Primary veri tabanı arızalandı veya erişim olmadığı gibi durumlarda 2 Secondary veri tabanından 1 tanesine Primary olması için üyelere öncelik verebiliriz.

cfg=rs.conf()
cfg.members[0].priority = 2
cfg.members[1].priority = 1
cfg.members[2].priority = 1
rs.reconfig(cfg)

Örnek olarak üye1 için 0.5, üye2 için 1, üye3 için 0.5 değerini verirsek üye2 Primary olacaktır.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

http://www.mshowto.org/

TAGs: MongoDB Replica Set Nedir, MongoDB Replica Set Avantajları, MongoDB Replica Set Kurulumu, Replica Set Priority Ayarları, Replica Set 3 Member, Replica Set Primary

Yazı gezinmesi

Mobil sürümden çık