MongoDB håndterer datamigrering mellom shards gjennom balanseringsprosessen. Balansøren er ansvarlig for å sikre at data er jevnt fordelt på skjærene i en shard klynge. Her er trinnene involvert i datamigrering mellom shards:
1. Balansering
- Automatisk balansering: MongoDB balanserer automatisk data ved å migrere biter fra en shard til en annen. Dette sikrer at data er jevnt fordelt på skjærene.
2. Chunk Migration
- Manuell migrering: MongoDB kan utføre manuell chunk-migrering for spesifikke samlinger. Dette er nyttig for å distribuere data under masseinnlegg.
3. Rekkeviddemigrering
- Automatisk områdemigrering: MongoDB migrerer data ett område om gangen. Balanseringsenheten venter ikke på at den gjeldende migreringens slettefase er fullført før den starter neste områdemigrering.
4. Resharding
- Reshard-to-Shard-teknikk: MongoDB bruker resharding for å spre data raskt over shards i klyngen. Dette innebærer med hensikt å skjære inn i en midlertidig shard-nøkkel som er forskjellig fra den ønskede shard-nøkkelen og deretter omskjære til den ønskede shard-nøkkelen.
5. Chunk Migration Prosedyre
- Source Shard: Kilde Shard starter flyttingen når den mottar en intern kommando. Under migreringsprosessen sendes operasjoner til delen til kildeskjæret.
- Destinasjon Shard: Destinasjonssharden bygger alle indekser som kreves av kilden som ikke finnes på destinasjonen. Destinasjonsskjæret begynner å be om dokumenter i delen og begynner å motta kopier av dataene.
- Synkronisering: Etter å ha mottatt det endelige dokumentet i delen, starter destinasjonssharden en synkroniseringsprosess for å sikre at den har endringene i de migrerte dokumentene som skjedde under migreringen.
- Metadataoppdatering: Kildefragmentet kobles til konfigurasjonsdatabasen og oppdaterer klyngemetadataene med den nye plasseringen for delen.
- Slett fase: Etter at kildeskjæret har fullført oppdateringen av metadataene, og når det ikke er noen åpne markører på delen, sletter kildeskjæret sin kopi av dokumentene[3][5].
6. Jumbo Chunks
- Jumbo Chunks: Hvis en del overskrider den maksimale størrelsen eller antallet dokumenter i delen overskrider maksimalt tillatt, migrerer ikke MongoDB delen. I stedet prøver MongoDB å dele opp delen. Hvis delingen ikke lykkes, merker MongoDB delen som jumbo for å unngå gjentatte forsøk på å migrere delen[3].
7. Overvåking og vedlikehold
- Overvåking: MongoDB gir verktøy for å overvåke balanseringsprosessen og sikre at data er jevnt fordelt over shards.
- Vedlikehold: MongoDB gir kommandoer for å administrere balanseren og sikre at datamigrering er effektiv og skalerbar.
Konklusjon
MongoDB håndterer datamigrering mellom shards gjennom balanseringsprosessen, som sikrer at data er jevnt fordelt over shards i en shard klynge. Balanseringsenheten migrerer data ett område om gangen, og MongoDB gir verktøy for å overvåke og administrere balanseringsprosessen.
Sitater:[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/