Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak zpracovává MongoDB migraci dat mezi střepy


Jak zpracovává MongoDB migraci dat mezi střepy


MongoDB zpracovává migraci dat mezi střepy primárně procesem zvaným migrace kusů, což je nedílnou součástí architektury shardingu určené k rovnoměrnému distribuci dat na více střepech v klastru. Sharding v MongoDB je metoda používaná k vodorovnému škálování databáze rozdělením dat na více serverech nebo střepech. Tento systém využívá klíč Shard, což je pole nebo sada polí v dokumentu, který určuje distribuci dat. Pro správu migrace dat mezi střepy používá MongoDB proces na pozadí nazývaný Balancer, který podle potřeby optimalizuje distribuci dat migrací rozsahů dat (nebo kusů).

Sharded Cluster and Chunk Migration Přehled

MongoDB dělí středové sbírky na kousky, které jsou sousední rozsahy hodnot klíčů Shard. Každý kus patří do konkrétního střepu a tyto kousky společně drží celý datový soubor. Balancer monitoruje distribuci kousků přes střepy a migruje kousky mezi střepy, aby udržela rovnováhu. Tento mechanismus migrace pomáhá vyhnout se hotspotům, zlepšovat výkon dotazů a optimalizovat využití zdrojů.

Migrace kusů je prospěšná ve scénářích, jako když se do klastru přidávají nové střepy, když data nerovnoměrně způsobují nerovnováhu, nebo když je třeba zóny znovu definovat pro datovou lokalitu nebo regulační požadavky. Migrace pracuje na úrovni kusu a pohybuje se celý rozsah hodnot klíčů Shard z jednoho shardu do druhého.

Podrobnosti o migraci

Mongodbova migrace kusu funguje v několika fázích:

1. Výběr kusu k přesunu: Balancer nebo administrátor vybere kus, který potřebuje přiřazení k jinému střevu, aby vyvážil klastr.

2. Klonní fáze: dárcovský shard (ten, který v současné době drží kus), zkopíruje všechny dokumenty v kusu sboru příjemce. Během této doby jsou také sledovány nové zápisy na kus na dárcovském shardu.

3. Fáze dohánění: Shard příjemce aplikuje všechny zápisy, ke kterým došlo během fáze klonu, aby se zajistilo, že má nejaktuálnější data.

4. Kritická sekce a potvrzení: Shard dárce vstupuje do kritické části, kde jsou operace zápisu do kusu krátce blokovány a vlastnictví kusu je atomicky přepnuto na shard příjemce.

5. Smazání fáze: dárcovský shard asynchronně odstraňuje dokumenty patřící do migrovaného kusu, jakmile potvrdí, že příjemce úspěšně spáchal kus.

Vyvažovač zajišťuje, že najednou dochází pouze k jedné migraci na střep, aby se minimalizoval dopad na výkon shard. Pokud jsou nezávislé, může provádět více migrací paralelně přes různé páry shard.

Automatic Balancer

Balancer běží jako vlákno na pozadí na primárním uzlu konfiguračního serveru a neustále monitoruje rovnováhu dat Shard. Sleduje velikost dat na kus, aby určila, zda jsou migrace potřebné podle konfigurovatelného prahu vyvážení. Když rozdíly ve velikosti dat mezi střepy překročí tento prahová hodnota, vyvažovač iniciuje migrace.

Balancer pracuje většinou transparentním způsobem k aplikacím, ale může být dočasně deaktivován pro účely údržby nebo ladění. Respektuje také zóny nakonfigurované v klastru a zajišťuje, že kousky jsou migrovány v příslušných hranicích zóny.

Příkazy ruční migrace

Zatímco Balancer automatizuje migraci kusu, MongoDB také umožňuje manuální ovládání pomocí příkazů jako `moveCHUNK` a` movergange`. Tyto příkazy nutí migraci specifických kousků nebo kusu se pohybují od jednoho střepu k druhému.

- `MoveCHUNK` se používá k migraci kusu obsahujícího konkrétní hodnotu klíče Shard na zadanou středu. To je užitečné pro cílené migrace pro vyvážení zátěže nebo datovou lokalitu.

- `movergange` umožňuje migraci sousedního rozsahu klíčů Shard, užitečný pro složitější datové vyvážení strategií.

Administrátoři mohou tyto příkazy používat pro předběžné rozdělení kousků k rovnoměrnému distribuci dat před hromadným požitím nebo k vyřešení selhání migrace způsobené vyrovnáváním omezení oken.

Manipulace s osiřelými dokumenty a konzistence

Během a po migraci a po něm mohou osiřelé dokumenty (dokumenty již nepatří k přiřazenému rozsahu kusů dárce) dočasně existovat na Shard dárce, dokud nebudou vyčištěny.

MongoDB ensures consistency throughout migration by applying operations in sequence and using a coordination mechanism that blocks writes during the critical section. Po migraci běží čištění sirotek asynchronně a vyhýbá se rušení probíhajících dotazů.

Zahájení MongoDB 5.3, změny toků ne generují události pro aktualizace do osiřelých dokumentů během migrace, aby se udržovala přesnost proudu událostí.

Dopad na výkon a operace

Migrace kusů přenášejí režii včetně spotřeby síťové šířky pásma, CPU a I/O disků, které mohou ovlivnit výkon klastrů. MongoDB minimalizuje tento dopad:

- Omezení účasti Shardu na jednu migraci najednou.

- Fronty migrace a umožnění smazání fází běžet překrývající se pro rychlejší vykládání.

- Používání možností škrticího škrticího dvora k vyladění souběžnosti migrace a psaní obav během migrace.

Migrační data také dočasně ovlivňují sekundární čtení, které mohou chybět dokumenty během fáze čištění osiřelých, takže aplikace musí při navrhování svých dotazů zvážit.

Migrace v konkrétních scénářích

V případech, jako je migrace dat mezi zónami s rozsahy značek nebo od neshardovaných po sharded nastavení, MONGODB migruje data postupně na základě aktualizovaných rozsahů shard klíčů nebo zóny po rekonfiguraci. Například odstranění starých rozsahů značek a vytváření nových spustí migraci vyvažovače a odpovídajícím způsobem přesune data.

Při migraci klastrů MongoDB do cloudově spravovaných řešení nebo mezi shardovanými klastry často provádějí migrační nástroje často shard-moudré migrace a kopírují data shard jednotlivě při zachování distribuce klíčů Shard.

Nástroje a nástroje pro migraci

Služby přenosu dat (DTS) a další nástroje třetích stran pomáhají migrovat data mezi instancemi MongoDB nebo klastry, manipulací s mapováním shard, konzistencí dat a přírůstkovými aktualizacemi. Tyto nástroje často podporují migraci z nešardovaných na shardované klastry přiřazením výchozích hodnot klíčů Shard ke zdrojovým datům postrádajícím klíče shard.

Shrnutí klíčových bodů

- MongoDB rozděluje data do kousků distribuovaných přes střepy pomocí klíčů Shard.

- Balancer automaticky migruje kousky, aby udržoval vyváženou distribuci dat.

- Migrace zahrnuje klonování údajů, zápisy dohánění, atomové předání a asynchronní čištění.

- Migrace jsou omezeny na jeden na Shard, aby se snížil dopad systému.

- Příkazy ruční migrace poskytují administrativní kontrolu pro distribuci kusů.

- Dokumenty sirotců jsou vyčištěny asynchronně po migraci.

- Migrace dočasně ovlivňuje výkon a konzistenci sekundárního čtení.

- Migrace mezi zónami nebo změnami v rozsazích klíčů Shard se zpracovává rekonfigurací spuštění migrací.

- Migrační nástroje pomáhají s pohybem dat mezi klastry nebo architekturami.

Tento migrační mechanismus zajišťuje, že klastry MongoDB zůstávají vyvážené, škálovatelné a výkonné, protože se rostou data a konfigurace klastrů se vyvíjejí, což poskytuje nepřetržitou dostupnost s minimálním narušením aplikací.