Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon W jaki sposób MongoDB obsługuje migrację danych między fragmentami


W jaki sposób MongoDB obsługuje migrację danych między fragmentami


MongoDB obsługuje migrację danych pomiędzy fragmentami w procesie równoważenia. Moduł równoważenia jest odpowiedzialny za zapewnienie równomiernego rozmieszczenia danych w fragmentach w klastrze podzielonym na fragmenty. Oto kroki związane z migracją danych między fragmentami:

1. Równowaga

- Automatyczne równoważenie: MongoDB automatycznie równoważy dane, migrując fragmenty z jednego fragmentu do drugiego. Dzięki temu dane są równomiernie rozmieszczone w fragmentach.

2. Migracja fragmentów

- Ręczna migracja: MongoDB może przeprowadzić ręczną migrację fragmentów dla określonych kolekcji. Jest to przydatne do dystrybucji danych podczas wstawiania zbiorczego.

3. Migracja zakresu

- Automatyczna migracja zakresów: MongoDB migruje dane o jeden zakres na raz. Moduł równoważenia nie czeka na zakończenie fazy usuwania bieżącej migracji przed rozpoczęciem kolejnej migracji zakresu.

4. Ponowne dzielenie

- Technika Reshard-to-Shard: MongoDB wykorzystuje resharding do szybkiego rozprzestrzeniania danych pomiędzy fragmentami w klastrze. Polega to na celowym podzieleniu na tymczasowy klucz fragmentu, który różni się od pożądanego klucza fragmentu, a następnie ponownym podzieleniu na żądany klucz fragmentu.

5. Procedura migracji fragmentów

- Odłamek źródłowy: Odłamek źródłowy rozpoczyna ruch po otrzymaniu wewnętrznego polecenia. Podczas procesu migracji operacje wykonywane na fragmencie są wysyłane do fragmentu źródłowego.

- Fragment docelowy: Fragment docelowy tworzy wszelkie indeksy wymagane przez źródło, które nie istnieją w miejscu docelowym. Fragment docelowy zaczyna żądać dokumentów w fragmencie i zaczyna otrzymywać kopie danych.

- Synchronizacja: Po otrzymaniu ostatecznego dokumentu we fragmencie docelowy fragment rozpoczyna proces synchronizacji, aby upewnić się, że zawiera zmiany w migrowanych dokumentach, które nastąpiły podczas migracji.

- Aktualizacja metadanych: fragment źródłowy łączy się z bazą danych konfiguracji i aktualizuje metadane klastra o nową lokalizację fragmentu.

- Faza usuwania: Po zakończeniu aktualizacji metadanych przez fragment źródłowy i gdy na fragmencie nie ma otwartych kursorów, fragment źródłowy usuwa swoją kopię dokumentów[3] [5].

6. Duże kawałki

- Duże porcje: Jeśli porcja przekracza maksymalny rozmiar lub liczba dokumentów w porcji przekracza dozwolone maksimum, MongoDB nie migruje porcji. Zamiast tego MongoDB próbuje podzielić fragment. Jeśli podział się nie powiedzie, MongoDB oznacza porcję jako dużą, aby uniknąć powtarzających się prób migracji porcji[3].

7. Monitorowanie i konserwacja

- Monitorowanie: MongoDB zapewnia narzędzia do monitorowania procesu równoważenia i zapewnia równomierne rozłożenie danych pomiędzy fragmentami.

- Konserwacja: MongoDB udostępnia polecenia do zarządzania modułem równoważącym i zapewnienia, że ​​migracja danych będzie wydajna i skalowalna.

Wniosek

MongoDB obsługuje migrację danych pomiędzy fragmentami poprzez proces równoważenia, który zapewnia równomierną dystrybucję danych pomiędzy fragmentami w klastrze podzielonym na fragmenty. Moduł równoważący migruje dane o jeden zakres na raz, a MongoDB udostępnia narzędzia do monitorowania i zarządzania procesem równoważenia.

Cytaty:
[1] https://stackoverflow.com/questions/48438644/migration-data-between-shards-with-mongodb
[2] https://hackernoon.com/optimize-data-migration-in-mongodb-resharding-techniques-for-speed-and-scalability
[3] https://www.mongodb.com/docs/v3.0/core/sharding-chunk-migration/
[4] https://www.mongodb.com/community/forums/t/shard-migration-leads-to-service-disruption/247228
[5] https://www.mongodb.com/docs/v6.2/core/sharding-balancer-administration/