MongoDB Çoğaltma nedir?
Çoğaltma, aynı verilerin birden fazla Mongo DB Sunucusunda mevcut olmasını sağlama sürecine atıfta bulunur. Bu bazen veri kullanılabilirliğini artırmak amacıyla gereklidir.
Çünkü ana MongoDB Sunucunuz herhangi bir nedenle çökerse, verilere erişim olmayacaktır. Ancak verileri düzenli aralıklarla başka bir sunucuya kopyaladıysanız, birincil sunucu başarısız olsa bile başka bir sunucudan verilere erişebileceksiniz.
Çoğaltmanın bir başka amacı da yük dengeleme olasılığıdır. Sisteme bağlanan çok sayıda kullanıcı varsa, herkesin tek bir sisteme bağlanması yerine, kullanıcılar birden fazla sunucuya bağlanabilir, böylece yük eşit bir şekilde dağıtılabilir.
MongoDB'de, birden çok MongDB Sunucusu, Replica setleri adı verilen kümeler halinde gruplandırılır. Replica set, istemcilerden gelen tüm yazma işlemlerini kabul edecek bir birincil sunucuya sahip olacaktır. Bundan sonra kümeye eklenen diğer tüm örnekler, birincil olarak tüm okuma işlemleri için kullanılabilen ikincil örnekler olarak adlandırılacaktır.
Bu eğitimde öğreneceksiniz -
- Replica Set: rs.initiate () kullanarak İlk Üyeyi Ekleme
- Replica Set: rs.add () kullanarak bir İkincil Ekleme
- Replica Set: rs.remove () kullanarak Yeniden Yapılandırma veya Kaldırma
- Çoğaltma Kümelerinde Sorun Giderme
Replica Set: rs.initiate () kullanarak İlk Üyeyi Ekleme
Önceki bölümde bahsedildiği gibi, replikasyonu etkinleştirmek için öncelikle MongoDB örneklerinin bir replika setini oluşturmamız gerekiyor.
Örneğimiz için SunucuA, SunucuB ve SunucuC adında 3 sunucumuz olduğunu varsayalım. Bu yapılandırmada, SunucuA Birincil sunucumuz olacak ve SunucuB ve SunucuC ikincil sunucularımız olacaktır. Aşağıdaki ekran görüntüsü bu konuda daha iyi bir fikir verecektir.
Sete ilk üyenin eklenmesi ile birlikte replika setinin oluşturulması için izlenmesi gereken adımlar aşağıdadır.
Adım 1) Çoğaltma kümesine eklenecek tüm mongod.exe örneklerinin farklı sunuculara yüklendiğinden emin olun. Bu, bir sunucu çökse bile diğerlerinin kullanılabilir olmasını ve dolayısıyla diğer MongoDB örneklerinin de kullanılabilir olmasını sağlamak içindir.
Adım 2) Tüm mongo.exe örneklerinin birbirine bağlanabildiğinden emin olun. ServerA'dan aşağıdaki 2 komutu verin
mongo -host ServerB -port 27017
mongo -host ServerC -port 27017
Benzer şekilde, kalan sunucularda da aynı şeyi yapın.
Adım 3) İlk mongod.exe örneğini replSet seçeneğiyle başlatın. Bu seçenek, bu eşleme kümesinin parçası olacak tüm sunucular için bir gruplama sağlar.
mongo -replSet "Replica1"
"Replica1", replika kümenizin adıdır. Çoğaltma kümesi adınız için herhangi bir anlamlı ad seçebilirsiniz.
Adım 4) Artık ilk sunucu replika kümesine eklendiğine göre, bir sonraki adım aşağıdaki rs.initiate () komutunu vererek replika setini başlatmaktır.
Adım 5) Çoğaltmanın doğru şekilde kurulduğundan emin olmak için rs.conf () komutunu vererek çoğaltma kümesini doğrulayın
Replica Set: rs.add () kullanarak bir İkincil Ekleme
İkincil sunucular, yalnızca rs.add komutu kullanılarak kopya kümesine eklenebilir. Bu komut ikincil sunucuların adını alır ve sunucuları çoğaltma kümesine ekler.
Adım 1) Varsayalım ki, çoğaltma kümenizin bir parçası olması gereken SunucuA, SunucuB ve SunucuC'ye sahipseniz ve SunucuA, çoğaltma kümesinde birincil sunucu olarak tanımlanır.
Çoğaltma kümesine ServerB ve ServerC eklemek için komutları verin
rs.add("ServerB")rs.add("ServerC")
Replica Set: rs.remove () kullanarak Yeniden Yapılandırma veya Kaldırma
Bir sunucuyu yapılandırma kümesinden çıkarmak için "rs.remove" komutunu kullanmamız gerekir
Adım 1) Önce kaldırmak istediğiniz örneği kapatın. Bunu, mongo kabuğundan db.shutdownserver komutunu vererek yapabilirsiniz.
Adım 2) Birincil sunucuya bağlanın
Adım 3) Gerekli sunucuyu çoğaltma kümesinden kaldırmak için rs.remove komutunu kullanın. Öyleyse, SunucuA, SunucuB ve SunucuC ile bir eşleme kümeniz varsa ve eşleme kümesinden SunucuC'yi kaldırmak istiyorsanız, şu komutu verin:
rs.remove("ServerC")
Çoğaltma Kümelerinde Sorun Giderme
Aşağıdaki adımlar, çoğaltma kümelerinin kullanımıyla ilgili sorunlarla karşılaşıldığında sorun giderme işlemlerinin aynısıdır.
- Tüm mongo.exe örneklerinin birbirine bağlanabildiğinden emin olun. SunucuA, SunucuB ve SunucuC adında 3 sunucunuz olduğunu varsayalım. Sunucudan A, aşağıdaki 2 komutu verin
mongo -host ServerB -port 27017mongo -host ServerC -port 27017
- Rs.status komutunu çalıştırın. Bu komut, kopya kümesinin durumunu verir. Varsayılan olarak, her üye birbirlerine, yalnızca sunucunun canlı ve çalıştığını belirten "kalp atışı" mesajı adı verilen mesajlar gönderir. "Durum" komutu, bu mesajların durumunu alır ve eşleme kümesindeki herhangi bir üyeyle ilgili herhangi bir sorun olup olmadığını gösterir.
- Oplog'un boyutunu kontrol edin - Oplog, MongoDB veritabanına yapılan yazma geçmişini saklayan bir MongoDB koleksiyonudur. MongoDB daha sonra yazma işlemlerini kopya kümesindeki diğer üyelere çoğaltmak için bu Oplog'u kullanır. Oplog'u kontrol etmek için, gerekli üye örneğine bağlanın ve rs.printReplicationInfo komutunu çalıştırın. Bu komut, günlüğün boyutunu ve dolmadan önce günlük dosyasında işlemleri ne kadar süre tutabileceğini gösterecektir.
Özet: