Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MongoDB'deki parçalar arasındaki veri geçişinin ilerlemesini nasıl izleyebilirim


MongoDB'deki parçalar arasındaki veri geçişinin ilerlemesini nasıl izleyebilirim


MongoDB'deki parçalar arasındaki veri göçünün ilerlemesinin izlenmesi, MongoDB'nin parçalanmış kümeleri nasıl yönettiğinin çeşitli yönlerini, dengeleyici sürecinin davranışını ve yığın göçlerini izleme mekanizmalarını ve kümenin genel sağlığını anlamayı içerir.

MongoDB Parçası, yatay ölçeklemeyi desteklemek için verileri birden fazla parçaya dağıtır. Verilerin parçalar arasında göçü, öncelikle MongoDB dengeleyici tarafından otomatik olarak yönetilen veya manuel olarak tetiklenebilen yığın geçişleri yoluyla gerçekleşir. Bu geçiş sürecinin izlenmesi, kümedeki performans, kullanılabilirlik ve dengeli veri dağılımını sağlamak için çok önemlidir.

MongoDB Kırpma ve Dengeleyiciyi Anlamak

Kırık bir kümede MongoDB verileri parçalara ayırır. Bu parçalar, parçalara göre parçalara dağıtılır. Dengeleyici, yapılandırma sunucusu çoğaltma kümesinin birincilinde çalışan ve parçalar arasında dengeyi korumak için veri dağılımını aktif olarak izleyen bir arka plan işlemidir. Dengeleyici, parçalar arasındaki veri boyutu farkı ile ilgili belirli eşiklere göre hangi parçaların ne zaman ve taşınması gerektiğine karar verir. Veri dağılımını eşit olarak sağlamak ve sorgu performansını optimize etmek için geçiş oluşur.

Dengeleyici şeffaf olarak çalışır, ancak gerektiğinde yapılandırılabilir veya devre dışı bırakılabilir. Parçaları kontrollü bir şekilde göç eder, performans üzerindeki etkiyi en aza indirmek için bir seferde sadece bir göçe izin verir. Yüksek dengesizlik koşulları altında (örneğin, parçalar arasındaki veri boyutu farkı bir eşiği aştığında  varsayılan olarak, yapılandırılmış yığın boyutunun üç katı), geçiş tetiklenir.

Dengeleyici ve Geçiş Durumunu Kontrol Etme

Kısa göçlerin ilerlemesini izlemek için çeşitli komutlar ve günlük denetimleri yararlıdır:

- sh.status () veya db.printShardingStatus (): Bu komutlar, her bir parçalanmış koleksiyon için parçalar arasında yığın dağılımı da dahil olmak üzere parçalama durumuna genel bir bakış sağlar. Doğrudan göç ilerlemesi yüzdesi vermese de, sağladıkları yığın dağıtım bağlamı, verilerin ne kadar dengeli olduğunu ve geçişlerin devam edip etmediğini anlamak için bir vekil olarak hizmet edebilir.

- Dengeleyici etkinlik günlükleri: Dengeleyici, yapılandırma sunucularının ve Mongos örneklerinin günlüklerinde yığın geçişleri de dahil olmak üzere etkinliklerini kaydeder. Bu günlüklerin izlenmesi, kaynak ve hedef parçalarıyla birlikte hangi parçaların taşındığını ve göçler sırasında meydana gelen hata veya gecikmeleri ortaya çıkarabilir.

- Mevcut Geçişler: MongoDB, bir seferde bir göçle bir parçayı sınırlar, ancak çoklu parçalarla, paralel küme genişliğinde (parçaların yarısına kadar) birkaç göç çalıştırabilir. Aktif geçişleri gözlemlemek, dengeleyici günlüklerini inceleyerek veya geçiş kilitlerini ve geçişle ilgili sayaçları görmek için yapılandırma sunucusundaki yönetim komutlarını kullanarak dolaylı olarak yapılabilir.

İzleme için komutlar ve metrikler

- BalancerStatus komutu: `sh.getbalancerState ()` veya kümeyi dengeleyici etkinliğini ortaya çıkaran komutlarla denetlemek, dengeleyicinin etkin olup olmadığını veya şu anda etkin olup olmadığını görmeye yardımcı olur.

- ChunkmigrationlockTimeout Sayısı: MongoDB, göçmenlik sorunlarını veya performans şişelemelerini gösterebilecek kilitler nedeniyle yığın geçişlerinin zaman aşımına uğrayacağını anlamak için `ShardingStatistics.CountdonOmaRoCheckunklockTimeout` gibi belirli metrikleri izler.

- Mongos ConnpoolStats Komutu: Mongos örneğinden `db.runcommand ({connpoolstats: 1}) kullanarak parçalara bağlantıların izlenmesi, geçişlerin kısım primerlerinde daha fazla bağlantı kullanımına veya darboğazlara neden olup olmadığını kontrol etmeye yardımcı olur. Bağlantı istatistikleri yük dağılımını gösterir.

- Kırp başına veri boyutunun izlenmesi: Config veritabanının Shard meta verilerini sorgulayarak, parçalanma başına atanan parçaların boyutunu ve sayısını kontrol edilebilir. Büyük bir tutarsızlık, devam eden göç veya dengesizlik önermektedir.

Manuel Geçiş İzleme

Manuel yığın geçişleri `movechunk 'veya` moverange' gibi komutlar kullanılarak tetiklendiğinde, geçiş tamamlanana kadar işlem engeller. Bu eşzamanlı davranış, göç başarısının veya başarısızlığın derhal doğrulanmasına izin verir. Bununla birlikte, dengeleyici tarafından yönetilen daha uzun süredir devam eden otomatik göçler için MongoDB tarafından doğrudan ilerleme yüzdesi ortaya çıkmaz.

Geçiş adımları arasında `sh.status () 'yoluyla tekrarlanan durum kontrollerini kullanmak, kaynak parçasındaki parçalardaki azalmayı ve hedef parçadaki artışı gözlemleyerek ilerlemeyi çıkarmaya yardımcı olur.

Araçlar ve Gösterge Tabloları

Yönetilen bulut hizmeti MongoDB Atlas, durumları ve tarihsel göçler de dahil olmak üzere, göçleri görsel olarak izlemek için bir geçiş ana ekranı sağlar. Bu arayüz atlas ortamlarında izlenmeye yardımcı olabilir.

Kendini yöneten dağıtımlarda, yöneticiler genellikle MongoDB'nin MMS (MongoDB yönetim hizmeti) veya MongoDB günlüklerini ve metriklerini (örn. Grafana ile Prometheus) ayrıştıran üçüncü taraf araçlarını kullanarak izleme panoları oluşturur. Bu kurulumlar, dengeleyici etkinliği, yığın geçişleri, disk kullanımı ve ağ verimi ile ilgili metrikleri izleyebilir, bu da hepsi dolaylı olarak göç ilerlemesini gösterir.

Yetim belgeleri taşıma ve geçiş sırasında tutarlılığı okuma

Yığın göçü sırasında, göç eden yığıntaki belgeler hedef parçaya kopyalanır ve doğrulandıktan sonra, kaynak parçasındaki belgeler temizlenene kadar yetim olarak işaretlenir. Bu temizleme gecikmesi (`orphancleanupdelaysecs '), devam eden sorguların etkilenmemesini sağlamak için tasarlanmıştır.

İkincil okumalardaki kaçırılan belgeleri izlemek önemlidir, çünkü geçiş sırasında ikincil okumalar, sorgular taşınan aralıklara yayılırsa belgeleri kaçırabilir. Göç ilerlemesini değerlendirirken ve okuma tutarlılığını değerlendirirken bu davranışın farkındalığı esastır.

İzleme adımlarının özeti

1. Kırpma durumunu kontrol edin: Yığın dağılımını izlemek için düzenli olarak `sh.status ()` kullanın.
2. Dengeleyici durumunu inceleyin: dengenin etkin olduğunu ve `sh.getbalancerstate ()` aracılığıyla etkin olduğunu doğrulayın.
3. Monitör günlükleri: Mongos ve yapılandırma sunucularında dengeleyici ve geçişle ilgili günlükleri izleyin.
4. Parça sayımları izleyin: Shard başına parçaları gözlemlemek için veritabanı meta veri koleksiyonlarını (`config.chunks 'gibi) sorgu.
5. Bağlantı istatistiklerini inceleyin: Geçiş sırasında olağandışı bağlantı artışlarını tespit etmek için `connpoolstats 'kullanın.
6. Geçiş kilitlerini ve metriklerini izleyin: Metriklerde göç zaman aşımlarını veya kilitleme sorunlarını belirleyin.
7. Manuel komutlar: Kontrollü geçiş ve senkron geri bildirim için `movechunk` veya` moverange 'kullanın.
8. İzleme araçlarından yararlanın: Atlas geçiş ekranlarını veya özel izleme panolarını kullanın.
9. Göç Etkisini Anlayın: Yetim belge temizliğini ve olası ikincil okuma tutarsızlıklarını hesaplayın.

Bu yollarla yöneticiler, MongoDB'deki parçalar arasındaki veri geçişinin ilerlemesini etkili bir şekilde izleyebilir ve ölçebilir, bu da sorunsuz denge işlemleri ve optimize edilmiş küme performansı sağlar. Bu izleme, geçişlerin önemli zaman ve ağ bant genişliği alabileceği ve uygulama performansını ve kullanılabilirliğini doğrudan etkileyebileceği büyük kümeler için kritiktir.