Mysql
 sql >> база данни >  >> RDS >> Mysql

Мигриране на база данни на Oracle към MySQL на AWS, част 1

AWS Database Migration Service (DMS) е услуга за мигриране на бази данни към AWS. Целевата база данни трябва да бъде една от поддържаните бази данни на AWS, като хостваните бази данни на Relational Database Service, DynamoDB и RedShift. Изходната база данни може да бъде база данни на AWS или локална база данни или база данни на друга облачна платформа, като Oracle Cloud Platform. Базата данни източник има нулев престой по време на миграцията.

Защо да мигрирате бази данни?

Може да се наложи мигриране на база данни поради няколко причини, като например следното:

  • Хетерогенна миграция към друга машина за база данни. Например база данни на Oracle към база данни MySQL. Може да се изисква хетерогенна миграция, за да се ползват функции от друга база данни, като например тип база данни, който не се поддържа в изходната база данни. Търговска база данни може да се мигрира към база данни с отворен код. Релационна база данни може да се възползва от мигрирането й към NoSQL база данни.
  • Хомогенна миграция към същия тип машина за база данни, но на различна платформа. Хомогенната миграция може да се използва за създаване на резервно копие на база данни. Локалната база данни може да се възползва от мигрирането й към облачна платформа.
  • Непрекъснато репликация на данни към различни целеви бази данни с цел тестване и развитие и регионално разпространение на бази данни.
  • Бази данни с множество източници може да се мигрира към една база данни за консолидиране.

В две статии ще обсъдим мигрирането на база данни на Oracle към база данни на MySQL с услугата за миграция на база данни. Тази статия има следните раздели:

  • Настройка на средата
  • Създаване на потребител на IAM
  • Създаване на ключ за криптиране
  • Създаване на екземпляри на Oracle и MySQL DB на RDS
  • Подготовка на Oracle и MySQL DBs за DMS
  • Заключение

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

Единственото предварително условие е акаунт в AWS, който може да бъде създаден на тази връзка.

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

Потребителят трябва да получи IAM разрешения и роли за достъп до DMS. Необходими са допълнителни IAM разрешения за достъп до други услуги от DMS; изискват се някои действия от други услуги на AWS като KMS, IAM, EC2 или CloudWatch. В този раздел ще създадем IAM потребител и ще прикачим политика за необходимия набор от разрешения. Изберете услугата AWS IAM и щракнете върху Добавяне на потребител , както е показано на фигура 1.


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

В Добавяне на потребител , посочете Потребителско име (dvohra) и изберете и двата Тип достъп опции, както е показано на фигура 2.


Фигура 2: Конфигуриране на нов потребител

Изберете Персонализирана парола опция за Console Password, посочете персонализирана парола и щракнете върху Напред, както е показано на Фигура 3.


Фигура 3: Посочване на парола

В Разрешения , изберете Прикачване директно на съществуващи правила опция и кликнете върху Създаване на политика за да създадете политика за прикачване, както е показано на фигура 4.


Фигура 4: Добавяне на потребител>Създаване на политика

В Създаване на правила , изберете Създайте своя собствена политика опция, както е показано на фигура 5.


Фигура 5: Създайте своя собствена политика

В Правила за преглед , посочете име на политика (DMS) и копирайте следната политика в Документа с правилата .

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": "dms:*",
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "kms:ListAliases",
            "kms:DescribeKey"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "iam:GetRole",
            "iam:PassRole",
            "iam:CreateRole",
            "iam:AttachRolePolicy"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "ec2:DescribeVpcs",
            "ec2:DescribeInternetGateways",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSubnets",
            "ec2:DescribeSecurityGroups",
            "ec2:ModifyNetworkInterfaceAttribute",
            "ec2:CreateNetworkInterface",
            "ec2:DeleteNetworkInterface"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "cloudwatch:Get*",
            "cloudwatch:List*"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:FilterLogEvents",
            "logs:GetLogEvents"
         ],
         "Resource": "*"
      }
   ]
}

Кликнете върху Проверка на правилата и ако съобщението Правилата е валидна се генерира (вижте фигура 6), щракнете върху Създаване на политика , също показано на фигура 6.


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

В Създаване на потребител съветника, изберете новосъздадения DMS политика и щракнете върху Напред, както е показано на Фигура 7.


Фигура 7: Избиране на Политика за прикачване към потребител

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


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

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


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

Нов потребител се добавя към IAM Console>Потребители , както е показано на Фигура 10.


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

След като създадем нов потребител, ще трябва да влезем като новия потребител, за да създадем DMS миграция. Връзката за влизане в конзолата за да влезете, тъй като новият потребител се получава от идентификационните данни за сигурност за новия потребител (вижте фигура 11).


Фигура 11: Връзка за влизане в конзолата

След като създадете IAM потребител за DMS, излезте като root потребител, както е показано на фигура 12.


Фигура 12: Излезте като root потребител

Отворете URL адреса за вход в браузър, посочете потребителското име и паролата и щракнете върху Вход, както е показано на Фигура 13.


Фигура 13: Влизане като нов потребител на IAM

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

Уверете се, че сте влезли като потребител на IAM, създаден в предишния раздел. Трябва да създадем ключ за криптиране, който да се използва като главен ключ при създаване на DMS миграция. Шифроването трябва да бъде създадено, докато сте влезли като новия IAM потребител, а не като root потребител. Изберете Ключове за шифроване в IAM конзолата и щракнете върху Създаване на ключ , както е показано на Фигура 14.


Фигура 14: Създайте ключ

В Създаване на псевдоним и описание , посочете псевдоним (dms ) и щракнете върху Следваща стъпка, както е показано на Фигура 15.


Фигура 15: Посочване на псевдоним

В Добавяне на етикети щракнете върху Следваща стъпка, защото маркерите не са задължителни. В Ключови администратори изберете потребителя на IAM, добавен като администратор (вижте Фигура 16). Изберете Изтриване на ключ като Позволете на администраторите на ключ да изтрият този ключ и щракнете върху Следваща стъпка.


Фигура 16: Ключови администратори

В Дефиниране на разрешения за използване на ключ изберете потребителите и ролите на IAM, които могат да използват ключа за криптиране; изберете новия IAM потребител и dms-vpc-роля , както е показано на Фигура 17. Щракнете върху Следваща стъпка.


Фигура 17: Дефиниране на разрешения за използване на ключ

В Правилата за преглед на ключовите щракнете върху Готово, както е показано на Фигура 18.


Фигура 18: Предварителен преглед на ключовите правила

Създава се нов ключ за криптиране, както е показано на Фигура 19.


Фигура 19: Ключът за криптиране е създаден

Създаване на Oracle и MySQL DB екземпляри на RDS

Тъй като ще използваме Oracle и MySQL RDS DB екземпляри като източник и цел, съответно, за миграцията на DMS, създайте две RDS инстанции, едната за база данни на Oracle SE, а другата за MySQL. Когато създавате RDS екземпляри в Конфигуриране на разширени настройки, изберете Мрежа и сигурност, за да създадете нов VPC, да създадете нова DB Subnet Group и създайте нова група за защита, както е показано на Фигура 20 за Oracle DB. Ако акаунтът на AWS има ограничение за максималния брой VPC, изтрийте някои неизползвани VPC, преди да създадете RDS екземпляри.


Фигура 20: Конфигуриране на разширени настройки

Инстанциите на RDS за Oracle и MySQL са показани на Фигура 21.


Фигура 21: RDS DB екземпляри

Създадените автоматично групи за сигурност нямат необходимите правила за входящи/изходящи, които трябва да бъдат променени. Щракнете върху връзката за групи за сигурност в RDS конзолата, както е показано за MySQL DB на фигура 22.


Фигура 22: Групи за сигурност

Щракнете върху Редактиране за групата за защита Входящи, както е показано на Фигура 23.


Фигура 23: Група за сигурност>Редактиране

В Редактиране на входящи правила изберете Тип като целия трафик, Протокол като всички, Порт диапазон като 0-65535, Източник като навсякъде и щракнете върху Запиши, както е показано на Фигура 24.


Фигура 24: Редактиране на входящи правила

Модифицираните правила за входящи са показани на фигура 25.


Фигура 25: Променени входящи правила

Изходящите правила позволяват целия трафик по подразбиране (вижте Фигура 26).


Фигура 26: Изходящи правила

Групата за защита по подразбиране, създадена за Oracle DB на RDS, също не позволява целия трафик, както е показано на Фигура 27.


Фигура 27: Група за сигурност за Oracle DB на RDS

Променете входящата група за защита за Oracle DB на RDS с бутона Редактиране, подобно на промяната на правилата за входяща група за защита на MySQL базата данни, за да разрешите целия трафик, както е показано на Фигура 28.


Фигура 28: Група за сигурност за Oracle DB на RDS

Забележете главното потребителско име и главната парола, конфигурирани за всяка от DB екземпляри, докато създавате екземпляри, както е показано за MySQL DB на Фигура 29. Също така, когато създавате MySQL DB на RDS, нито една от настройките за конфигурация (Име на база данни , DB Instance Identifier, Главно потребителско име, Главна парола) трябва да бъдат запазени думи от MySQL, като „MYSQL“.


Фигура 29: Главно потребителско име и главна парола

Подготовка на Oracle и MySQL DBs за DMS

За да използваме Oracle DB и MySQL DB на RDS като DMS източник и цел, съответно, трябва да конфигурираме някои настройки на DB екземпляри. Свържете се с екземплярите на Oracle и MySQL DB в обвивката на командния ред, за да конфигурирате настройките. За да се свържем с екземплярите на RDS DB в обвивката на командния ред, трябва да получим крайната точка за екземплярите на RDS. Крайната точка за Oracle DB на RDS е показана в RDS конзолата на фигура 30.


Фигура 30: Крайна точка за Oracle DB на RDS

Свържете се с екземпляра на Oracle DB със следния sqlplus команда, в която HOST, SID, PORT могат да бъдат различни за различните потребители; стойността HOST се получава чрез премахване на суфикса на порта от крайната точка.

sqlplus [email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
   (HOST=orcl.crbmlbxmp8qi.us-east-1.rds.amazonaws.com)(PORT=1521))
   (CONNECT_DATA=(SID=ORCL)))

Интерфейсът на командния ред SQL*Plus се свързва към Oracle DB на RDS (вижте Фигура 31).


Фигура 31: SQL*Plus CLI, свързан към Oracle DB

Активирайте допълнителното регистриране на ниво база данни за DMS.

exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

Процедурата PL/SQL е завършена, както е показано на Фигура 32.


Фигура 32: Активиране на допълнително регистриране на ниво база данни

Също така активирайте PRIMARY KEY регистриране на ниво база данни.

exec rdsadmin.rdsadmin_util.alter_supplemental_logging
   ('ADD','PRIMARY KEY');

ПЪРВИЧНИЯ КЛЮЧ регистрирането се активира, както е показано на Фигура 33.


Фигура 33: Активиране на регистрирането на ПЪРВИЧЕН КЛЮЧ

Конфигурирайте архивиране на регистрационните файлове за повторно изпълнение за екземпляра на Oracle DB на RDS.

exec rdsadmin.rdsadmin_util.set_configuration
   ('archivelog retention hours',24);

Архивирането се конфигурира, както е показано на Фигура 34.


Фигура 34: Конфигуриране на архивиране

Когато мигрирате база данни, таблиците и данните от таблицата също се мигрират. Създайте таблица на база данни wlslog в базата данни на Oracle.

CREATE TABLE wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,category
   VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),
   code VARCHAR2(255),msg VARCHAR2(255));
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:16-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to STANDBY');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:17-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to STARTING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:18-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to ADMIN');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:19-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to RESUMING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:20-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000361','Started WebLogic AdminServer');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:21-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to RUNNING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:22-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000360','Server started in RUNNING mode');

За да добавите допълнително регистриране за таблица без PRIMARY KEY регистриране или ако ПЪРВИЧЕН КЛЮЧ регистрирането на ниво база данни не е зададено, променете таблицата, за да добавите допълнително регистриране.

alter table wlslog add supplemental log data (ALL) columns;

Допълнителното регистриране също може да бъде активирано в CREATE TABLE изявление.

CREATE TABLE wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,
   category VARCHAR2(255),type VARCHAR2(255),
   servername VARCHAR2(255), code VARCHAR2(255),msg VARCHAR2(255),
   supplemental log data(ALL) columns);

Резултатът от предходните две команди е показан на Фигура 35.


Фигура 35: Добавяне на допълнително регистриране към вече създадена таблица или към нова таблица

След това подгответе MySQL DB екземпляр на RDS за DMS миграция. За да се свържете с MySQL DB, вземете крайната точка (вижте Фигура 36.


Фигура 36: Крайна точка за MySQL DB на RDS

Хостът се получава чрез премахване на суфикса на порта от крайната точка. Използвайки MySQL CLI, свържете се с MySQL от команден ред.

mysql -h mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com -P 3306
   -u dvohra -p

MySQL CLI се свързва с MySQL DB екземпляр на RDS, както е показано на Фигура 37.


Фигура 37: Свързване с MySQL от MySQL CLI

След това създайте и предоставете привилегии за четене и запис за базата данни MySQL на потребителя на DMS (dvohra).

CREATE USER '<user acct>'@'%' IDENTIFIED BY
   <user password>';??? Remove as user dvohra already exists
GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE,
   SELECT ON myschema.* TO '<user acct>'@'%';
GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';

Замествайки потребителския акаунт като dvohra, изходът от някои от командите е показан на Фигура 38.


Фигура 38: Предоставяне на достъп до базата данни MySQL на потребител на DMS

Заключение

В тази статия представихме мигрирането на база данни на Oracle на RDS към MySQL база данни на RDS с помощта на услугата за мигриране на база данни на AWS. В тази статия обсъдихме настройката на изходната и целевата база данни. В следваща статия ще създадем и стартираме миграция.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо вмъкването на MySQL InnoDB е толкова бавно?

  2. Настройване на Django да използва MySQL

  3. PDO MySQL:Вмъкване на няколко реда в една заявка

  4. Как да сравним нулеви стойности в MySQL

  5. Как работи функцията OCTET_LENGTH() в MySQL