Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hogyan kezeli a MongoDB a szilánkok közötti migrációt?


Hogyan kezeli a MongoDB a szilánkok közötti migrációt?


A MongoDB elsősorban a chunk migrációnak nevezett eljárás révén kezeli a szilánkok közötti migrációt, amely a szilárd architektúra szerves része, amelynek célja az adatok egyenletes elosztása a klaszter többszilárdságán. A MongoDB -ben lévő szilánk az adatbázis vízszintes méretezésére szolgáló módszer az adatok több szerver vagy szilánk particionálásával. Ez a rendszer kihasználja a SHARD kulcsot, amely egy olyan dokumentum mezője vagy mezőkészlete, amely meghatározza az adatok eloszlását. A szilánkok közötti adatátvándorlás kezelése érdekében a MongoDB a The Balancer nevű háttér eljárást használja, amely az adateloszlás optimalizálja az adattartományok (vagy darabok) migrálásával.

Sharded Cluster and Chunk Migration áttekintés

A MongoDB osztja a kollekciós gyűjteményeket darabokra, amelyek a Shard Kulcsértékek szomszédos tartományai. Minden darab egy adott szilánkhoz tartozik, és ezek a darabok együttesen tartják a teljes adatkészletet. A kiegyensúlyozó figyeli a darabok eloszlását a szilánkok között, és a darabokat vándorolja a szilánkok között az egyensúly fenntartása érdekében. Ez a migrációs mechanizmus segít elkerülni a hotspotokat, javítja a lekérdezés teljesítményét és optimalizálja az erőforrás -felhasználást.

A szunka migráció előnyös a forgatókönyvekben, például amikor az új szilánkok hozzáadódnak egy klaszterhez, amikor az adatok egyenetlenül egyensúlyhiányt okoznak, vagy amikor a zónákat újradefiniálni kell az adatok helysége vagy a szabályozási követelmények szempontjából. A migráció darabszinten működik, a SHARD kulcsértékek teljes tartományát az egyik szilánkról a másikra mozgatva.

Migrációs folyamat részletei

A MongoDB chunk migrációja több szakaszban működik:

1. A darabok kiválasztása a mozgáshoz: A kiegyenlítő vagy az adminisztrátor kiválaszt egy darabot, amelyet egy másik szilánkba kell cserélni a klaszter kiegyensúlyozására.

2. klónos fázis: A donor szilánk (az, aki jelenleg tartja a darabot) a darabban szereplő összes dokumentumot másolja a címzett Shardnak. Ez idő alatt az új írások a donor szilánkon is nyomon követik.

3. Felkarolási szakasz: A címzett Shard minden olyan írást alkalmaz, amely a klón szakaszában történt, hogy biztosítsa a legfrissebb adatokat.

4. Kritikus szakasz és elkötelezettség: A donor szilánk egy kritikus szakaszba lép, ahol az írási műveleteket röviden blokkolják, és a darab tulajdonjogát atomilag átkapcsolják a címzett Shardra.

5. Törlés fázis: A donor szilánk aszinkron módon eltávolítja a migrált darabhoz tartozó dokumentumokat, miután megerősíti, hogy a címzett sikeresen elkövette a darabot.

A kiegyenlítő biztosítja, hogy egy szilárdonként csak egy vándorlás történik, hogy minimalizálja a szilánk teljesítményére gyakorolt ​​hatást. Többszörös migrációt végezhet párhuzamosan a különböző szilánkpárok között, ha függetlenek.

automatikus kiegyensúlyozó

A kiegyenlítő háttérszálakként fut a Config Server elsődleges csomópontján, és folyamatosan figyeli a SHARD adatmérlegét. Követi az adatméretet darabonként, hogy meghatározza, hogy szükség van -e áttelepítésre a konfigurálható egyenleg küszöbérték szerint. Ha a szilánkok közötti adatméretbeli különbségek meghaladják ezt a küszöböt, akkor a kiegyenlítő vándorlást kezdeményez.

A kiegyensúlyozó többnyire átlátható módon működik az alkalmazásokhoz, de karbantartás vagy hangolás céljából ideiglenesen le lehet tiltani. Tiszteletben tartja a klaszterben konfigurált zónákat is, biztosítva, hogy a darabok a megfelelő zóna határokon belül vándoroljanak.

Kézi migrációs parancsok

Míg a kiegyensúlyozó automatizálja a darab migrációt, a MongoDB lehetővé teszi a kézi vezérlést olyan parancsok használatával, mint a „Movechunk” és a „Moverange”. Ezek a parancsok arra kényszerítik a konkrét darabok vagy darabok migrációját, vagy az egyik szilánkról a másikra.

- A „Movechunk” egy olyan darab áttelepítésére szolgál, amely egy meghatározott szilánkot tartalmaz egy meghatározott szilánkba. Ez hasznos a célzott migrációhoz a terheléselosztáshoz vagy az adatok helyszínéhez.

- A „Moverange” lehetővé teszi a Shard Keys szomszédos tartományának áttelepítését, amely hasznos a bonyolultabb adatok kiegyensúlyozásához.

Az adminisztrátorok ezeket a parancsokat felhasználhatják az előzetesen felosztási darabokra az adatok egyenletes elosztására az ömlesztett lenyelés előtt vagy az ablakkorlátozások kiegyensúlyozása által okozott migrációs hibák megoldására.

Az árva dokumentumok és a következetesség kezelése

A darab migráció alatt és után az árva dokumentumok (a Donor Shard kijelölt darabtartományaihoz már nem tartozó dokumentumok) ideiglenesen létezhetnek a donor szilánkon, amíg meg nem takarítják őket.

A MongoDB biztosítja a következetességet a migráció során azáltal, hogy a műveleteket sorrendben alkalmazza, és egy olyan koordinációs mechanizmust használ, amely blokkolja az írást a kritikus szakasz során. A migráció után az árva takarítás aszinkron módon fut, miközben elkerüli a folyamatban lévő lekérdezések beavatkozását.

A MongoDB 5.3 elindítását a váltásfolyamok nem generálnak eseményeket az árva dokumentumok frissítéseihez a migráció során, az eseményfolyam pontosságának fenntartása érdekében.

Hatás a teljesítményre és a műveletekre

A darab migráció a hálózati sávszélesség -fogyasztást, a CPU -t és a lemez I/O -t tartalmazza, amelyek befolyásolhatják a klaszter teljesítményét. A MongoDB minimalizálja ezt a hatást:

- A szilárd részvételének korlátozása egyszerre egy migrációra.

- A migrációk sorba állítása és a fázisok törlésének lehetővé tétele, hogy a gyorsabb kirakodáshoz átfutó módon futhassanak.

- Fojtási lehetőségek használata a migráció párhuzamosságának behangolására és a migráció során aggodalom megírására.

Az adatok migrációs adatai ideiglenesen befolyásolják a másodlagos olvasmányokat is, amelyek elmulaszthatják a dokumentumokat az árva tisztítási szakaszban, így az alkalmazásoknak ezt meg kell fontolniuk a lekérdezések megtervezésekor.

Migráció meghatározott forgatókönyvekben

Azokban az esetekben, mint például a zónák közötti migrálás a címkékkel, vagy a székhellyel, a szilárd beállításokig, a MongoDB fokozatosan áttelepíti az adatokat a frissített Shard Key tartományok vagy zónák alapján az újrakonfiguráció után. Például a régi címke -tartományok eltávolítása és az újak létrehozása a kiegyensúlyozó migrációt váltja ki, hogy az adatok ennek megfelelően mozgathassanak.

Amikor a MongoDB klasztereket felhőalapú oldatokba vagy a szildet klaszterek között vándorolják, a migrációs eszközök gyakran szilárd-bölcs migrációt végeznek, a szilánk-adatokat külön-külön másolják, miközben fenntartják a Shard Key eloszlásokat.

Eszközök és segédprogramok a migrációhoz

Az adatátviteli szolgáltatások (DTS) és más harmadik féltől származó eszközök elősegítik az adatok áttelepítését a MongoDB példányok vagy a klaszterek között, a szilárd térképezés kezelése, az adatok konzisztenciája és a növekményes frissítések. Ezek az eszközök gyakran támogatják a nem szilánkokból a szilárd klaszterekbe való áttérést az alapértelmezett Shard kulcsértékek hozzárendelésével a SHARD kulcsok hiányos forrásaihoz.

A kulcspontok összefoglalása

- A MongoDB partíciók adatait a szilánkok segítségével a szilánkok segítségével elosztott darabokra osztják.

- A kiegyensúlyozó automatikusan áttelepíti a darabokat a kiegyensúlyozott adateloszlás fenntartása érdekében.

- A migráció magában foglalja az adatok klónozását, a felzárkózás, az atomi átadás és az aszinkron tisztítás.

- A migráció egy szilánkonként korlátozódik, hogy csökkentse a rendszer hatását.

- A kézi migrációs parancsok adminisztratív irányítást biztosítanak a daraboláshoz.

- Az árva dokumentumokat a migráció után aszinkron módon tisztítják meg.

- A migráció ideiglenesen befolyásolja a teljesítményt és a másodlagos olvasási konzisztenciát.

- A zónák közötti vándorlást vagy a Shard Key -tartományok változásait a migrációk kiváltó újrakonfigurációja kezeli.

- A migrációs eszközök segítenek a klaszterek vagy architektúrák közötti adatok mozgásában.

Ez a migrációs mechanizmus biztosítja, hogy a MongoDB -klaszterek kiegyensúlyozottak, méretezhetőek és teljesítményűek maradjanak az adatok növekedésével és a klaszterkonfigurációk fejlődésével, folyamatos rendelkezésre állást biztosítva az alkalmazások minimális zavarával.