MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Przewodnik po konfigurowaniu systemu równoważenia obciążenia w klastrze z fragmentacją MongoDB

Dla każdej bazy danych równoważenie obciążenia wszystkich żądań pochodzących od klientów jest ważnym i podstawowym mechanizmem zapewniającym skalowalność. Właściwe rozwiązanie do równoważenia obciążenia rozkłada wszystkie żądania klientów równomiernie na wszystkie zasoby bazy danych. Jeśli klaster bazy danych nie jest chroniony za pomocą odpowiedniego rozwiązania do równoważenia obciążenia, Twoja baza danych nie będzie w stanie obsłużyć zwiększonego obciążenia ruchem na nim.

Na szczęście MongoDB zapewnia wbudowaną obsługę równoważenia obciążenia dużego ruchu poprzez obsługę skalowania poziomego poprzez sharding. Możesz dystrybuować dane swoich kolekcji na wielu serwerach za pomocą fragmentowania. Możesz także dodać nowe serwery/maszyny do klastra, aby obsłużyć zwiększony ruch w bazie danych. Możesz postępować zgodnie z tym przewodnikiem, aby przekonwertować klaster replik MongoDB na klaster shardingu.

W tym artykule dowiemy się o zachowaniu procesu równoważenia, który działa w klastrach sharded MongoDB i jak zmodyfikować jego zachowanie. Proces równoważenia MongoDB dba o równomierne rozłożenie kolekcji we shardach. Na przykład jeśli jeden fragment klastra zawiera zbyt wiele fragmentów kolekcji podzielonej na fragmenty, ten konkretny fragment może odbierać większy ruch w porównaniu z innymi fragmentami. W związku z tym proces równoważenia prawidłowo równoważy porcje kolekcji we fragmentach. W większości wdrożeń MongoDB domyślne konfiguracje procesu równoważenia są wystarczające do normalnych operacji. Jednak w niektórych sytuacjach administratorzy baz danych mogą chcieć zmienić domyślne zachowanie tego procesu. Jeśli chcesz zmodyfikować domyślne zachowanie procesu wyważania dla dowolnych potrzeb na poziomie aplikacji lub wymagań operacyjnych, możesz postępować zgodnie z tym przewodnikiem.

Zacznijmy od kilku podstawowych poleceń, aby uzyskać informacje o stanie i statusie procesu równoważenia.

Stan wyważarki

To polecenie sprawdza, czy balancer jest włączony lub dozwolony, czy nie. Jeśli proces równoważenia nie jest uruchomiony, to polecenie zwróci false. To nie sprawdzi, czy proces równoważenia jest uruchomiony, czy nie.

sh.getBalancerState()

Włącz proces równoważenia

Jeśli balanser nie jest domyślnie włączony, możesz go włączyć, uruchamiając następujące polecenie. To polecenie nie uruchomi procesu równoważenia, ale włączy ten proces i zapewni, że równoważenie porcji nie zostanie zablokowane, gdy proces równoważenia zostanie uruchomiony następnym razem.

sh.enableBalancing(<collection_name/namespace>)

Wyłącz proces równoważenia

Proces równoważenia jest domyślnie uruchamiany w dowolnym momencie. Dlatego jeśli chcesz wyłączyć proces równoważenia na określony czas, możesz użyć następującego polecenia. Jednym z idealnych scenariuszy użycia tego polecenia jest wykonanie kopii zapasowej bazy danych.

sh.stopBalancer()

Upewnij się, że proces równoważenia został zatrzymany przed wykonaniem kopii zapasowej. Jeśli proces jest włączony podczas tworzenia kopii zapasowej bazy danych, możesz otrzymać niespójną replikę bazy danych. Może się to zdarzyć, gdy proces równoważenia przenosi niektóre porcje przez shardy w celu równoważenia obciążenia podczas procesu tworzenia kopii zapasowej.

Możesz również wyłączyć równoważenie w niektórych określonych kolekcjach, podając pełną przestrzeń nazw kolekcji jako parametr za pomocą następującego polecenia.

sh.disableBalancing("<db_name>.<collection_name>")

Stan pracy wyważarki

To polecenie sprawdza, czy proces równoważenia jest uruchomiony, czy nie. Sprawdza również, czy aktywnie zarządza fragmentami shardingu, czy nie. Zwraca prawdę, jeśli proces działa, w przeciwnym razie zwraca fałsz.

sh.isBalancerRunning()

Domyślne konfiguracje rozmiaru porcji

Domyślnie rozmiar fragmentu w dowolnym klastrze z fragmentacją MongoDB wynosi 64 MB. W większości scenariuszy jest to wystarczające do migracji lub dzielenia fragmentów podzielonych na fragmenty. Czasami jednak normalny proces migracji obejmuje więcej operacji we/wy, niż może przetworzyć sprzęt. W tego typu sytuacjach możesz chcieć zmniejszyć rozmiar porcji. Możesz to zrobić, uruchamiając następujący zestaw poleceń.

use config

db.settings.save( { _id:"chunksize", value: <sizeInMB> } )

Jeśli zmienisz domyślny rozmiar porcji w klastrze podzielonym na fragmenty, pamiętaj o następujących rzeczach

  • Możesz określić rozmiar fragmentu tylko od 1 do 1024 MB
  • Automatyczne dzielenie nastąpi tylko podczas wstawiania lub aktualizacji
  • Mniejsze rozmiary porcji doprowadzą do dłuższego czasu podczas procesu dzielenia.

Zaplanuj równoważenie na określony czas

Gdy rozmiar bazy danych jest ogromny, procesy równoważenia lub migracji mogą mieć wpływ na ogólną wydajność bazy danych. Dlatego rozsądnie jest zaplanować proces równoważenia w określonym oknie czasowym, gdy obciążenie bazy danych jest bardzo mniejsze. Możesz użyć następujących poleceń, aby ustawić okno czasowe dla uruchomienia procesu równoważenia.

use config

db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } }, true )

Przykład

Kolejne polecenie ustawi okno czasowe od 1:00 do 5:00 rano dla uruchomienia procesu równoważenia.

db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "01:00", stop : "05:00" } } }, true )

Upewnij się, że podane ramy czasowe są wystarczające do pełnego procesu równoważenia.

Możesz również usunąć istniejące okno czasowe procesu równoważenia, uruchamiając następujące polecenie.

db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })

Oprócz powyższych poleceń, możesz także zmienić zachowanie replikacji podczas procesu migracji porcji, używając parametru _secondaryThrottle. Możesz również użyć właściwości _waitForDelete z poleceniem moveChunk, aby poinformować proces równoważenia, aby poczekał na fazę usuwania bieżącej migracji przed rozpoczęciem nowej fazy migracji porcji.

Wnioski

Mamy nadzieję, że to wszystko, czego potrzebujesz podczas zmiany domyślnego zachowania procesu równoważenia MongoDB. Równoważenie jest bardzo ważnym aspektem każdego klastra podzielonego na fragmenty MongoDB. Tak więc, jeśli znasz szczegółowo proces równoważenia, bardzo łatwo jest zmodyfikować domyślne zachowanie procesu równoważenia zgodnie z twoimi potrzebami i przypadkami użycia.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ustaw pole jako puste dla obiektu mongo za pomocą mongoose

  2. Jak usunąć n-ty element tablicy w mongodb

  3. Wywołać funkcję w agregacie mongodb?

  4. Proste planowanie konserwacji okien w klastrach baz danych

  5. MongoDB $replaceOne