Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan håndterer MongoDB data migrasjon mellom skjær


Hvordan håndterer MongoDB data migrasjon mellom skjær


MongoDB håndterer datamigrasjon mellom skjær først og fremst gjennom en prosess som kalles chunk migration, som er en integrert del av den sharding -arkitekturen designet for å distribuere data jevnt over flere skjær i en klynge. Sharding i MongoDB er metoden som brukes til å skalere databasen horisontalt ved å dele opp data på flere servere eller skjær. Dette systemet utnytter en skjærnøkkel, som er et felt eller et sett med felt i et dokument som bestemmer distribusjonen av data. For å administrere datamigrasjon mellom SHARDS, bruker MongoDB en bakgrunnsprosess kalt Balancer, som optimaliserer datadistribusjon ved å migrere dataserier (eller biter) etter behov.

Sharded Cluster and Chunk Migration Oversikt

MongoDB deler sharded -samlinger i biter, som er sammenhengende områder av skjærnøkkelverdier. Hver del tilhører en spesifikk skjær, og disse biter holder samlet hele datasettet. Balancer overvåker fordelingen av biter over skjær og migrerer biter mellom skjær for å opprettholde balansen. Denne migrasjonsmekanismen er med på å unngå hotspots, forbedre spørringsytelsen og optimalisere ressursutnyttelsen.

Chunk Migration er gunstig i scenarier som når nye skjær blir lagt til en klynge, når data blir ujevn forårsaker ubalanse, eller når soner må omdefineres for datalokalitet eller forskriftskrav. Migrasjonen opererer på chunk -nivået, og flytter et helt utvalg av skjærnøkkelverdier fra en skjær til en annen.

Migrasjonsprosessdetaljer

MongoDBs del migrasjon fungerer i flere faser:

1. Valg av chunk å flytte: Balancer eller en administrator velger en del som trenger omfordeling til en annen skjær for å balansere klyngen.

2. Klonfase: Donor Shard (den som for øyeblikket holder biten) kopierer alle dokumenter i delen til mottakerskåret. I løpet av denne tiden skriver også New til biten på donorskåret.

3. Fangstfase: Mottakerskåret bruker eventuelle skriver som skjedde i klonfasen for å sikre at den har de mest oppdaterte dataene.

4. Kritisk seksjon og forpliktelse: Donor Shard går inn i en kritisk seksjon der skriveoperasjoner til biten er kort blokkert, og bitereieren er atomisk byttet til mottakerskarden.

5. Slettfase: Donor Shard fjerner asynkront dokumenter som tilhører den migrerte delen når den bekrefter at mottakeren har begått delen.

Balanceren sørger for at bare en migrasjon per skjær skjer av gangen for å minimere påvirkningen på Shard -ytelsen. Det kan utføre flere migrasjoner parallelt over forskjellige skjærpar hvis de er uavhengige.

Automatisk balanser

Balanceren kjører som en bakgrunnstråd på Config Server Primary Node og overvåker stadig Shard Data Balance. Den sporer datastørrelse per del for å avgjøre om migrasjoner er nødvendige i henhold til en konfigurerbar balanseterskel. Når forskjeller i datastørrelse mellom skjær overstiger denne terskelen, setter balansen innleder migrasjoner.

Balanceren opererer på en for det meste gjennomsiktig måte til applikasjoner, men den kan midlertidig deaktiveres for vedlikeholds- eller innstillingsformål. Den respekterer også soner som er konfigurert i klyngen, og sikrer at biter migreres innenfor passende sonegrenser.

Manual Migration Commands

Mens Balancer automatiserer chunk -migrasjon, tillater MongoDB også manuell kontroll ved bruk av kommandoer som `MoveChunk` og` Moverange`. Disse kommandoene tvinger migrasjon av spesifikke biter eller biter fra en skjær til en annen.

- `MoveChunk` brukes til å migrere en del som inneholder en spesifikk skjærnøkkelverdi til en spesifisert skjær. Dette er nyttig for målrettede migrasjoner for belastningsbalansering eller datalokalitet.

- `Moverange` tillater migrering av et sammenhengende utvalg av skjærnøkler, nyttig for mer komplekse data -rebalanseringsstrategier.

Administratorer kan bruke disse kommandoene for pre-splitting biter for å distribuere data jevnt før inntak av bulk eller for å løse migrasjonssvikt forårsaket av balansering av vindusbegrensninger.

Håndtering av foreldreløse dokumenter og konsistens

Under og etter bøtringsflytting kan foreldreløse dokumenter (dokumenter som ikke lenger tilhører giverskardens tildelte del områder) midlertidig eksistere på giverskåret til de blir ryddet opp.

MongoDB sikrer konsistens gjennom migrasjon ved å anvende operasjoner i rekkefølge og bruke en koordineringsmekanisme som blokkerer skriver under den kritiske delen. Etter migrasjon går opprydding av foreldreløse asynkront mens du unngår forstyrrelser i pågående spørsmål.

Starter MongoDB 5.3 genererer ikke endringsstrømmer hendelser for oppdateringer til foreldreløse dokumenter under migrasjon, for å opprettholde nøyaktigheten av hendelsesstrømmen.

innvirkning på ytelse og drift

Chunk Migrations har overhead inkludert nettverksbåndbreddeforbruk, CPU og Disk I/O som kan påvirke klyngeytelsen. MongoDB minimerer denne virkningen av:

- Begrensning av en shards deltakelse til en migrasjon om gangen.

- Kø migrasjoner og la slettefaser løpe overlappende for raskere lossing.

- Bruke gassalternativer for å stille inn migrasjon samtidighet og skrive bekymring under migrasjon.

Migrerende data påvirker også midlertidig sekundæravlesninger som kan gå glipp av dokumenter i løpet av den foreldreløse opprydningsfasen, så applikasjoner må vurdere dette når de utformer spørsmålene deres.

migrasjon i spesifikke scenarier

I tilfeller som å migrere data mellom soner med tag -områder, eller fra uskridende til avskårne oppsett, migrerer MongoDB data gradvis basert på oppdaterte skjærnøkkelområder eller soner etter rekonfigurasjon. For eksempel å fjerne gamle tag -områder og lage nye migrasjonsoverføring for å flytte data deretter.

Når du migrerer mongoDB-klynger til skystyrte løsninger eller mellom skjærede klynger, utfører migrasjonsverktøy ofte skarp-messig migrasjon, og kopierer skjærdata individuelt mens du opprettholder skjærnøkkelfordelinger.

verktøy og verktøy for migrasjon

Dataoverføringstjenester (DTS) og andre tredjepartsverktøy hjelper til med å migrere data mellom MongoDB-forekomster eller klynger, håndtering av skjærkartlegging, datakonsistens og trinnvise oppdateringer. Disse verktøyene støtter ofte å migrere fra ikke-avskjermet til skjærede klynger ved å tilordne standard skjærnøkkelverdier til kildedata som mangler skjærnøkler.

Sammendrag av viktige punkter

- MongoDB partisjoner data i biter fordelt over skjær ved hjelp av skjærnøkler.

- Balanceren migrerer automatisk biter for å opprettholde balansert datadistribusjon.

- Migrasjon innebærer kloningsdata, Catch-up skriver, atomoverlevering og asynkron opprydding.

- Migrasjoner er begrenset til en per skjær for å redusere systemets innvirkning.

- Manuelle migrasjonskommandoer gir administrativ kontroll for deling av del.

- Orphan-dokumenter rengjøres asynkront etter migrasjonen.

- Migrasjon påvirker ytelsen og sekundær lesekonsistens midlertidig.

- Migrasjon mellom soner eller endringer i skjærnøkkelområder håndteres ved rekonfigurasjon som utløser migrasjoner.

- Migrasjonsverktøy hjelper til med databevegelse mellom klynger eller arkitekturer.

Denne migrasjonsmekanismen sikrer at mongoDB -klynger forblir balanserte, skalerbare og utførende når data vokser og klyngekonfigurasjoner utvikler seg, noe som gir kontinuerlig tilgjengelighet med minimal forstyrrelse i applikasjoner.