Het monitoren van de voortgang van gegevensmigratie tussen scherven in MongoDB omvat het begrijpen van verschillende aspecten van hoe MongoDB Sharded -clusters, het gedrag van het balancerproces en de mechanismen voor het volgen van chunkmigraties en de algehele gezondheid van het cluster beheert.
MongoDB Sharding distribueert gegevens over meerdere scherven ter ondersteuning van horizontale schaling. De migratie van gegevens tussen scherven vindt voornamelijk plaats door chunkmigraties, die automatisch worden beheerd door de MongoDB -balancer of handmatig kunnen worden geactiveerd. Het monitoren van dit migratieproces is cruciaal voor het waarborgen van prestaties, beschikbaarheid en evenwichtige gegevensverdeling in het cluster.
Begrijpen Mongodb Sharding and Balancer
In een Sharded -cluster verdelen MongoDB -gegevens gegevens in brokken. Deze brokken zijn verdeeld over scherven volgens de scherfsleutel. De balancer is een achtergrondproces dat wordt uitgevoerd op de primaire van de configuratiereplica -set en actief de gegevensverdeling bewaakt om het evenwicht tussen scherven te behouden. De balancer beslist wanneer en welke brokken moeten worden gemigreerd op basis van specifieke drempels met betrekking tot het verschil in gegevensgrootte over scherven. Migratie treedt op om zelfs gegevensverdeling te garanderen en de queryprestaties te optimaliseren.
De balancer werkt transparant maar kan indien nodig worden geconfigureerd of uitgeschakeld. Het migreert brokken op een gecontroleerde manier, waardoor slechts één migratie per scherf per scherf toestaat om de impact op de prestaties te minimaliseren. Onder omstandigheden van hoge onbalans (bijv. Wanneer het gegevensgrootteverschil tussen scherven overschrijdt een drempelwaarde  standaard, drie keer de geconfigureerde brokgrootte), wordt migratie geactiveerd.
Controle van balancer en migratiestatus
Om de voortgang van scherfmigraties te controleren, zijn verschillende opdrachten en loginspecties nuttig:
- sh.Status () of db.printshardingStatus (): Deze opdrachten bieden een overzicht van de scherfstatus, inclusief de chunkdistributie over scherven voor elke Sharded -collectie. Hoewel ze geen direct percentage van de migratievoortgang geven, kan de chunkdistributiecontext die ze bieden als een proxy dienen om te begrijpen hoe evenwichtig de gegevens zijn en of migraties aan de gang zijn.
- Balancer Activity Logs: de balancer registreert zijn activiteiten, inclusief chunkmigraties, in de logboeken van de configuratie -servers en mongos -instanties. Het monitoren van deze logboeken kan onthullen welke brokken worden gemigreerd, samen met hun bron- en bestemmingsscherven en eventuele fouten of vertragingen die tijdens migraties plaatsvinden.
- Huidige migraties: MongoDB beperkt een scherf tot één migratie tegelijk, maar met meerdere scherven kan het verschillende migraties lopen in parallel cluster-breed (tot de helft van het aantal scherven). Het observeren van actieve migraties kan indirect worden gedaan door de Balancer-logboeken te inspecteren of administratieve opdrachten op de configuratie-server te gebruiken om migratiesloten en migratiegerelateerde tellers te zien.
Opdrachten en statistieken voor monitoring
- BalancerStatus Command: runnen `sh.getbalancerstate ()` of het cluster inspecteren met opdrachten die de activiteit van balancer onthullen, helpt om te zien of de balancer is ingeschakeld of momenteel actief is.
- ChunkMigrationLockTimeout Count: MongoDB volgt specifieke statistieken zoals `ShardingStatistics.CountDonormovechunkLockTimeout` om te begrijpen of brokmigraties timen vanwege sloten, die kunnen duiden op migratieproblemen of bottlenecks van prestaties.
- Mongos ConnpoolStats Command: Monitoringverbindingen met scherven met behulp van `db.runcommand ({connpoolStats: 1})` uit een Mongos -exemplaar helpt controleren of migraties verhoogd verbindingsgebruik of knelpunten veroorzaken op de shard -voorverkiezingen. Verbindingsstatistieken geven de belastingverdeling aan.
- Grootte van de gegevens per scherf monitoren: door de scherfmetadata van de configuratiedatabase op te vragen, kan men de grootte en het aantal brokken per scherf controleren. Een grote discrepantie suggereert voortdurende migraties of onbalans.
Handmatige migratiemonitoring
Wanneer handmatige chunkmigraties worden geactiveerd met behulp van opdrachten zoals `movechunk` of` Moverange`, blokkeert de bewerkingsverbindingen totdat de migratie is voltooid. Dit synchrone gedrag maakt onmiddellijke bevestiging van migratiesucces of falen mogelijk. Voor langdurige geautomatiseerde migraties die door de balancer worden beheerd, wordt echter geen direct voortgangspercentage blootgesteld door MongoDB.
Het gebruik van herhaalde statuscontroles via `sh.status ()` tussen migratiestappen helpt de voortgang af te leiden door de afname van brokken op de bronscherf en de toename op de doelscherf.
Tools en dashboards
MongoDB Atlas, de beheerde cloudservice, biedt een migratie -startscherm om migraties visueel te volgen, inclusief hun status en eventuele historische migraties. Deze interface kan helpen bij monitoring in Atlas -omgevingen.
In zelfbeheerde implementaties zetten beheerders vaak bewakingsdashboards in met behulp van MongoDB's bewakingshulpmiddelen zoals MMS (MongoDB Management Service) of tools van derden die MongoDB-logboeken en statistieken ontleden (bijvoorbeeld Prometheus met Grafana). Deze installaties kunnen statistieken bijhouden met betrekking tot balanceractiviteit, chunkmigraties, schijfgebruik en netwerkdoorvoer, die allemaal indirect migratievoortgang aangeven.
Behandeling weesdocumenten en lees consistentie tijdens migraties
Tijdens chunkmigratie worden documenten in het migrerende brok gekopieerd naar de doelscherf en, eenmaal bevestigd, worden de documenten op de bronscherf gemarkeerd als wees tot opgeruimd. Deze opruimvertraging (`OrphancleanUpDelaysecs`) is ontworpen om ervoor te zorgen dat lopende vragen niet worden beïnvloed.
Het is belangrijk om te controleren op gemiste documenten in secundaire lezingen, omdat secundaire lezingen tijdens migraties documenten kunnen missen als vragen over de migrerende reeksen overspannen. Bewustzijn van dit gedrag is essentieel bij het beoordelen van de voortgang van de migratie en het lezen van consistentie.
Samenvatting van monitoringstappen
1. Controleer de Sharding -status: gebruik `sh.status ()` regelmatig om de chunkdistributie te controleren.
2. Inspecteer Balancer State: Controleer of Balancer is ingeschakeld en actief is via `sh.getbalancerstate ()`.
3. Monitorlogboeken: volg balancer en migratiegerelateerde logboeken bij Mongos en Config Servers.
4. Track chunktellingen: Query Config Database Metadata -collecties (zoals `config.chunks`) om brokken per scherf te observeren.
5. Onderzoek verbindingsstatistieken: gebruik `connpoolstats` om ongebruikelijke verbindingspieken tijdens migratie te detecteren.
6. Bekijk migratiesloten en statistieken: identificeer migratietime -outs of vergrendelproblemen in statistieken.
7. Handmatige opdrachten: gebruik `movechunk` of` Moverange` voor gecontroleerde migratie en synchrone feedback.
8. Leverage Monitoring Tools: gebruik Atlasmigratieschermen of aangepaste bewakingsdashboards.
9. Begrijp de impact van migratie: rekening voor het opruimen van weesdocument en mogelijke secundaire leesinconsistenties.