Att övervaka framstegen med datamigrering mellan skärvor i MongoDB innebär att förstå flera aspekter av hur MongoDB hanterar skitkluster, beteendet hos balancerprocessen och mekanismerna för att spåra bitmigrationer och klusterets allmänna hälsa.
MongoDB Sharding distribuerar data över flera skär för att stödja horisontell skalning. Migrationen av data mellan skärvor sker främst genom bitmigrering, som hanteras automatiskt av MongoDB -balansen eller kan manuellt utlösas. Att övervaka denna migrationsprocess är avgörande för att säkerställa prestanda, tillgänglighet och balanserad datadistribution i klustret.
Förstå MongoDB Sharding och Balancer
I ett Sharded -kluster partitionerar MongoDB data i bitar. Dessa bitar är distribuerade över skären enligt skärpnyckeln. Balancer är en bakgrundsprocess som körs på primären i Config Server Replica -uppsättningen och aktivt övervakar datadistribution för att upprätthålla balans mellan skärvor. Balancer beslutar när och vilka bitar som måste migreras baserat på specifika trösklar relaterade till datastorleksskillnaden mellan skärvor. Migrering sker för att säkerställa jämn datadistribution och optimera frågeställningen.
Balancern fungerar transparent men kan konfigureras eller inaktiveras efter behov. Det migrerar bitar på ett kontrollerat sätt, vilket endast tillåter en migration per skärv åt gången för att minimera påverkan på prestanda. Under förhållanden med hög obalans (t.ex. när datastorleksskillnaden mellan skärvor överskrider en tröskel  som standard, tre gånger den konfigurerade bitstorleken), utlöses migration.
Kontrollera balancer och migrationsstatus
För att övervaka framstegen med Shard -migrationer är flera kommandon och logginspektioner användbara:
- sh.status () eller db.printShardingStatus (): Dessa kommandon ger en översikt över skärningstillståndet, inklusive bitfördelningen över skärvor för varje skakad samling. Även om de inte ger en direkt procentandel av migrationens framsteg, kan bitfördelningskonteksten de tillhandahåller tjäna som en proxy för att förstå hur balanserade uppgifterna är och om migrationer pågår.
- Balancer -aktivitetsloggar: Balancer loggar sin aktivitet, inklusive bitmigrering, i loggarna för konfigurationsservrarna och mongos -instanserna. Övervakning av dessa loggar kan avslöja vilka bitar som migreras, tillsammans med deras käll- och destinationsskärmar, och eventuella fel eller förseningar som uppstår under migrationer.
- Aktuella migrationer: MongoDB begränsar en skärv till en migration åt gången, men med flera skärmar kan den köra flera migrationer i parallellt klusterbrett (upp till hälften av antalet skärmar). Att observera aktiva migrationer kan göras indirekt genom att inspektera balancerloggarna eller använda administrativa kommandon på konfigurationsservern för att se migrationslås och migrationsrelaterade räknare.
Kommandon och mätvärden för övervakning
- BalancerStatus -kommando: att köra `sh.getbalancerstate ()` eller inspektera klustret med kommandon som avslöjar balanceraktivitet hjälper till att se om balansen är aktiverad eller för närvarande aktiv.
- ChunkmigrationLockTimeout Count: MongoDB spårar specifika mätvärden som `ShardingStatistics.Countdonormovechunklocktimeout` för att förstå om chunkmigrering är tidpunkten för lås, vilket kan indikera migreringsproblem eller prestanda flaskor.
- Mongos connpoolstats Kommando: Övervakning av anslutningar till skär med `db.Runcommand ({connpoolstats: 1})` från en Mongos -instans hjälper till att kontrollera om migrationer orsakar ökad anslutningsanvändning eller flaskhalsar på skärvsprimärerna. Anslutningsstatistik indikerar lastfördelningen.
- Övervakning av datastorlek per skärning: Genom att fråga konfigurationsdatabasens skärvmetadata kan man kontrollera storleken och antalet bitar tilldelade per skärv. En stor skillnad antyder pågående migrationer eller obalans.
Manuell migreringsövervakning
När manuella chunkmigrering utlöses med kommandon som `MOVECHUNK 'eller' Moverange ', blockerar operationen tills migrationen är klar. Detta synkrona beteende möjliggör omedelbar bekräftelse av migrationsframgång eller misslyckande. För långvariga automatiserade migrationer som hanteras av balancern exponeras emellertid ingen direkt framstegsprocent av MongoDB.
Att använda upprepade statuskontroller via `sh.status ()` mellan migrationssteg hjälper till att dra fram framsteg genom att observera minskningen av bitar på källskärmen och ökningen på målskärmen.
Verktyg och instrumentpaneler
MongoDB Atlas, den hanterade molntjänsten, tillhandahåller en migreringshem för hemmastik för att spåra migrationer visuellt, inklusive deras status och eventuella historiska migrationer. Detta gränssnitt kan hjälpa till med övervakning i Atlas -miljöer.
I självhanterade distributioner inrättar administratörer ofta övervakning av instrumentpaneler med MongoDB: s övervakningsverktyg som MMS (MongoDB Management Service) eller tredjepartsverktyg som analyserar MongoDB-loggar och mätvärden (t.ex. Prometheus med Grafana). Dessa inställningar kan spåra mätvärden relaterade till balanceraktivitet, bitmigrering, diskanvändning och nätverksgenomströmning, som alla indirekt indikerar migrationens framsteg.
Hantering av föräldralösa dokument och läs konsistens under migrationer
Under chunkmigrering kopieras dokument i den migrerande biten till målskärmen, och när de en gång bekräftats markeras dokumenten på källskärmen som föräldralösa tills de har rengjorts. Denna saneringsfördröjning (`OrphancleanupDelaysecs`) är utformad för att säkerställa att pågående frågor inte påverkas.
Det är viktigt att övervaka för missade dokument i sekundära läsningar, som sekundära läsningar under migrationer kan missa dokument om frågor spänner över de migrerande intervallen. Medvetenhet om detta beteende är avgörande när man bedömer migrationens framsteg och läser konsistens.
Sammanfattning av övervakningssteg
1. Kontrollera skärmstatus: Använd `sh.status ()` regelbundet för att övervaka bitfördelningen.
2. Kontrollera Balancer State: Verify Balancer är aktiverad och aktiv via `sh.getbalancerstate ()`.
3. Monitor Loggar: Spåra balancer och migreringsrelaterade loggar på mongos och config-servrar.
4. Spårbitar: Frågekonfigurationsdatabasmetadata -samlingar (som `config.chunks`) för att observera bitar per skärv.
5. Undersök anslutningsstatistik: Använd `connpoolstats` för att upptäcka ovanliga anslutningspikar under migrering.
6. Titta på migreringslås och mätvärden: Identifiera migrationsgränser eller låsfrågor i mätvärden.
7. Manuella kommandon: Använd `MOVECHUNK 'eller` Moverange` för kontrollerad migration och synkron feedback.
8. Uttagningsövervakningsverktyg: Använd ATLAS -migreringsskärmar eller anpassade övervaknings instrumentpaneler.
9. Förstå migrationseffekt: Redge för Orphan -dokument och möjliga sekundära läsekonsekvenser.