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.