Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako MongoDB spracováva migráciu údajov medzi črepmi


Ako MongoDB spracováva migráciu údajov medzi črepmi


MongoDB spracováva migráciu údajov medzi črepmi predovšetkým procesom nazývaným kusová migrácia, ktorý je neoddeliteľnou súčasťou architektúry Sharding a architektúry určenej na rovnomerné distribúcie údajov na viacerých úlomkoch v klastri. Sharding v MongoDB je metóda použitá na vodorovné prispôsobenie databázy rozdelením údajov na viacerých serveroch alebo úlomkoch. Tento systém využíva kľúč Shard, ktorý je poľom alebo sadou polí v dokumente, ktorý určuje distribúciu údajov. Na správu migrácie dát medzi úhorami MongoDB používa proces na pozadí nazývaný vyvažovač, ktorý podľa potreby optimalizuje distribúciu údajov migrovaním dátových rozsahov (alebo kúskov).

Prehľad migrácie klastra a migrácie kusov

MongoDB rozdeľuje kolekcie zapaľované na kúsky, ktoré sú susediacimi rozsahmi hodnôt kľúčov Shard. Každý kus patrí do konkrétneho čreva a tieto kúsky kolektívne držia celý súbor údajov. Balancer monitoruje distribúciu kúskov cez črepy a migruje kúsky medzi črepmi, aby sa udržala rovnováha. Tento migračný mechanizmus pomáha vyhnúť sa hotspotom, zlepšuje výkon dotazu a optimalizuje využitie zdrojov.

Kusová migrácia je prospešná v scenároch, napríklad keď sa do klastru pridávajú nové črepy, keď údaje rastú nerovnomerne spôsobujúce nerovnováhu, alebo keď je potrebné predefinovať zóny pre dátovú lokalitu alebo regulačné požiadavky. Migrácia funguje na úrovni kusu a presúva celý rozsah hodnôt kľúčov SHARD z jedného Sharda do druhého.

Podrobnosti o migrácii

Mongodbova kusová migrácia funguje v niekoľkých fázach:

1. Výber kusu na presun: Ballancer alebo správca vyberie kus, ktorý potrebuje preradenie do iného čreva na vyváženie klastru.

2. Klonová fáza: Darca Shard (ten, ktorý v súčasnosti drží kus), skopíruje všetky dokumenty v kuse k recipérovému Shardovi. Počas tejto doby sú sledované aj nové píše do kusu na Darcovi Shard.

3. Chytárenská fáza: Recipient Shard aplikuje všetky zápisy, ktoré sa stali počas klonovej fázy, aby sa zabezpečilo, že má najaktuálnejšie údaje.

4. Kritická časť a spáchanie: Darca Shard vstupuje do kritickej sekcie, kde sú operácie zápisu do kusu krátko zablokované a vlastníctvo kusov je atómovo prepnuté na recipent Shard.

5. Vymazať fázu: Darca Shard Asynchrónne odstraňuje dokumenty patriace do migrovaného kusu, keď potvrdí, že príjemca úspešne spáchal kus.

Vyvažovač zaisťuje, že naraz sa stane iba jedna migrácia na úpadok, aby sa minimalizoval vplyv na výkon SHARD. Ak sú nezávislé, môže vykonávať viac migrácií paralelne v rôznych pároch na črevo.

Automatický vyrovnávač

Vyvažovač beží ako vlákno na pozadí na primárnom uzle konfiguračného servera a neustále monitoruje zostatok dát SHARD. Sleduje veľkosť údajov na kus, aby sa zistilo, či sú migrácie potrebné podľa konfigurovateľného prahu vyváženia. Ak rozdiely vo veľkosti údajov medzi úlomkami presahujú tento prah, vyvažovač začína migrácie.

Vyvažovač funguje väčšinou transparentným spôsobom pre aplikácie, ale môže byť dočasne deaktivovaný na účely údržby alebo ladenia. Rešpektuje tiež zóny nakonfigurované v klastri a zaisťujú, že kúsky sa migrujú do vhodných hraníc zóny.

Príkazy manuálnej migrácie

Zatiaľ čo vyvažovač automatizuje migráciu kusov, MongoDB tiež umožňuje manuálne ovládanie pomocou príkazov ako `movechunk` a` Moverange`. Tieto príkazy nútia migráciu konkrétnych kúskov alebo kusovia siaha od jedného čreva do druhého.

- `Movechunk` sa používa na migráciu kusu obsahujúcej špecifickú hodnotu kľúča SHARD na zadaný črep. Je to užitočné pre cielené migrácie na vyváženie záťaže alebo dátovú lokalitu.

- „Moverange“ umožňuje migráciu susediaceho rozsahu kľúča s črepmi, ktoré sú užitočné pre zložitejšie stratégie vyváženia údajov.

Správcovia môžu tieto príkazy použiť na predbežné štiepenie kúskov na rovnomerné distribúcie údajov pred hromadným požitím alebo na vyriešenie zlyhaní migrácie spôsobené obmedzeniami vyváženia okien.

zaobchádzanie s osomytnými dokumentmi a konzistentnosťou

Počas a po kusovej migrácii môžu osirelé dokumenty (dokumenty, ktoré už nepatria k donorovi Darcovi Shardovi prideleným kusovým rozsahom)) môžu dočasne existovať na darcovskom Sharde, kým sa nevyčistia.

MongoDB zaisťuje konzistentnosť počas migrácie pomocou operácií postupne a pomocou koordinačného mechanizmu, ktorý blokuje písať v kritickej časti. Po migrácii čistenie sirôt beží asynchrónne a vyhýba sa rušeniu s prebiehajúcimi otázkami.

Spustenie MongoDB 5.3, Change Streams negenerujú udalosti pre aktualizácie osirelé dokumenty počas migrácie, aby sa udržala presnosť toku udalostí.

Vplyv na výkon a operácie

Kusové migrácie nesú režijné náklady vrátane spotreby šírky pásma siete, CPU a I/O diskov, ktoré môžu ovplyvniť výkon klastrov. MongoDB minimalizuje tento vplyv:

- Obmedzenie účasti Shardovej na jednu migráciu naraz.

- Frontu migrácií a umožnenie odstránenia fáz, aby sa fázy prekrývali pre rýchlejšie vykladanie.

- Používanie možností škrtiaceho zariadenia na vyladenie súbežnosti migrácie a zapisovanie obáv počas migrácie.

Migračné údaje tiež dočasne ovplyvňujú sekundárne čítania, ktoré môžu vynechať dokumenty počas fázy vyčistenia sirôt, takže aplikácie to musia zvážiť pri navrhovaní svojich dopytov.

Migrácia v konkrétnych scenároch

V prípadoch, ako je migrácia údajov medzi zónami s rozsahom značiek alebo od neostrihaných po zaostrené nastavenia, MongoDB migruje údaje postupne na základe aktualizovaných rozsahov alebo zón SHARD po rekonfigurácii. Napríklad odstránenie starých rozsahov značiek a vytvorenie nových spustí migráciu vyrovnávača, aby sa podľa toho presunuli údaje.

Pri migrácii MongoDB Clusters do riešení riadených cloudom alebo medzi brzdenými klastrmi migračné nástroje často vykonávajú migráciu s črepou, kopírujú údaje o črepke individuálne pri udržiavaní distribúcie kľúčov SHARD.

Nástroje a pomôcky na migráciu

Služby prenosu údajov (DTS) a ďalšie nástroje tretích strán pomáhajú migrovať údaje medzi inštanciami MongoDB alebo zhlukmi, spracovaním mapovania Shardov, konzistentnosťou údajov a prírastkovými aktualizáciami. Tieto nástroje často podporujú migráciu z netrania na trblietavé klastre priradením predvolených hodnôt kľúča Shard k zdrojovým údajom bez kľúča s črepom.

Zhrnutie kľúčových bodov

- MongoDB rozdeľuje údaje do kúskov distribuovaných cez črepy pomocou kľúčov Shard.

- Vyvažovač automaticky migruje kúsky, aby sa udržala vyvážená distribúcia údajov.

- Migrácia zahŕňa klonovacie údaje, zápisy doháňania, atómové odovzdanie a asynchrónne vyčistenie.

- Migrácie sú obmedzené na jeden na Shard, aby sa znížil vplyv systému.

- Príkazy manuálnej migrácie poskytujú administratívnu kontrolu pre distribúciu kusov.

- Dokumenty siroty sa vyčistia asynchrónne po migrácii.

- Migrácia ovplyvňuje dočasne výkonnosť a sekundárne čítanie.

- Migrácia medzi zónami alebo zmenami v rozsahu kľúča SHARD sa rieši rekonfiguráciou spustením migrácií.

- Migračné nástroje pomáhajú pri pohybe údajov medzi zhlukami alebo architektúrami.

Tento migračný mechanizmus zaisťuje, že klastre MongoDB zostávajú vyvážené, škálovateľné a výkonné, keď sa dáta rastie a vyvíjajú sa konfigurácie klastrov, čo poskytuje nepretržitú dostupnosť s minimálnym narušením aplikácií.