Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak MongoDB zpracovává migraci dat mezi shardy


Jak MongoDB zpracovává migraci dat mezi shardy


MongoDB zpracovává migraci dat mezi fragmenty prostřednictvím procesu balanceru. Balancér je zodpovědný za zajištění, že data jsou rovnoměrně rozložena mezi fragmenty ve sdíleném clusteru. Zde jsou kroky spojené s migrací dat mezi fragmenty:

1. Vyvažování

- Automatické vyvažování: MongoDB automaticky vyrovnává data migrací kousků z jednoho fragmentu do druhého. Tím je zajištěno, že data jsou rovnoměrně rozmístěna napříč fragmenty.

2. Migrace bloků

- Ruční migrace: MongoDB může provádět ruční migraci chunků pro konkrétní kolekce. To je užitečné pro distribuci dat během hromadného vkládání.

3. Migrace rozsahu

- Automatická migrace rozsahu: MongoDB migruje data jeden rozsah po druhém. Balancér nečeká na dokončení fáze odstranění aktuální migrace před zahájením migrace dalšího rozsahu.

4. Resharding

- Technika reshard-to-Shard: MongoDB používá resharding k rychlému šíření dat mezi úlomky v clusteru. To zahrnuje záměrné shardování do dočasného skartačního klíče, který se liší od požadovaného skartového klíče, a následné opětovné skartování do požadovaného skartačního klíče.

5. Postup migrace bloků

- Source Shard: Zdrojový fragment zahájí přesun, když obdrží interní příkaz. Během procesu migrace jsou operace s blokem odesílány do zdrojového fragmentu.

- Cílový fragment: Cílový fragment vytvoří všechny indexy požadované zdrojem, které v cíli neexistují. Cílový fragment začne vyžadovat dokumenty v bloku a začne přijímat kopie dat.

- Synchronizace: Po přijetí konečného dokumentu v bloku zahájí cílový fragment proces synchronizace, aby bylo zajištěno, že obsahuje změny migrovaných dokumentů, ke kterým došlo během migrace.

- Aktualizace metadat: Zdrojový fragment se připojí ke konfigurační databázi a aktualizuje metadata clusteru novým umístěním pro blok.

- Fáze odstranění: Poté, co zdrojový fragment dokončí aktualizaci metadat a jakmile na bloku nejsou žádné otevřené kurzory, zdrojový fragment smaže svou kopii dokumentů[3][5].

6. Jumbo kousky

- Jumbo bloky: Pokud blok překročí maximální velikost nebo počet dokumentů v bloku překročí povolené maximum, MongoDB blok nemigruje. Místo toho se MongoDB pokusí rozdělit část. Pokud je rozdělení neúspěšné, MongoDB označí blok jako jumbo, aby se zabránilo opakovaným pokusům o migraci bloku[3].

7. Monitorování a údržba

- Monitorování: MongoDB poskytuje nástroje pro monitorování procesu balanceru a zajišťuje, že data jsou rovnoměrně rozložena mezi úlomky.

- Údržba: MongoDB poskytuje příkazy pro správu balanceru a zajišťuje, že migrace dat je efektivní a škálovatelná.

Závěr

MongoDB se stará o migraci dat mezi shardy prostřednictvím procesu balanceru, který zajišťuje, že data jsou rovnoměrně rozmístěna mezi shardy ve sharded clusteru. Balancér migruje data po jednom rozsahu a MongoDB poskytuje nástroje pro monitorování a správu procesu balanceru.

Citace:
[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/