Čo je to MongoDB replikácia?
Replikácia sa označuje ako proces zaistenia dostupnosti rovnakých údajov na viac ako jednom serveri Mongo DB. To je niekedy potrebné z dôvodu zvýšenia dostupnosti údajov.
Pretože ak váš hlavný server MongoDB z nejakého dôvodu zlyhá, nebude k údajom žiadny prístup. Ale ak ste nechali dáta replikovať na iný server v pravidelných intervaloch, budete mať prístup k údajom z iného servera, aj keď zlyhá primárny server.
Ďalším účelom replikácie je možnosť vyrovnania záťaže. Ak sa k systému pripája veľa používateľov, namiesto pripojenia všetkých k jednému systému môžu byť používatelia pripojení k viacerým serverom, aby bolo zabezpečené rovnomerné rozloženie záťaže.
V serveri MongoDB je viac serverov MongDB zoskupených do sád nazývaných sady replík. Sada replík bude mať primárny server, ktorý bude prijímať všetky operácie zápisu od klientov. Všetky ostatné inštancie pridané do sady po tomto sa budú nazývať sekundárne inštancie, ktoré je možné použiť predovšetkým pre všetky operácie čítania.
V tomto výučbe sa dozviete -
- Sada replík: Pridanie prvého člena pomocou rs.initiate ()
- Sada replík: Pridanie sekundárneho súboru pomocou funkcie rs.add ()
- Sada replík: Rekonfigurácia alebo odstránenie pomocou nástroja rs.remove ()
- Riešenie problémov so súpravami replík
Sada replík: Pridanie prvého člena pomocou rs.initiate ()
Ako už bolo spomenuté v predchádzajúcej časti, aby sme umožnili replikáciu, je potrebné najskôr vytvoriť repliku inštancií MongoDB.
Predpokladajme, že v našom príklade máme 3 servery nazývané ServerA, ServerB a ServerC. V tejto konfigurácii bude ServerA náš primárny server a ServerB a ServerC budú naše sekundárne servery. Nižšia snímka obrazovky vám poskytne lepšiu predstavu.
Ďalej sú uvedené kroky, ktoré je potrebné dodržať pri vytváraní sady replík spolu s pridaním prvého člena do sady.
Krok 1) Zaistite, aby všetky inštancie mongod.exe, ktoré sa pridajú do sady replík, boli nainštalované na rôznych serveroch. To zaisťuje, že aj keď jeden server vypadne, ostatné budú k dispozícii, a teda budú k dispozícii aj ďalšie inštancie MongoDB.
Krok 2) Zaistite, aby sa všetky inštancie mongo.exe mohli navzájom prepojiť. Z ServerA zadajte nasledujúce 2 príkazy
mongo -host ServerB -port 27017
mongo -host ServerC -port 27017
Podobne urobte to isté zo zvyšných serverov.
Krok 3) Spustite prvú inštanciu mongod.exe s voľbou replSet. Táto možnosť poskytuje zoskupenie pre všetky servery, ktoré budú súčasťou tejto sady replík.
mongo -replSet "Replica1"
Kde „Replica1“ je názov vašej repliky. Pre názov sady replík môžete zvoliť ľubovoľný zmysluplný názov.
Krok 4) Teraz, keď je prvý server pridaný do sady replík, je ďalším krokom iniciovanie sady replík vydaním nasledujúceho príkazu rs.initiate ()
Krok 5) Overte sadu replík zadaním príkazu rs.conf (), aby ste sa uistili, že je replika nastavená správne
Sada replík: Pridanie sekundárneho súboru pomocou funkcie rs.add ()
Sekundárne servery je možné pridať do repliky pomocou príkazu rs.add. Tento príkaz prevezme názov sekundárnych serverov a pridá servery do replikačnej sady.
Krok 1) Predpokladajme, že ak máte ServerA, ServerB a ServerC, ktoré musia byť súčasťou vašej sady replík a ServerA je definovaný ako primárny server v súprave replík.
Ak chcete do repliky pridať ServerB a ServerC, zadajte príkazy
rs.add("ServerB")rs.add("ServerC")
Sada replík: Rekonfigurácia alebo odstránenie pomocou nástroja rs.remove ()
Na odstránenie servera z konfiguračnej sady musíme použiť príkaz „rs.remove“
Krok 1) Najprv vykonajte vypnutie inštancie, ktorú chcete odstrániť. Jeden to môže urobiť vydaním príkazu db.shutdownserver z shellu mongo.
Krok 2) Pripojte sa k primárnemu serveru
Krok 3) Pomocou príkazu rs.remove odstráňte požadovaný server zo sady replík. Predpokladajme teda, že ak máte sadu replík so servermi ServerA, ServerB a ServerC a chcete serverC zo sady replík odstrániť, zadajte príkaz
rs.remove("ServerC")
Riešenie problémov so súpravami replík
Nasledujúce kroky sú rovnaké, ako je možné riešiť problémy, keď sa vyskytnú problémy s používaním replík.
- Zaistite, aby sa všetky inštancie mongo.exe mohli navzájom prepojiť. Predpokladajme, že ak máte 3 servery, ktoré sa nazývajú ServerA, ServerB a ServerC. Na serveri A zadajte nasledujúce 2 príkazy
mongo -host ServerB -port 27017mongo -host ServerC -port 27017
- Spustite príkaz rs.status. Tento príkaz udáva stav sady replík. V predvolenom nastavení si každý člen bude navzájom posielať správy, ktoré sa nazývajú „prezenčné správy“, čo naznačuje, že server je nažive a pracuje. Príkaz „status“ získa stav týchto správ a zobrazí, či existujú problémy s niektorými členmi v množine replík.
- Skontrolujte veľkosť Oplogu - The Oplog je kolekcia v MongoDB, ktorá uchováva históriu zápisov, ktoré boli vykonané do databázy MongoDB. MongoDB potom použije tento Oplog na replikáciu zápisov na ostatných členov v množine replík. Ak chcete skontrolovať Oplog, pripojte sa k požadovanej inštancii člena a spustite príkaz rs.printReplicationInfo. Tento príkaz zobrazí veľkosť protokolu a ako dlho môže držať transakcie v protokole, kým sa nezaplní.
Zhrnutie: