Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan kan jeg overvåke fremdriften for datamigrasjon mellom skjær i MongoDB


Hvordan kan jeg overvåke fremdriften for datamigrasjon mellom skjær i MongoDB


Overvåking av fremdriften for datamigrasjon mellom skjær i MongoDB innebærer å forstå flere aspekter av hvordan MongoDB administrerer sharded klynger, oppførselen til balansertprosessen og mekanismene for å spore chunk migrasjoner og klyngenes generelle helse.

MongoDB Sharding distribuerer data over flere skjær for å støtte horisontal skalering. Migrasjonen av data mellom skjær forekommer først og fremst gjennom chunk -migrasjoner, som administreres automatisk av MongoDB -balansen eller kan utløses manuelt. Overvåking av denne migrasjonsprosessen er avgjørende for å sikre ytelse, tilgjengelighet og balansert datadistribusjon i klyngen.

Forstå Mongodb Sharding and Balancer

I en avskåret klynge partisjoner MongoDB -partisjoner data i biter. Disse biter er distribuert over skjær i henhold til Shard -nøkkelen. Balancer er en bakgrunnsprosess som kjører på primæren i Config Server Replica Set og aktivt overvåker datadistribusjon for å opprettholde balanse på tvers av skjær. Balanceren bestemmer når og hvilke biter som må migreres basert på spesifikke terskler relatert til datastørrelsesforskjellen på tvers av skjær. Migrasjon oppstår for å sikre jevn datadistribusjon og optimalisere spørringsytelsen.

Balanceren opererer transparent, men kan konfigureres eller deaktiveres etter behov. Den migrerer biter på en kontrollert måte, og tillater bare en migrasjon per skjær om gangen for å minimere virkningen på ytelsen. Under betingelser med høy ubalanse (f.eks. Når datastørrelsesforskjellen mellom skjær overstiger en terskel  som standard, tre ganger den konfigurerte delstørrelsen), utløses migrasjon.

Kontroller Balancer og migrasjonsstatus

For å overvåke fremdriften for skjære migrasjoner, er flere kommandoer og logginspeksjoner nyttige:

- Sh.Status () eller DB.PrintShardingStatus (): Disse kommandoene gir en oversikt over Sharding State, inkludert chunk -distribusjonen på tvers av skjær for hver sharded -samling. Selv om de ikke gir en direkte prosentandel av migrasjonsutviklingen, kan chunk -distribusjonskonteksten de gir tjene som en fullmakt for å forstå hvor balanserte dataene er og om migrasjoner pågår.

- Balancer Aktivitetslogger: Balancer logger sine aktiviteter, inkludert chunk -migrasjoner, i loggene til Config -serverne og Mongos -forekomstene. Overvåking av disse loggene kan avsløre hvilke biter som blir migrert, sammen med kilde- og destinasjonsskårene, og eventuelle feil eller forsinkelser som oppstår under migrasjoner.

- Nåværende migrasjoner: MongoDB begrenser en skjær til en migrasjon om gangen, men med flere skjær kan den kjøre flere migrasjoner i parallell klynge (opptil halvparten av antall skjær). Å observere aktive migrasjoner kan gjøres indirekte ved å inspisere balanserloggene eller bruke administrative kommandoer på konfigurasjonsserveren for å se migrasjonslåser og migrasjonsrelaterte tellere.

Kommandoer og beregninger for overvåking

- Balancerstatus -kommando: Å kjøre `sh.getBalancerState ()` eller inspisere klyngen med kommandoer som avslører Balancer -aktivitet hjelper til med å se om balansen er aktivert eller for øyeblikket aktiv.

- ChunkMigrationLockTimeout Count: MongoDB sporer spesifikke beregninger som `ShardingStatistics.CountDonormOvechunklockTimeout` for å forstå om chunk -migrasjoner er timing ut på grunn av låser, noe som kan indikere migrasjonsproblemer eller ytelsesflaskehalser.

- Mongos connpoolstats -kommando: Overvåkningstilkoblinger til skjær ved bruk av `db.runcommand ({connpoolstats: 1})` fra en mongos -forekomst hjelper deg med å sjekke om migrasjoner forårsaker økt tilkoblingsbruk eller flaskehals på shard -primærene. Tilkoblingsstatistikk indikerer belastningsfordelingen.

- Overvåking av datastørrelse per shard: Ved å spørre konfigurasjonsdatabasens Shard -metadata, kan man sjekke størrelsen og antall biter som er tildelt per skjær. Et stort avvik antyder pågående migrasjoner eller ubalanse.

Manuell migrasjonsovervåking

Når manuelle del migrasjoner utløses ved hjelp av kommandoer som `movechunk` eller` moverange`, blokkerer operasjonen til migrasjonen er fullført. Denne synkrone oppførselen tillater øyeblikkelig bekreftelse av migrasjonssuksess eller fiasko. For langvarige automatiserte migrasjoner som administreres av balansen, blir ingen direkte fremdriftsprosent imidlertid utsatt av MongoDB.

Å bruke gjentatte statuskontroller via `sh.status ()` mellom migrasjonstrinn hjelper til med å utlede fremgang ved å observere reduksjonen i biter på kildeskåret og økningen på målskåret.

Verktøy og dashbord

MongoDB Atlas, den administrerte skytjenesten, gir en migrasjons startskjerm for å spore migrasjoner visuelt, inkludert deres status og eventuelle historiske migrasjoner. Dette grensesnittet kan hjelpe med overvåking i Atlas -miljøer.

I selvstyrte distribusjoner setter administratorer ofte opp overvåking av dashboards ved hjelp av MongoDBs overvåkningsverktøy som MMS (MongoDB Management Service) eller tredjepartsverktøy som analyserer MongoDB-logger og beregninger (f.eks. Prometheus med Grafana). Disse oppsettene kan spore beregninger relatert til balanseraktivitet, chunk -migrasjoner, diskbruk og nettverksgjennomstrømning, som alle indirekte indikerer migrasjonsfremgang.

håndtere foreldreløse dokumenter og lese konsistens under migrasjoner

Under migrasjon av chunk blir dokumenter i den migrerende delen kopiert til målskåret, og når de er bekreftet, er dokumentene på kildeskjæret merket som foreldreløse til de ble ryddet opp. Denne opprydningsforsinkelsen (`OrphanLeanupDelaysecs`) er designet for å sikre at pågående spørsmål ikke blir berørt.

Det er viktig å overvåke for eventuelle tapte dokumenter i sekundære avlesninger, ettersom sekundæravlesninger under migrasjoner kan gå glipp av dokumenter hvis spørsmål spenner over migrerende områder. Bevissthet om denne oppførselen er avgjørende når du vurderer fremdrift av migrasjon og leser konsistens.

Sammendrag av overvåkingstrinn

1. Kontroller Sharding Status: Bruk `sh.status ()` regelmessig for å overvåke delingen av chunk.
2. Inspiser Balancer State: Verify Balancer er aktivert og aktiv via `sh.getBalancerState ()`.
3. Monitor logger: Sporbalanse og migrasjonsrelaterte logger på Mongos og Config-servere.
4. Spor Chunk Countts: Query Config Database Metadata Collections (som `config.chunks`) for å observere biter per skjær.
5. Undersøk tilkoblingsstatistikk: Bruk `connpoolstats` for å oppdage uvanlige tilkoblingspigger under migrasjon.
6. Se på migrasjonslåser og beregninger: Identifiser tidsavbrudd for migrasjon eller låseproblemer i beregninger.
7. Manuelle kommandoer: Bruk `MoveChunk` eller` Moverange` for kontrollert migrasjon og synkron tilbakemelding.
8. Utnytt overvåkningsverktøy: Bruk atlas migrasjonsskjermer eller tilpassede overvåkningsdashbord.
9. Forstå migrasjonseffekten: Regn for opprydding av foreldreløse dokumenter og mulig sekundær lest uoverensstemmelser.

Gjennom disse midlene kan administratorer effektivt overvåke og måle fremdriften for datamigrasjon mellom skjær i MongoDB, og sikre jevn balanseoperasjoner og optimalisert klyngeytelse. Denne overvåkningen er kritisk for store klynger der migrasjoner kan ta betydelig tid og nettverksbåndbredde, og direkte påvirke applikasjonsytelsen og tilgjengeligheten.