MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Мигриране на MongoDB към DynamoDB, част 1

Услугата за мигриране на бази данни на AWS (DMS) е проектирана да мигрира бази данни на AWS надеждно, с нулев престой. Първоначално DMS поддържаше само релационни бази данни, включително AWS Redshift. През април 2017 г. DMS добави две бази данни NoSQL:MongoDB като изходна база данни и AWS DynamoDB като целева база данни. В този урок от две статии ще обсъдим мигрирането на база данни MongoDB към DynamoDB на DMS. Едно от изискванията за използване на MongoDB като източник на DMS е MongoDB да работи като набор от реплики, който ще създадем с помощта на Docker изображение в първата от тези две статии.

Тази статия има следните раздели:

  • Настройка на средата
  • Създаване на IAM потребител за услугата за мигриране на база данни
  • Създаване на ключ за криптиране
  • Създаване на база данни на MongoDB
  • Създаване на DynamoDB таблица
  • Заключение

Настройка на средата

Единственото предварително условие е акаунт в AWS, който може да бъде създаден на адрес https://aws.amazon.com/resources/create-account/. Ще стартираме както изходната, така и целевата база данни на AWS. За източника на MongoDB ще използваме Docker, за който ще стартираме EC2 екземпляр с AMI Container Linux от CoreOS (Stable), избран от AWS Marketplace, както е показано на Фигура 1. CoreOS е избрана като Linux платформа, тъй като има Docker предварително инсталиран на него.


Фигура 1: Избиране на CoreOS AMI за стартиране на EC2 екземпляр

Групата за сигурност, използвана от екземпляра на CoreOS EC2, трябва да има зададени входящи/изходящи правила, за да приема целия трафик. Това предполага трафик на всички протоколи на всички портове между всички източници и дестинации (0.0.0.0/0,::/0 ).

Създаване на IAM потребител за услугата за мигриране на база данни

В този раздел ще създадем IAM потребител за достъп до различните услуги на AWS, използвани при създаването на миграция, включително DMS, EC2, DynamoDB, KMS, IAM и CloudWatch. Първо, трябва да създадем политика с необходимите разрешения. Впоследствие ще създадем потребител и ще присвоим политиката на потребителя. За да създадете правила за IAM, изберете Правила в IAM конзолата и кликнете върху Създаване на правила . В Създаване на правила изберете Създайте своя собствена политика . В Правилата за преглед посочете име на политика (DMS като пример) и копирайте и поставете следния документ с политика в полето Документ за политика.

{ "Версия":"2012-10-17", "Изявление":[ { "Ефект":"Разрешаване", "Действие":"dms:*", "Ресурс":"*" }, { "Ефект":"Разрешаване", "Действие":"dynamodb:*", "Ресурс":"*" }, { "Ефект":"Разрешаване", "Действие":"kms:*", "Ресурс":"*" }, { "Ефект":"Разрешаване", "Действие":"iam:*", "Ресурс":"*" }, { "Ефект":"Разрешаване", "Действие":"ec2:* ", "Ресурс":"*" }, { "Ефект":"Разрешаване", "Действие":"cloudwatch:*", "Ресурс":"*" }, { "Ефект":"Разрешаване", "Действие ":"aws-marketplace:*", "Ресурс":"*" }, { "Ефект":"Разрешаване", "Действие":"дневници:*", "Ресурс":"*" }, { "Ефект ":"Разрешаване", "Действие":[ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Ресурс":"*" } ]}

Кликнете върху Проверка на правилата . Ако изходът е „Това правило е валидно“, щракнете върху Създаване на политика , както е показано на фигура 2.


Фигура 2: Създаване на IAM политика

Създава се нова IAM политика, както е показано на фигура 3.


Фигура 3: IAM политика „DMS“

След това създайте IAM потребител. Изберете Потребители и кликнете върху Добавяне на потребител , както е показано на фигура 4.


Фигура 4: Добавяне на потребител

В Добавяне на потребител , посочете Потребителско име , както е показано на фигура 5. За Тип достъп , изберете Програмен достъп и достъп до конзолата за управление на AWS .


Фигура 5: Добавяне на потребител

За Парола за конзола , изберете Персонализирана парола и посочете парола (вижте фигура 6). Щракнете върху Напред.


Фигура 6: Изберете AWS Access Type>Next

В Задаване на разрешения щракнете върху Прикачване на съществуващи правила директно , както е показано на Фигура 7.


Фигура 7: Задаване на разрешения

Изберете DMS политиката, създадена по-рано, и щракнете върху Напред, както е показано на Фигура 8.


Фигура 8: Избиране на DMS политика

В преглед кликнете върху Създаване на потребител , както е показано на фигура 9.


Фигура 9: Преглед>Създаване на потребител

Създава се потребител на IAM. Копирайте URL адреса, показан на фигура 10, за да влезете в конзолата за управление на AWS като потребителя, създаден.


Фигура 10: IAM потребителски URL

Нов потребител се включва в Потребители (вижте фигура 11).


Фигура 11: IAM потребителски URL

Създаване на ключ за криптиране

След това създайте ключ за криптиране, който да се използва за миграцията на DMS. Влезте като потребител на IAM, създаден и използвайте URL адреса, копиран на фигура 10. Изберете IAM услуга в конзолата за управление на AWS и изберете Ключове за криптиране . Кликнете върху Създаване на ключ за да стартирате съветник за създаване на ключ за криптиране. Използвайте съветника, за да създадете ключ за криптиране (dms ), както е показано на Фигура 12.


Фигура 12: Нов ключ за криптиране

Създаване на база данни на MongoDB

В този раздел ще създадем база данни MongoDB, която впоследствие ще мигрираме към DynamoDB. Ще използваме Docker за стартиране на екземпляр на MongoDB, за който е стартиран екземпляр на CoreOS. За да влезете в екземпляр на CoreOS, получете публичния IP адрес на екземпляра на CoreOS, както е показано на фигура 13.


Фигура 13: Публичен IP адрес на екземпляр на CoreOS

SSH влезте в екземпляра на CoreOS, като използвате двойката ключове и публичния IP.

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

Показва се подканата на командния ред на екземпляра на CoreOS, както е показано на фигура 14.


Фигура 14: Инстанция на CoreOS

След това изпълнете следната команда, за да стартирате Docker контейнер за MongoDB, използвайки изображението на MongoDB „mongo“. Портът на контейнера Docker 27017 е изложен на хоста също като 27017 с помощта на -p опция за docker run . Името на контейнера е зададено на “mongo1” и командата mongod --replSet repl0 се изпълнява в контейнера, създаден за стартиране на набор от реплики на MongoDB, наречен „repl0“. Както бе споменато по-горе, за да използвате MongoDB като източник на DMS, е необходим набор от реплики на MongoDB и самостоятелен MongoDB не може да се използва като източник.

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

Изображението на Docker mongo се изтегля и както е посочено от съобщението „MongoDB starting“ на Фигура 15 MongoDB започва да се стартира.


Фигура 15: Изтегляне на Docker Image docker

Инстанция на MongoDB започва на порт 27017 (вижте Фигура 16). Наборът реплики все още не е създаден и след това ще инициализираме набор от реплики.


Фигура 16: Монго екземпляр стартира

Docker контейнер се изписва с docker ps команда, както е показано на фигура 17.


Фигура 17: Изброяване на Docker контейнер за Mongo

Използвайте следната команда, за да стартирате командна обвивка за интерфейса на командния ред на Mongo (CLI).

docker exec -it mongo1 mongo

MongoDB shell версия 3.4.4 се свързва към URL mongodb://127.0.0.1:27017 , както е показано на Фигура 18.


Фигура 18: Свързване на MongoDB Shell

Показва се командният ред на Mongo CLI, както е показано на Фигура 19.


Фигура 19: Команден ред на Mongo Shell

Задайте базата данни MongoDB да се използва като тест с теста за използване команда, както е показано на фигура 20.


Фигура 20: Задаване на базата данни като тест

След това ще инициализираме набор от реплика, за който трябва да дефинираме членовете или екземплярите на набора от реплика. Получете частния IP на екземпляра на CoreOS EC2, на който се изпълнява контейнерът Docker за MongoDB (вижте фигура 21).


Фигура 21: Частен IP на екземпляр на CoreOS

В Mongo CLI посочете следната конфигурация за конфигурацията на набора реплики.

config ={ "_id" :"repl0", "members" :[ { "_id" :0, "host" :"172.30.2.20:27017" } ]}

Конфигурацията на набора реплики се задава, както е показано на Фигура 22.


Фигура 22: Настройка Конфигурация на набор от реплики

Започнете конфигурацията на набора от реплики, като използвате конфигурацията.

rs.initiate(config)

Наборът реплики се инициализира, както е показано на Фигура 23.


Фигура 23: Наборът реплики е инициализиран

Извеждане на конфигурацията на набора реплики.

rs.conf()

repl0:PRIMARY командният ред показва, че наборът от реплика е инициализиран и основният член на набора от реплика е настроен да изпълнява команди на Mongo CLI. Основният елемент е единственият член в набор от реплика за операции по запис. Създайте колекция MongoDB, наречена wlslog с db.createCollection(<име на колекция>) команда.

db.createCollection("wlslog")

Създава се колекция MongoDB, както е показано на Фигура 24. Колекция MongoDB е колекция от документи. Документите са във формат BSON (двоичен JSON).


Фигура 24: Създаване на колекция

Изпълнете следните оператори, които дефинират JSON документи в Mongo CLI.

doc1 ={"timestamp":"8 април 2014 19:06:16 PDT", "category":"Забележка","type":"WebLogicServer", "име на сървър":"AdminServer","code ":"BEA-000365", "msg":"Състоянието на сървъра е променено на STANDBY"}doc2 ={"timestamp":"8 април 2014 г. 19:06:17 PDT", "category":"Забележка"," type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Състоянието на сървъра е променено на STARTING"}doc3 ={"timestamp":"8 април 2014 г. 7 :06:18 PM PDT", "category":"Забележка","type":"WebLogicServer", "име на сървър":"AdminServer","code":"BEA-000365", "msg":"Състоянието на сървъра е променено to ADMIN"}doc4 ={"timestamp":"8 април 2014 19:06:19 PDT", "category":"Забележка","type":"WebLogicServer", "servername":"AdminServer"," code":"BEA-000365", "msg":"Състоянието на сървъра е променено на RESUMING"}doc5 ={"timestamp":"8 април 2014 19:06:20 PDT", "category":"Забележка", "type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000331", "msg":"Старт WebLogic Admin Server"}doc6 ={"timestamp":"8 април 2014 г. 7 :06:21 вечерта PDT", "category":"Забележка","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Състоянието на сървъра е променено на RUNNING"}doc7 ={" timestamp":"8 април 2014 19:06:22 PDT", "category":"Забележка","type":"WebLogicServer", "име на сървър":"AdminServer","code":"BEA-000360" , "msg":"Сървърът стартира в РАБОТАЩ режим"}

Променливите на JSON документите се дефинират, както е показано на Фигура 25.


Фигура 25: Дефиниране на променливи за JSON документи

Добавете JSON документите към wlslog колекция.

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

Както е показано от изхода на фигура 26, седем документа се добавят към wlslog колекция.


Фигура 26: JSON документи, добавени към колекция

Избройте документите, добавени към wlslog колекция.

db.wlslog.find()

Седемте добавени документа се изброяват, както е показано на Фигура 27.


Фигура 27: Намиране или получаване на документи от колекция Mongo

Създаване на DynamoDB таблица

След като създадем набор от реплики на MongoDB за DMS източник, следва да създадем DynamoDB таблица за DMS целта. Влезте като потребител на IAM (dvohra), създаден по-рано и с назначена политика. Изберете услугата DynamoDB в конзолата за управление на AW и изберете Създаване на таблица , както е показано на Фигура 28.


Фигура 28: DynamoDB>Създаване на таблица

В таблицата Създаване на DynamoDB посочете Име на таблица и посочете Първичен ключ , който също е ключът на дяла, като _id , както е показано на фигура 29. Въпреки че името на таблицата е произволно и е настроено на wlslog , което е същото като колекцията MongoDB, създадена в набора реплики на MongoDB, първичният ключ трябва да бъде настроен на _id защото на всеки документ на MongoDB се присвоява полето за първичен ключ _id .


Фигура 29: Създаване на таблица на DynamoDB

Таблицата на DynamoDB wlslog се създава, както е показано на фигура 30.


Фигура 30: DynamoDB таблица wlslog Създадена

Щракнете върху таблицата DynamoDB wlslog в таблото за управление и подробностите в таблицата, включително първичния ключ _id , се показват (вижте Фигура 31).


Фигура 31: Подробности за wlslog таблица на DynamoDB

Когато се създаде DMS миграция, роля на IAM dms-vpc-role с управлявана политика AmazonDMSVPCManagementRole се създава автоматично. За да може услугата DMS да има достъп до услугата DynamoDB, трябва да променим ролята за достъп до услугата dms-vpc-role за да добавите следния документ за политика, който предоставя достъп до DynamoDB от DMS.

{ "Версия":"2012-10-17", "Изявление":[{ "Ефект":"Разрешаване", "Действие":[ "dynamodb:*" ], "Ресурс":["*" ] }]}

Използвайки същата процедура, използвана за създаване на DMS политика, създайте политика DynamoDB и посочете предходния документ с политика в полето за полето Документ на политика, както е показано на Фигура 32. Щракнете върху Създаване на политика .


Фигура 32: Правила за преглед>Създаване на правила

Политиката DynamoDB се създава, както е показано на Фигура 33.


Фигура 33: IAM Policy DynamoDB Създаден

Ролята dms-vpc-role към която трябва да се добави политиката на DynamoDB, е показана на Фигура 34.


Фигура 34: DMS VPC роля

Щракнете върху dms-vpc-role и добавете политиката на DynamoDB, като използвате политика за прикачване. Политиките на AmazonDMSVPCManagementRole и DynamoDB трябва да бъдат изброени като управлявани политики, както е показано на фигура 35.


Фигура 35: Правила за разрешения в ролята на DMS VPC

Заключение

В тази статия представихме използването на AWS Database Migration Service (DMS) за мигриране на MongoDB към Amazon DynamoDB. Започнахме със създаването на реплика на MongoDB като източник на данни за мигриране и също така създадохме DynamoDB таблица като целева таблица. В следваща статия ще обсъдим създаването и стартирането на DMS миграция за мигриране на данни.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да извлечете подробностите от mongo db и да изпратите или съхраните в обект в метода nodejs Fork

  2. Грешка в MongoDB:Не може да се използва повторно записване с limit=0

  3. mongodb агрегиране php

  4. Push операции в MongoDB

  5. Какви потребителски привилегии на MongoDB са ми необходими, за да добавя потребител към нова/друга база данни на Mongo?