Услугата за мигриране на бази данни на 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" example@sqldat.com
Показва се подканата на командния ред на екземпляра на 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 миграция за мигриране на данни.