sql >> Databáze >  >> NoSQL >> MongoDB

Migrace MongoDB na DynamoDB, část 2

Služba AWS Database Migration Service (DMS) přidala v roce 2017 podporu pro dvě databáze NoSQL:MongoDB jako zdrojovou databázi a AWS DynamoDB jako cílovou databázi. Ve dvoučlánkovém tutoriálu migrujeme databázi MongoDB do DynamoDB na DMS. V prvním článku „Migrace MongoDB na DynamoDB, část 1“ jsme vytvořili sadu replik MongoDB a tabulku DynamoDB. V tomto pokračování článku probereme vytvoření a spuštění migrace DMS za účelem migrace dat.

Tento článek má následující sekce:

  • Vytvoření migrace DMS
  • Spuštění migrace
  • Obnovení migrace
  • Smazání migrace
  • Závěr

Vytvoření migrace DMS

Dále vytvoříme migraci DMS pro migraci databáze MongoDB do DynamoDB. Přihlaste se jako uživatel IAM (dvohra nebo jiný) vytvořený pro DMS a vyberte DMS v AWS Management Console. Klikněte na Vytvořit migraci na DMS Dashboard, jak je znázorněno na obrázku 1.


Obrázek 1: Vytvořit migraci

Klikněte na Další na úvodní stránce DMS, jak je znázorněno na obrázku 2.


Obrázek 2: Vítejte>Další

Vytvořit instanci replikace zobrazí se dialogové okno, jak je znázorněno na obrázku 3, ve kterém nakonfigurujeme instanci replikace pro zahájení připojení mezi zdrojovou a cílovou databází, přenos dat a uložení jakýchkoli změn ve zdrojové databázi během počátečního načtení do mezipaměti.


Obrázek 3: Vytvořit instanci replikace

Do pole Název zadejte název instance replikace vyberte Třídu instance , vyberte VPC a vyberte možnost, zda Multi-AZ má být vytvořena instance replikace. Popis , které je obvykle volitelné v konfigurovatelných nastaveních, je povinné pole. Pro všechna tato pole kromě VPC jsou k dispozici výchozí nastavení. Použitá nastavení instance replikace jsou znázorněna na obrázku 4.


Obrázek 4: Nastavení instance replikace

Vyberte možnost, aby byla instance replikace Veřejně přístupná a klikněte na Pokročilé nakonfigurujte pokročilé parametry, jak je znázorněno na obrázku 5.


Obrázek 5: Nastavení instance replikace jako veřejně přístupné

V části Pokročilé pro všechna pole jsou k dispozici výchozí nastavení (viz obrázek 6).


Obrázek 6: Pokročilá nastavení

Výchozí nastavení, kromě hlavního klíče KMS, který musí být nastaven na šifrovací klíč (dms) vytvořený před přihlášením jako uživatel IAM (dvohra), jsou vhodná pro jakoukoli instanci replikace, jak je znázorněno na obrázku 7. Klepněte na tlačítko Další.


Obrázek 7: Pokročilá nastavení>Další

Začne se vytvářet instance replikace, jak je uvedeno ve zprávě na obrázku 8. Při vytváření instance replikace zadejte další koncové body databáze. Koncové body databáze však nelze testovat, dokud nebude vytvořena instance replikace.


Obrázek 8: Vytváří se instance replikace

Pro zdrojový modul , vyberte mongodb databáze, jak je znázorněno na obrázku 9.


Obrázek 9: Výběr Source Engine jako mongodb

Pro Cílový vyhledávač , vyberte dynamodb databáze, jak je znázorněno na obrázku 10.


Obrázek 10: Výběr cílového motoru jako dynamodb

Identifikátor koncového bodu může být zachováno jako výchozí pro zdrojovou i cílovou databázi, ale je třeba zadat další parametry připojení. Pro Podrobnosti o připojení ke zdrojové databázi , zadejte Název serveru jako soukromá adresa IP (obrázek 21 v prvním článku „Migrace MongoDB na DynamoDB, část 1“) instance CoreOS EC2, na které se sada replik MongoDB spouští pomocí Dockeru a určete Port jako 27017 (viz obrázek 11). Pro režim SSL vyberte „žádný“. a Režim ověřování . Zadejte Název databáze jako test a vyberte Mechanismus ověřování jako výchozí .


Obrázek 11: Podrobnosti o připojení zdrojové databáze

Pro zdrojový databázový stroj mongodb , vyberte Režim metadat jako dokument a vyberte možnost _id jako samostatný sloupec , jak je znázorněno na obrázku 12. Spustit test Tlačítka se používají k testování připojení ke zdrojové a cílové databázi a nejsou povolena, dokud nebude vytvořena instance replikace.


Obrázek 12: Další nastavení pro zdrojový modul

Zkopírujte Role ARN pro role dms-vpc z konzoly IAM, jak je znázorněno na obrázku 13. Role ARN se má použít k definování připojení k cílové databázi pro migraci DMS.


Obrázek 13: Kopírování role ARN

Zkopírujte a vložte Role ARN do Access Role ARN služby pole, jak je znázorněno na obrázku 14.


Obrázek 14: Role přístupu ke službě ARN

Po vytvoření instance replikace se zobrazí zpráva označující totéž, jak je znázorněno na obrázku 15.


Obrázek 15: Vytvořena instance replikace

Pro cílovou databázi klikněte na Spustit test pro testování připojení. Pokud se spojení naváže, měla by se zobrazit zpráva „Připojení bylo úspěšně otestováno“ (viz obrázek 16).


Obrázek 16: Připojení k cílové databázi bylo úspěšně testováno

Podobně klikněte na Spustit test pro zdrojovou databázi a po navázání připojení by se měla zobrazit zpráva „Připojení bylo úspěšně otestováno“, jak ukazuje obrázek 17.


Obrázek 17: Připojení ke zdrojové databázi bylo úspěšně testováno

Klikněte na Další v části Koncové body databáze , jak je znázorněno na obrázku 18.


Obrázek 18: Koncové body databáze>Další

Dále nakonfigurujte úlohu migrace v části Vytvořit úlohu strana. Úloha se skládá z několika nastavení, včetně názvu úlohy, popisu úlohy, zdrojového koncového bodu, cílového koncového bodu, instance replikace, typu migrace, nastavení úlohy, mapování tabulek a pokročilých nastavení. Výchozí nastavení pro Název úlohy a neupravitelná nastavení pro koncový bod zdroje , Cílový koncový bod , Instance replikace a Typ migrace jsou znázorněny na obrázku 19.


Obrázek 19: Vytvořit nastavení úlohy

Přidejte vhodný popis a vyberte Typ migrace z rozevíracího seznamu na obrázku 20. Různé možnosti pro typ migrace jsou Migrovat existující data , Migrujte stávající data a replikujte probíhající změny a Pouze replikovat změny dat . Chcete-li migrovat existující data z MongoDB do DynamoDB s ustanovením pro replikaci probíhajících změn, vyberte Migrovat stávající data a replikovat probíhající změny . Úkol migrace po vytvoření má ustanovení, které lze následně upravit, s výjimkou Typ migrace nastavení, které je po vytvoření úlohy migrace neměnné. Proto vyberte typ migrace za předpokladu, že se jedná o trvalé nastavení.


Obrázek 20: Výběr Typ migrace

Vyberte Nastavení úlohy pro režim přípravy cílového stolu , Zastavit úlohu po dokončení úplného načtení , Zahrnout do replikace sloupce LOB a Povolit protokolování (viz obrázek 21).


Obrázek 21: Nastavení úkolu

Klikněte na Pokročilá nastavení , jak je znázorněno na obrázku 22, pro konfiguraci pokročilých nastavení, která zahrnují Ovládací tabulku nastavení a Ladění nastavení. Výchozí pokročilá nastavení mohou být zachována.


Obrázek 22: Pokročilá nastavení

V Mapování tabulek , nakonfigurujte pravidla výběru, jak ukazuje Obrázek 23. Alespoň jedno pravidlo výběru s Zahrnout je vyžadována akce. Vyberte Název schématu (test) ve zdroji DMS MongoDB. Název schématu je stejný jako název databáze MongoDB, což je test . Zadejte Název tabulky je jako „%“, který vybere všechny tabulky. stůl se také nazývá kolekce v MongoDB. Vyberte Akce jako Zahrnout , který zahrnuje objekty vybrané pravidlem výběru. Vyloučit akce jsou zpracovány po zahrnout akce.


Obrázek 23: Mapování tabulek

Lze také nakonfigurovat zdrojové filtry pro omezení počtu a typu záznamů přenášených ze zdroje do cíle. Klikněte na Přidat pravidlo výběru , jak je znázorněno na obrázku 24.


Obrázek 24: Přidat pravidlo výběru

Transformační pravidla mohou být přidána pro vytvoření velkých/malých písmen a přidání/odebrání předpon/přípon transformací. Pokud bylo povoleno protokolování, DMS vytvoří roli pro přihlášení do CloudWatch. Vytvořením úlohy implicitně udělujete oprávnění potřebná pro přístup a přihlášení do CloudWatch. Klikněte na Vytvořit úkol , jak je znázorněno na obrázku 25.


Obrázek 25: Vytvořit úkol

Začne se vytvářet úloha migrace (viz Obrázek 26). Zpočátku Stav je „Vytváření“. Stav by se měl aktualizovat automaticky a k dispozici je také možnost kliknout na tlačítko aktualizace pro pravidelné obnovení stavu.


Obrázek 26: Začne se vytvářet úloha migrace

Když se vytvoří úkol, zobrazí se Stav se stane Připraven , jak je znázorněno na obrázku 27.


Obrázek 27: Stav úlohy Připraveno

Role IAM pro přístup a protokolování CloudWatch se vytvoří automaticky, jak je znázorněno na obrázku 28.


Obrázek 28: Role IAM pro protokoly CloudWatch

Spuštění migrace

Chcete-li spustit úlohu migrace, klikněte na Start/Pokračovat , jak je znázorněno na obrázku 29.


Obrázek 29: Spustit/obnovit úlohu

Stav úlohy se změní na Spouštění , jak je znázorněno na obrázku 30.


Obrázek 30: Spouštění úlohy

Po dokončení úlohy se načtou tabulky sloupec uvádí počet načtených tabulek jako 1, Stav se stane Zastaveno , Úplné % by měl uvádět 100 , jak je znázorněno na obrázku 31. Jako Typ sloupec označuje, že typ migrace je Plné zatížení a průběžná replikace .


Obrázek 31: Úplné načtení dokončeno

Kromě Načtených tabulek sloupec Načítání tabulek , Tabulky ve frontě a Chyba v tabulkách také získat seznam, jak je znázorněno na obrázku 32.


Obrázek 32: Načítání tabulek, Tabulky ve frontě a Chyby tabulek jsou všechny 0

V DynamoDB, wlslog tabulka uvádí sedm položek, jak ukazuje Obrázek 33. Dvě další tabulky, awsdms_apply_exceptions a awsdms_full_load_exceptions , také se automaticky vytvoří. Tabulka awsdms_apply_exceptions poskytuje podrobnosti o výjimce, včetně názvu a popisu chyby, příkazu, který byl spuštěn, když k chybě došlo, názvu úlohy, vlastníka tabulky, názvu tabulky a času výjimky. Tabulka awsdms_full_load_exceptions poskytuje informace o výjimkách generovaných po plném načtení.


Obrázek 33: Tabulka wlslog uvádí sedm položek

Klikněte na _id zobrazíte dokument (_doc atribut value), jak je znázorněno na obrázku 34.


Obrázek 34: Dokument pro položku uloženou v DynamoDB

Filtr DynamoDB lze použít k filtrování vyhledávání. Jako příklad vyhledejte konkrétní _id zadáním _id jako pole, vyberte Řetězec jako typ pole, přičemž jako operátor filtru vyberete ‚=‘ a určíte _id vyhledejte, jak je znázorněno na obrázku 35. Klikněte na Zahájit hledání .


Obrázek 35: Použití filtru

Data řádku tabulky DynamoDB pro _id zadaný bude uveden (viz obrázek 36).


Obrázek 36: Filtrovaná data pro konkrétní _id

Jakmile úloha migrace dokončí migraci databáze, stav úlohy se změní na Zastaveno , ale koncové body migrace jsou stále aktivní , jak je znázorněno na obrázku 37.


Obrázek 37: Koncové body jsou aktivní i po dokončení migrace a zastavení úlohy

Obnovení migrace

Úloha migrace, která byla zastavena, může být restartována nebo obnovena. Níže jsou uvedeny některé důvody pro obnovení nebo restartování úlohy:

  • Do existující kolekce byl přidán nový dokument (nazývané také tabulka ) ve zdrojové databázi DMS MongoDB
  • Do databáze MongoDB byla přidána nová kolekce (tabulka)
  • Migraci je třeba znovu spustit s jinými pravidly výběru, což může být nezbytné, například pokud je třeba přidat předponu tabulky pomocí transformačního pravidla.

Jako příklad přidejte další tři dokumenty do wlslog kolekce v Mongo CLI.

doc8 = {"timestamp":"Apr 8, 2014 7:06:23 PM PDT",
   "category":"Notice","type":"WebLogicServer",
   "servername":"AdminServer","code":"BEA-000360",
   "msg":"Server in RUNNING mode"}
doc9 = {"timestamp":"Apr 8, 2014 7:06:24 PM PDT",
   "category":"Notice","type":"WebLogicServer",
   "servername":"AdminServer","code":"BEA-000365",
   "msg":"Server Stopping"}
doc10 = {"timestamp":"Apr 8, 2014 7:06:25 PM PDT",
   "category":"Notice","type":"WebLogicServer",
   "servername":"AdminServer","code":"BEA-000361",
   "msg":"Server Resumed"}
db.wlslog.insert([doc8,doc9,doc10])

Jak ukazuje výstup na obrázku 38, tři dokumenty se přidají.


Obrázek 38: Přidávání dalších tří dokumentů

Klikněte na Spustit/obnovit pro obnovení zastavené úlohy, jak ukazuje Obrázek 39.


Obrázek 39: Spustit/obnovit zastavenou úlohu

V části Spustit úlohu V dialogovém okně jsou k dispozici dvě možnosti:Start nebo Restartovat . Start volba spustí úlohu a načte nové tabulky nebo kolekce přidané do zdroje DMS. Start volba také načte jakoukoli tabulku, která byla v předchozím spuštění načtena pouze částečně. Start volba nenačte data (nová nebo stará) do tabulky, která již byla kompletně načtena do cílové databáze. Restartovat volba restartuje úlohu a odstraní existující data v cílové databázi a restartuje plné zatížení. Ve skutečnosti, Restartovat volba načte nová data přidaná do existujících tabulek kromě načtení všech nových tabulek, které jsou přidány do zdroje DMS. Protože jsme přidali nová data do existující tabulky, musíme vybrat možnost Restartovat a klikněte na Spustit úlohu , jak je znázorněno na obrázku 40.


Obrázek 40: Restartování úlohy

Úloha se restartuje, odstraní existující tabulky v cílové databázi a načte všechna data ze zdrojové databáze do cílové databáze. Po dokončení načítání dat se stav úlohy změní na Načítání dokončeno (viz obrázek 41).


Obrázek 41: Načítání dokončeno

Klikněte na tlačítko aktualizace v DynamoDB, jak je znázorněno na obrázku 42.


Obrázek 42: Obnovení dat v tabulce wlslog

Počet uvedených položek je 10, jak je znázorněno na obrázku 43, namísto sedmi před restartováním úlohy. Tři nové položky, které jsme přidali, tvoří celkem 10 položek.


Obrázek 43: Výpis 10 položek po přidání nových položek a obnovení dat

Nová migrovaná data jsou odlišena od dat načtených v 1 běhu jinou předponou; data načtená v 1 běhu mají předponu 59401 v _id a data načtená ve 2 běhu mají předponu 59402 . Filtr Volba může být použita pro výpis pouze nových dat, jak je znázorněno na obrázku 44.


Obrázek 44: Filtrování dat pro zobrazení pouze tří nových položek

Stav úlohy se opět změní na Zastaveno po migraci nových dat, jak je znázorněno na obrázku 45.


Obrázek 45: Po dokončení plného načtení se stav změní na Zastaveno

Odstranění migrace

Chcete-li migraci odstranit, vyberte migraci a klikněte na Odstranit (viz obrázek 46).


Obrázek 46: Smazat

V části Smazat úkol klikněte na Smazat , jak je znázorněno na obrázku 47.


Obrázek 47: Smazat ověření úlohy

Stav úkolu se změní na Mazání , jak je znázorněno na obrázku 48, před odstraněním úlohy.


Obrázek 48: Mazání úlohy

Odstraněním úlohy se neodstraní používané koncové body DMS; to znamená, že může být vytvořen nový úkol.

Závěr

Ve dvou článcích jsme diskutovali o migraci databáze MongoDB na tabulky DynamoDB pomocí služby AWS Database Migration Service.


  1. MongoDb:najděte hluboce vnořený objekt pomocí $lookup

  2. Nováček aplikací v reálném čase - Node.JS + Redis nebo RabbitMQ -> klient/server jak?

  3. 5 způsobů, jak získat vteřiny z rande v MongoDB

  4. Jmenné prostory v Redis?