Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan håndterer MongoDB datamigrering mellom shards


Hvordan håndterer MongoDB datamigrering mellom shards


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/