Monitorowanie postępu migracji danych między odłamkami w MongoDB polega na zrozumieniu kilku aspektów tego, jak MongoDB zarządza klastrami odłamkowymi, zachowanie procesu wyważającego oraz mechanizmy śledzenia migracji fragmentów i ogólne zdrowie klastra.
MongoDB Sharding rozpowszechnia dane w wielu odłamkach, aby obsługiwać skalowanie poziome. Migracja danych między odłamkami odbywa się przede wszystkim za pomocą migracji fragmentów, które są automatycznie zarządzane przez MongoDB Balancer lub mogą być ręcznie wyzwalane. Monitorowanie tego procesu migracji ma kluczowe znaczenie dla zapewnienia wydajności, dostępności i zrównoważonego rozkładu danych w klastrze.
Zrozumienie SHARDING MONGODB i BYLANCER
W klastrze odłamkowanym MongoDB podziela dane na fragmenty. Te fragmenty są dystrybuowane na odłamkach zgodnie z klawiszem odłamków. Balancer jest procesem tła, który działa w podstawowym zestawie repliki serwera konfiguracyjnego i aktywnie monitoruje dystrybucję danych w celu utrzymania równowagi między odłamkami. Balancer decyduje, kiedy i które fragmenty muszą być migrowane na podstawie określonych progów związanych z różnicą wielkości danych między odłamkami. Występuje migracja, aby zapewnić równomierne rozkład danych i optymalizować wydajność zapytania.
Balancer działa przejrzysty, ale może być skonfigurowany lub wyłączony w razie potrzeby. Migruje fragmenty w kontrolowany sposób, umożliwiając tylko jedną migrację na odłamek na raz, aby zminimalizować wpływ na wydajność. W warunkach wysokiej nierównowagi (np. Gdy różnica wielkości danych między odłamkami przekracza próg â, domyślnie, trzykrotnie skonfigurowany rozmiar porcji), migracja jest uruchamiana.
Sprawdzanie stalantu i statusu migracji
Aby monitorować postęp migracji odłamków, przydatne jest kilka poleceń i kontroli dziennika:
- sh.status () lub db.printshardingstatus (): Polecenia te zapewniają przegląd stanu odłamku, w tym rozkład fragmentu odłamków dla każdej kolekcji odłamkowej. Chociaż nie zapewniają bezpośredniego odsetka postępów migracji, dostarczany przez nich kontekst dystrybucji fragmentu może służyć jako proxy do zrozumienia, jak zrównoważone są dane i czy migracje są w toku.
- Balancer dzienniki aktywności: Balancer rejestruje swoje działania, w tym migracje fragmentów, w dziennikach serwerów konfiguracyjnych i instancji Mongos. Monitorowanie tych dzienników może ujawnić, które fragmenty są migrowane, wraz z odłamkami źródłowymi i docelowymi oraz wszelkie błędy lub opóźnienia występujące podczas migracji.
- Obecne migracje: MongoDB ogranicza odłamek do jednej migracji na raz, ale przy wielu odłamkach może uruchamiać kilka migracji równoległych w klastrze (do połowy liczby odłamków). Obserwowanie aktywnych migracji można wykonać pośrednio, sprawdzając dzienniki równoważenia lub używając poleceń administracyjnych na serwerze konfiguracji, aby zobaczyć zamki migracyjne i liczniki związane z migracją.
Polecenia i wskaźniki monitorowania
- Command Command: Uruchamianie `sh.getBalanCerstate ()` lub sprawdzanie klastra za pomocą poleceń ujawniających działalność równoważenia pomaga sprawdzić, czy równoważenie jest włączone lub aktualnie aktywne.
- ChunkmigrationLockTimeout Count: MongoDB śledzi określone wskaźniki, takie jak „ShardingStatistics.CountdonormoVechunktimeout`, aby zrozumieć, czy migracje fragmentów są czasowe z powodu blokad, które mogą wskazywać na problemy z migracją lub rozmieszczenie wydajności.
- Mongos Connpoolstats Polecenie: Monitorowanie połączeń z odłamkami za pomocą `db.runcommand ({connpoolstats: 1})` z instancji Mongos pomaga sprawdzić, czy migracje powodują zwiększone użycie połączenia lub wąskie geleki na podstawie podstawowych odłamków. Statystyki połączenia wskazują rozkład obciążenia.
- Monitorowanie wielkości danych na odłamek: Zapytanie o metadane odłamka bazy danych konfiguracji można sprawdzić rozmiar i liczbę przydzielonych fragmentów na odłamek. Duża rozbieżność sugeruje ciągłe migracje lub nierównowagę.
monitorowanie migracji ręcznej
Gdy manualne migracje porodu są uruchamiane przy użyciu poleceń takich jak `` movechunk 'lub `` moverange`, operacja blokuje się do momentu zakończenia migracji. To synchroniczne zachowanie umożliwia natychmiastowe potwierdzenie sukcesu migracji lub porażki. Jednak w przypadku dłuższych zautomatyzowanych migracji zarządzanych przez Balancera nie eksponuje bezpośredniego procentu postępu przez MongoDB.
Korzystanie z powtarzanych kontroli statusu za pośrednictwem `sh.status ()` między etapami migracji pomaga wnioskować postęp, obserwując spadek fragmentów na odłamku źródłowym i wzrost odłamka docelowego.
Narzędzia i pulpity nawigacyjne
MongoDB Atlas, zarządzana usługa chmury, zapewnia migrację ekranu głównego do śledzenia migracji wizualnie, w tym ich status i wszelkie migracje historyczne. Ten interfejs może pomóc w monitorowaniu środowisk Atlas.
We samodzielnych wdrożeniach administratorzy często konfigurują monitorowanie pulpitów nawigacyjnych przy użyciu narzędzi monitorowania MongoDB, takich jak MMS (MongoDB Management Service) lub narzędzia stron trzecich, które analizują dzienniki i wskaźniki MongoDB (np. Prometeus z Grafaną). Te konfiguracje mogą śledzić wskaźniki związane z aktywnością równoważenia, migracje fragmentów, używaniem dysku i przepustowością sieci, z których wszystkie pośrednio wskazują postęp migracji.
Obsługa dokumentów sierot i spójność odczytu podczas migracji
Podczas migracji fragmentu dokumenty w migrującym kawałku są kopiowane do odłamka docelowego, a po potwierdzeniu dokumenty na odłamku źródłowym są oznaczone jako osierocone do momentu wyczyszczenia. To opóźnienie oczyszczania („OrphancleanUpDelaysecs`) zostało zaprojektowane w celu zapewnienia, że nie dotyczy to ciągłych zapytań.
Ważne jest, aby monitorować wszelkie pominięte dokumenty w odczytach wtórnych, ponieważ odczyty wtórne podczas migracji mogą przegapić dokumenty, jeśli zapytania obejmują zakres migrujących. Świadomość tego zachowania jest niezbędna przy ocenie postępu migracji i spójności odczytu.
Podsumowanie kroków monitorowania
1. Sprawdź Status Sharding: Użyj `sh.status ()` regularnie, aby monitorować dystrybucję fragmentu.
2. Sprawdź stan Balancer: Weryfikacja Balancer jest włączona i aktywna za pośrednictwem „SH.GetBalanstate ()`.
3. Monitorowanie dzienników: Śledź dzienniki równoważenia i migracji w Mongos i serwerach konfiguracyjnych.
4. Tracka liczba porcji: Kolekcje metadanych bazy danych zapytania (takie jak `` config.chunks`) do obserwowania kawałków na odłamek.
5. Sprawdź statystyki połączenia: Użyj `connpoolstats`, aby wykryć nietypowe skoki połączeń podczas migracji.
6. Obserwuj zamki i wskaźniki migracji: Zidentyfikuj limity czasu migracji lub problemy z blokadą w wskaźnikach.
7. Polecenia ręczne: Użyj `movechunk` lub` `Moverange 'do kontrolowanej migracji i synchronicznego sprzężenia zwrotnego.
8. Narzędzia monitorowania dźwigni: Użyj ekranów migracji Atlas lub niestandardowych pulpitów nawigacyjnych.
9. Zrozumienie wpływu migracji: rozliczanie oczyszczania dokumentów sierot i możliwych niespójności odczytu wtórnego.