MongoDB verzorgt de gegevensmigratie tussen shards via het balancerproces. De balancer is ervoor verantwoordelijk dat gegevens gelijkmatig worden verdeeld over de shards in een shard-cluster. Hier volgen de stappen die betrokken zijn bij gegevensmigratie tussen shards:
1. Balanceren
- Automatisch balanceren: MongoDB brengt gegevens automatisch in evenwicht door segmenten van de ene shard naar de andere te migreren. Dit zorgt ervoor dat gegevens gelijkmatig over de shards worden verdeeld.
2. Chunk-migratie
- Handmatige migratie: MongoDB kan handmatige segmentmigratie uitvoeren voor specifieke collecties. Dit is handig voor het distribueren van gegevens tijdens bulkinvoegingen.
3. Bereikmigratie
- Automatische bereikmigratie: MongoDB migreert gegevens één bereik tegelijk. De balancer wacht niet tot de verwijderingsfase van de huidige migratie is voltooid voordat de volgende bereikmigratie wordt gestart.
4. Herharden
- Reshard-to-Shard-techniek: MongoDB gebruikt resharding om gegevens snel over de shards in het cluster te verspreiden. Dit houdt in dat u opzettelijk een tijdelijke Shard-sleutel gebruikt die verschilt van de gewenste Shard-sleutel en vervolgens opnieuw in de gewenste Shard-sleutel wordt geshard.
5. Chunk-migratieprocedure
- Bron Shard: de bron Shard begint de verplaatsing wanneer deze een interne opdracht ontvangt. Tijdens het migratieproces worden bewerkingen op het segment naar de bron-shard verzonden.
- Bestemmings-shard: de doel-shard bouwt alle indexen op die vereist zijn door de bron en die niet bestaan op de bestemming. De doel-shard begint met het opvragen van documenten in het segment en begint met het ontvangen van kopieën van de gegevens.
- Synchronisatie: nadat het laatste document in het deel is ontvangen, start de doel-shard een synchronisatieproces om ervoor te zorgen dat deze de wijzigingen in de gemigreerde documenten bevat die tijdens de migratie zijn opgetreden.
- Metadata-update: de bron-shard maakt verbinding met de configuratiedatabase en werkt de metagegevens van het cluster bij met de nieuwe locatie voor het segment.
- Verwijderfase: nadat de bron-shard de update van de metagegevens heeft voltooid en zodra er geen open cursors meer op het deel staan, verwijdert de bron-shard de kopie van de documenten[3][5].
6. Jumbobrokken
- Jumbo-chunks: als een chunk de maximale grootte overschrijdt of het aantal documenten in de chunk het toegestane maximum overschrijdt, migreert MongoDB de chunk niet. In plaats daarvan probeert MongoDB het deel te splitsen. Als de splitsing niet succesvol is, bestempelt MongoDB het segment als jumbo om herhaalde pogingen om het segment te migreren te voorkomen[3].
7. Monitoring en onderhoud
- Monitoring: MongoDB biedt tools om het balancerproces te bewaken en ervoor te zorgen dat gegevens gelijkmatig over de shards worden verdeeld.
- Onderhoud: MongoDB biedt opdrachten om de balancer te beheren en ervoor te zorgen dat de gegevensmigratie efficiënt en schaalbaar is.
Conclusie
MongoDB verzorgt de gegevensmigratie tussen shards via het balancerproces, dat ervoor zorgt dat gegevens gelijkmatig worden verdeeld over de shards in een shard-cluster. De balancer migreert gegevens bereik voor bereik, en MongoDB biedt tools om het balancerproces te bewaken en te beheren.
Citaties:[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/