Услугата за мигриране на бази данни на 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 адрес на екземпляр на CoreOSSSH влезте в екземпляра на 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 mongoMongoDB 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 миграция за мигриране на данни.