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

Migrace MongoDB na DynamoDB, část 1

Služba AWS Database Migration Service (DMS) je navržena pro spolehlivou migraci databází na AWS s nulovými prostoji. Zpočátku DMS podporoval pouze relační databáze, včetně AWS Redshift. V dubnu 2017 přidal DMS dvě databáze NoSQL:MongoDB jako zdrojovou databázi a AWS DynamoDB jako cílovou databázi. V tomto tutoriálu dvou článků budeme diskutovat o migraci databáze MongoDB na DynamoDB na DMS. Jedním z požadavků pro použití MongoDB jako zdroje DMS je, že MongoDB musí běžet jako sada replik, kterou vytvoříme pomocí obrázku Docker v prvním z těchto dvou článků.

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

  • Nastavení prostředí
  • Vytvoření uživatele IAM pro službu migrace databáze
  • Vytvoření šifrovacího klíče
  • Vytvoření databáze MongoDB
  • Vytvoření tabulky DynamoDB
  • Závěr

Nastavení prostředí

Jediným předpokladem je účet AWS, který lze vytvořit na https://aws.amazon.com/resources/create-account/. Na AWS budeme provozovat zdrojovou i cílovou databázi. Pro zdroj MongoDB použijeme Docker, pro který spustíme instanci EC2 s AMI Container Linux by CoreOS (Stable) vybraným z AWS Marketplace, jak je znázorněno na obrázku 1. CoreOS je vybrán jako platforma Linux, protože má Docker na něm předinstalovaný.


Obrázek 1: Výběr CoreOS AMI ke spuštění instance EC2

Skupina zabezpečení používaná instancí CoreOS EC2 musí mít nastavena příchozí/odchozí pravidla, aby přijímala veškerý provoz. To znamená provoz všech protokolů na všech portech mezi všemi zdroji a cíli (0.0.0.0/0,::/0 ).

Vytvoření uživatele IAM pro službu migrace databáze

V této části vytvoříme uživatele IAM pro přístup k různým službám AWS použitým při vytváření migrace, včetně DMS, EC2, DynamoDB, KMS, IAM a CloudWatch. Nejprve musíme vytvořit Zásadu s požadovanými oprávněními. Následně vytvoříme uživatele a přiřadíme mu politiku. Chcete-li vytvořit zásady IAM, vyberte Zásady v konzole IAM a klikněte na Vytvořit zásady . V části Vytvořit zásady vyberte možnost Vytvořit vlastní zásady . V části Zásady kontroly zadejte název zásady (DMS jako příklad) a zkopírujte a vložte následující dokument zásad do pole Dokument zásad.

{ "Verze":"2012-10-17", "Prohlášení":[ { "Účinek":"Povolit", "Akce":"dms:*", "Zdroj":"*" }, { "Efekt":"Povolit", "Akce":"dynamodb:*", "Zdroj":"*" }, { "Efekt":"Povolit", "Akce":"kms:*", "Zdroj":"*" }, { "Efekt":"Povolit", "Akce":"iam:*", "Zdroj":"*" }, { "Efekt":"Povolit", "Akce":"ec2:* ", "Zdroj":"*" }, { "Efekt":"Povolit", "Akce":"cloudwatch:*", "Zdroj":"*" }, { "Efekt":"Povolit", "Akce" ":"aws-marketplace:*", "Zdroj":"*" }, { "Účinek":"Povolit", "Akce":"logy:*", "Zdroj":"*" }, { "Účinek" ":"Povolit", "Akce":[ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Zdroj":"*" } ]}

Klikněte na Ověřit zásady . Pokud je výstup „Tato zásada je platná“, klikněte na Vytvořit zásady , jak je znázorněno na obrázku 2.


Obrázek 2: Vytvoření zásad IAM

Vytvoří se nová zásada IAM, jak je znázorněno na obrázku 3.


Obrázek 3: Zásady IAM „DMS“

Dále vytvořte uživatele IAM. Vyberte možnost Uživatelé a klikněte na Přidat uživatele , jak je znázorněno na obrázku 4.


Obrázek 4: Přidat uživatele

V části Přidat uživatele , zadejte Uživatelské jméno , jak je znázorněno na obrázku 5. Pro Typ přístupu , vyberte Programový přístup a Přístup ke konzole pro správu AWS .


Obrázek 5: Přidání uživatele

Pro Heslo konzoly , vyberte možnost Vlastní heslo a zadejte heslo (viz obrázek 6). Klikněte na Další.


Obrázek 6: Vyberte Typ přístupu AWS>Další

V části Nastavit oprávnění klikněte na možnost Připojit existující zásady přímo , jak je znázorněno na obrázku 7.


Obrázek 7: Nastavení oprávnění

Vyberte zásady DMS vytvořené dříve a klepněte na tlačítko Další, jak je znázorněno na obrázku 8.


Obrázek 8: Výběr Zásady DMS

V části Kontrola klikněte na Vytvořit uživatele , jak je znázorněno na obrázku 9.


Obrázek 9: Recenze>Vytvořit uživatele

Vytvoří se uživatel IAM. Zkopírujte adresu URL zobrazenou na obrázku 10 a přihlaste se do konzoly pro správu AWS jako vytvořený uživatel.


Obrázek 10: Adresa URL uživatele IAM

Nový uživatel bude uveden v seznamu Uživatelé (viz obrázek 11).


Obrázek 11: Adresa URL uživatele IAM

Vytvoření šifrovacího klíče

Dále vytvořte šifrovací klíč, který bude použit pro migraci DMS. Přihlaste se jako vytvořený uživatel IAM a použijte adresu URL zkopírovanou na obrázku 10. Vyberte IAM v konzole pro správu AWS a vyberte Šifrovací klíče . Klikněte na Vytvořit klíč pro spuštění průvodce vytvořením šifrovacího klíče. Pomocí průvodce vytvořte šifrovací klíč (dms ), jak je znázorněno na obrázku 12.


Obrázek 12: Nový šifrovací klíč

Vytvoření databáze MongoDB

V této sekci vytvoříme databázi MongoDB, kterou následně migrujeme do DynamoDB. Docker budeme používat ke spuštění instance MongoDB, pro kterou byla spuštěna instance CoreOS. Chcete-li se přihlásit k instanci CoreOS, získejte veřejnou IP adresu instance CoreOS, jak je znázorněno na obrázku 13.


Obrázek 13: Veřejná IP adresa instance CoreOS

SSH se přihlaste k instanci CoreOS pomocí páru klíčů a veřejné IP.

ssh -i "docker.pem" [email protected]

Zobrazí se výzva příkazového řádku instance CoreOS, jak je znázorněno na obrázku 14.


Obrázek 14: Instance CoreOS

Dále spusťte následující příkaz a spusťte kontejner Docker pro MongoDB pomocí obrazu MongoDB „mongo“. Port kontejneru Docker 27017 je na hostiteli vystaven také jako 27017 pomocí -p možnost spustit docker . Název kontejneru je nastaven na „mongo1“ a příkaz mongod --replSet repl0 se spouští v kontejneru vytvořeném pro spuštění sady replik MongoDB s názvem „repl0“. Jak již bylo zmíněno dříve, pro použití MongoDB jako zdroje DMS je vyžadována sada replik MongoDB a samostatný MongoDB není jako zdroj použitelný.

docker run -p 27017:27017 mongo mongod --replSet repl0

Obrázek Dockeru mongo se stáhne a jak je indikováno zprávou „MongoDB začíná“ na obrázku 15 MongoDB se začíná spouštět.


Obrázek 15: Stahování Docker Image docker

Instance MongoDB se spustí na portu 27017 (viz obrázek 16). Sada replik ještě nebyla vytvořena a jako další inicializujeme sadu replik.


Obrázek 16: Instance Mongo spuštěna

Kontejner Docker se zobrazí s docker ps příkaz, jak je znázorněno na obrázku 17.


Obrázek 17: Výpis Docker Container pro Mongo

Následující příkaz použijte ke spuštění příkazového prostředí pro rozhraní příkazového řádku Mongo (CLI).

docker exec -it mongo1 mongo

MongoDB shell verze 3.4.4 se připojí na URL mongodb://127.0.0.1:27017 , jak je znázorněno na obrázku 18.


Obrázek 18: Připojení MongoDB Shell

Zobrazí se příkazový řádek Mongo CLI, jak je znázorněno na obrázku 19.


Obrázek 19: Příkazový řádek Mongo Shell

Nastavte databázi MongoDB, aby se používala jako test pomocí testu použití příkaz, jak je znázorněno na obrázku 20.


Obrázek 20: Nastavení databáze jako testovací

Dále inicializujeme sadu replik, pro kterou potřebujeme definovat členy nebo instance sady replik. Získejte privátní IP instanci CoreOS EC2, na které běží kontejner Docker pro MongoDB (viz obrázek 21).


Obrázek 21: Soukromá IP instance CoreOS

V Mongo CLI zadejte následující konfiguraci pro konfiguraci sady replik.

config ={ "_id" :"repl0", "členové" :[ { "_id" :0, "host" :"172.30.2.20:27017" } ]}

Konfigurace sady replik se nastaví, jak ukazuje Obrázek 22.


Obrázek 22: Nastavení Konfigurace sady replik

Zahajte konfiguraci sady replik pomocí konfigurace.

rs.initiate(config)

Sada replik se inicializuje, jak je znázorněno na obrázku 23.


Obrázek 23: Sada replik inicializována

Výstup konfigurace sady replik.

rs.conf()

repl0:PRIMARY příkazový řádek označuje, že sada replik byla inicializována a primární člen sady replik byl nastaven na spouštění příkazů Mongo CLI. Primární je jediný člen v sadě replik pro operace zápisu. Vytvořte kolekci MongoDB s názvem wlslog pomocí db.createCollection() příkaz.

db.createCollection("wlslog")

Vytvoří se kolekce MongoDB, jak je znázorněno na obrázku 24. Kolekce MongoDB je kolekce dokumentů. Dokumenty jsou ve formátu BSON (binární JSON).


Obrázek 24: Vytváření sbírky

Spusťte následující příkazy, které definují dokumenty JSON v Mongo CLI.

doc1 ={"timestamp":"8. dubna 2014 19:06:16 PDT", "category":"Upozornění","type":"WebLogicServer", "servername":"AdminServer","kód ":"BEA-000365", "msg":"Stav serveru změněn na STANDBY"}doc2 ={"timestamp":"8. dubna 2014 19:06:17 PDT", "category":"Upozornění"," type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Stav serveru změněn na STARTING"}doc3 ={"timestamp":"8. dubna 2014 7 :06:18 PM PDT", "category":"Upozornění","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Stav serveru změněn to ADMIN"}doc4 ={"timestamp":"8. dubna 2014 19:06:19 PDT", "category":"Upozornění","type":"WebLogicServer", "servername":"AdminServer"," code":"BEA-000365", "msg":"Stav serveru změněn na RESUMING"}doc5 ={"timestamp":"8. dubna 2014 19:06:20 PDT", "category":"Upozornění", "type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000331", "msg":"Spuštěn server WebLogic Admin Server"}doc6 ={"timestamp":"8. dubna 2014 7 :06:21 PDT", "category":"Upozornění","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Stav serveru změněn na RUNNING"}doc7 ={" timestamp":"8. dubna 2014 19:06:22 PDT", "category":"Upozornění","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000360" , "msg":"Server spuštěn v režimu RUNNING"}

Proměnné dokumentů JSON budou definovány, jak je znázorněno na obrázku 25.


Obrázek 25: Definování proměnných pro dokumenty JSON

Přidejte dokumenty JSON do wlslog kolekce.

db.wlslog.insert([doc1,doc2,doc3,doc4,doc5,doc6,doc7])

Jak ukazuje výstup na obrázku 26, do wlslog se přidá sedm dokumentů kolekce.


Obrázek 26: Dokumenty JSON přidány do kolekce

Seznam dokumentů přidaných do wlslog kolekce.

db.wlslog.find()

Zobrazí se seznam sedmi přidaných dokumentů, jak je znázorněno na obrázku 27.


Obrázek 27: Vyhledání nebo získání dokumentů ze sbírky Mongo

Vytvoření tabulky DynamoDB

Po vytvoření sady replik MongoDB pro zdroj DMS dále vytvoříme tabulku DynamoDB pro cíl DMS. Přihlaste se jako uživatel IAM (dvohra) vytvořený dříve a přiřazený zásadě. V konzole AW Management Console vyberte službu DynamoDB a vyberte Vytvořit tabulku , jak je znázorněno na obrázku 28.


Obrázek 28: DynamoDB>Vytvořit tabulku

V tabulce Vytvořit DynamoDB zadejte Název tabulky a zadejte Primární klíč , což je také klíč oddílu, jako _id , jak je znázorněno na obrázku 29. Ačkoli je název tabulky libovolný a je nastaven na wlslog , která je stejná jako kolekce MongoDB vytvořená v sadě replik MongoDB, primární klíč musí být nastaven na _id protože každému dokumentu MongoDB je přiřazeno pole primárního klíče _id .


Obrázek 29: Vytvoření tabulky DynamoDB

Tabulka DynamoDB wlslog se vytvoří, jak je znázorněno na obrázku 30.


Obrázek 30: Tabulka DynamoDB wlslog Vytvořeno

Klikněte na tabulku DynamoDB wlslog na řídicím panelu a podrobnostech tabulky, včetně primárního klíče _id , se zobrazí (viz Obrázek 31).


Obrázek 31: Tabulka DynamoDB wlslog Detail

Když je vytvořena migrace DMS, role IAM dms-vpc-role se spravovanou zásadou AmazonDMSVPCManagementRole se vytvoří automaticky. Aby služba DMS měla přístup ke službě DynamoDB, musíme upravit přístupovou roli služby dms-vpc-role přidat následující dokument zásad, který poskytuje přístup k DynamoDB z DMS.

{ "Verze":"2012-10-17", "Prohlášení":[{ "Efekt":"Povolit", "Akce":[ "dynamodb:*" ], "Zdroj":["*" ] }]}

Stejným postupem jako při vytváření zásad DMS vytvořte zásadu DynamoDB a zadejte předchozí dokument zásad do pole Dokument zásad, jak je znázorněno na obrázku 32. Klikněte na Vytvořit zásady .


Obrázek 32: Zkontrolujte zásady>Vytvořit zásady

Vytvoří se zásada DynamoDB, jak je znázorněno na obrázku 33.


Obrázek 33: Zásady IAM DynamoDB vytvořeny

Role dms-vpc ke kterému má být politika DynamoDB přidána, je znázorněno na obrázku 34.


Obrázek 34: Role DMS VPC

Klikněte na dms-vpc-role a přidejte zásadu DynamoDB pomocí Zásady připojení. Zásady AmazonDMSVPCManagementRole a DynamoDB by měly být uvedeny jako spravované zásady, jak je znázorněno na obrázku 35.


Obrázek 35: Zásady oprávnění v DMS VPC Role

Závěr

V tomto článku jsme představili použití AWS Database Migration Service (DMS) pro migraci MongoDB na Amazon DynamoDB. Začali jsme vytvořením sady replik MongoDB jako zdroje dat pro migraci a také jsme vytvořili tabulku DynamoDB jako cílovou tabulku. V následujícím článku probereme vytvoření a spuštění migrace DMS za účelem migrace dat.


  1. Mongoose findOneAndUpdate a runValidators nefungují

  2. Jak provedu ekvivalent SQL Join v MongoDB?

  3. Nejlepší způsob, jak uložit datum/čas v mongodb

  4. Mám ukládat tokeny JWT v redis?