Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Migracja bazy danych Oracle do MySQL na AWS, część 1

AWS Database Migration Service (DMS) to usługa umożliwiająca migrację baz danych do AWS. Docelowa baza danych musi być jedną z obsługiwanych przez AWS baz danych, takich jak hostowane bazy danych Relational Database Service, DynamoDB i RedShift. Źródłowa baza danych może być bazą danych w AWS, lokalną bazą danych lub bazą danych na innej platformie Cloud, takiej jak Oracle Cloud Platform. Źródłowa baza danych nie ma przestojów podczas migracji.

Po co migrować bazy danych?

Baza danych może wymagać migracji z kilku powodów, takich jak:

  • Migracja heterogeniczna do innego silnika bazy danych. Na przykład z bazy danych Oracle do bazy danych MySQL. Migracja heterogeniczna może być wymagana w celu skorzystania z funkcji z innej bazy danych, takich jak typ bazy danych nieobsługiwany w źródłowej bazie danych. Komercyjna baza danych może zostać zmigrowana do bazy danych typu open source. Relacyjna baza danych może skorzystać na migracji do bazy danych NoSQL.
  • Jednorodna migracja do tego samego typu silnika bazy danych, ale na innej platformie. Jednorodną migrację można wykorzystać do wykonania kopii zapasowej bazy danych. Lokalna baza danych może skorzystać na migracji na platformę Cloud.
  • Ciągła replikacja danych do różnych docelowych baz danych w celu testowania i rozwoju oraz regionalnej dystrybucji baz danych.
  • Wiele źródłowych baz danych można przenieść do pojedynczej bazy danych w celu konsolidacji.

W dwóch artykułach omówimy migrację bazy danych Oracle do bazy danych MySQL za pomocą usługi migracji bazy danych. Ten artykuł ma następujące sekcje:

  • Ustawianie środowiska
  • Tworzenie użytkownika uprawnień
  • Tworzenie klucza szyfrującego
  • Tworzenie instancji baz danych Oracle i MySQL na RDS
  • Przygotowywanie baz danych Oracle i MySQL dla DMS
  • Wniosek

Ustawianie środowiska

Jedynym warunkiem wstępnym jest konto AWS, które można utworzyć pod tym linkiem.

Tworzenie użytkownika uprawnień

Aby uzyskać dostęp do DMS, użytkownik musi uzyskać uprawnienia i role. Aby uzyskać dostęp do innych usług z DMS, wymagane są dodatkowe uprawnienia; niektóre działania są wymagane od innych usług AWS, takich jak KMS, IAM, EC2 lub CloudWatch. W tej sekcji utworzymy użytkownika IAM i dołączymy politykę dla wymaganego zestawu uprawnień. Wybierz usługę AWS IAM i kliknij Dodaj użytkownika , jak pokazano na rysunku 1.


Rysunek 1: Dodaj użytkownika

W Dodaj użytkownika , określ Nazwę użytkownika (dvohra) i wybierz oba Typ dostępu opcje, jak pokazano na rysunku 2.


Rysunek 2: Konfigurowanie nowego użytkownika

Wybierz Hasło niestandardowe opcji Hasło konsoli, określ własne hasło i kliknij Dalej, jak pokazano na rysunku 3.


Rysunek 3: Określanie hasła

W Uprawnieniach , wybierz Załącz bezpośrednio istniejące zasady opcję i kliknij Utwórz zasady aby utworzyć politykę do dołączenia, jak pokazano na rysunku 4.


Rysunek 4: Dodaj użytkownika>Utwórz politykę

W Utwórz zasady , wybierz Utwórz własną politykę jak pokazano na rysunku 5.


Rysunek 5: Stwórz własną politykę

W Zasadach recenzowania , określ nazwę zasady (DMS) i skopiuj następującą zasadę do Dokumentu zasad .

{
   "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": "*"
      }
   ]
}

Kliknij Zweryfikuj zasady oraz jeśli komunikat Zasady są prawidłowe jest generowany (patrz Rysunek 6), kliknij Utwórz politykę , również pokazane na rysunku 6.


Rysunek 6: Utwórz zasadę

W Utwórz użytkownika kreatora, wybierz nowo utworzony DMS polityki i kliknij Dalej, jak pokazano na rysunku 7.


Rysunek 7: Wybór zasad do dołączenia do użytkownika

W Przeglądzie kliknij Utwórz użytkownika , jak pokazano na rysunku 8.


Rysunek 8: Recenzja>Utwórz użytkownika

Zostanie utworzony nowy użytkownik, jak pokazano na rysunku 9.


Rysunek 9: Utworzono nowego użytkownika

Nowy użytkownik zostanie dodany do Konsoli IAM>Użytkownicy , jak pokazano na rysunku 10.


Rysunek 10: Użytkownicy uprawnień

Po utworzeniu nowego użytkownika musielibyśmy zalogować się jako nowy użytkownik, aby utworzyć migrację DMS. Link logowania do konsoli zalogować się jako nowy użytkownik uzyskany z poświadczeń bezpieczeństwa dla nowego użytkownika (patrz Rysunek 11).


Rysunek 11: Link do logowania do konsoli

Po utworzeniu użytkownika uprawnień do DMS wyloguj się jako użytkownik root, jak pokazano na rysunku 12.


Rysunek 12: Wyloguj się jako użytkownik root

Otwórz adres URL logowania w przeglądarce, określ nazwę użytkownika i hasło, a następnie kliknij Zaloguj się, jak pokazano na rysunku 13.


Rysunek 13: Logowanie jako nowy użytkownik uprawnień

Tworzenie klucza szyfrującego

Upewnij się, że jesteś zalogowany jako użytkownik uprawnień utworzony w poprzedniej sekcji. Musimy stworzyć klucz szyfrowania, który będzie używany jako klucz główny podczas tworzenia migracji DMS. Szyfrowanie należy utworzyć po zalogowaniu się jako nowy użytkownik uprawnień, a nie jako użytkownik root. Wybierz Klucze szyfrowania w konsoli uprawnień i kliknij Utwórz klucz , jak pokazano na rysunku 14.


Rysunek 14: Utwórz klucz

W Utwórz alias i opis , określ alias (dms ) i kliknij Następny krok, jak pokazano na rysunku 15.


Rysunek 15: Określanie aliasu

W Dodaj tagi kliknij Następny krok, ponieważ tagi nie są wymagane. W Key Administrators wybierz użytkownika IAM dodanego jako administrator (patrz Rysunek 16). Wybierz opcję Usuwanie klucza jako Zezwalaj administratorom kluczy na usunięcie tego klucza i kliknij Następny krok.


Rysunek 16: Kluczowi administratorzy

W Zdefiniuj uprawnienia do używania klucza wybierz użytkowników i role uprawnień, które mogą używać klucza szyfrowania; wybierz nowego użytkownika uprawnień i rolę dms-vpc , jak pokazano na rysunku 17. Kliknij Następny krok.


Rysunek 17: Definiowanie uprawnień do użycia klucza

W oknie Preview Key Policy kliknij przycisk Finish, jak pokazano na rysunku 18.


Rysunek 18: Podgląd zasad dotyczących kluczy

Zostanie utworzony nowy klucz szyfrowania, jak pokazano na rysunku 19.


Rysunek 19: Utworzono klucz szyfrowania

Tworzenie instancji baz danych Oracle i MySQL na RDS

Ponieważ będziemy używać instancji Oracle i MySQL RDS DB odpowiednio jako źródła i celu migracji DMS, utwórz dwie instancje RDS, jedną dla bazy danych Oracle SE, a drugą dla MySQL. Podczas tworzenia instancji RDS w Konfiguruj ustawienia zaawansowane, wybierz Sieć i zabezpieczenia, aby utworzyć nowy VPC, utwórz nową grupę podsieci DB i utwórz nową grupę bezpieczeństwa, jak pokazano na rysunku 20 dla Oracle DB. Jeśli konto AWS ma limit maksymalnej liczby VPC, usuń niektóre nieużywane VPC przed utworzeniem instancji RDS.


Rysunek 20: Konfiguracja ustawień zaawansowanych

Instancje RDS dla Oracle i MySQL pokazano na rysunku 21.


Rysunek 21: Instancje bazy danych RDS

Grupy zabezpieczeń utworzone automatycznie nie mają wymaganych reguł ruchu przychodzącego/wychodzącego, które należy zmodyfikować. Kliknij łącze Security Groups w konsoli RDS, jak pokazano dla bazy danych MySQL na rysunku 22.


Rysunek 22: Grupy bezpieczeństwa

Kliknij Edytuj dla grupy zabezpieczeń Przychodzące, jak pokazano na rysunku 23.


Rysunek 23: Grupa bezpieczeństwa>Edytuj

W Edytuj reguły ruchu przychodzącego wybierz opcję Type as All traffic, Protocol as All, Port Range as 0-65535, Source as Anywhere i kliknij Zapisz, jak pokazano na rysunku 24.


Rysunek 24: Edytuj reguły ruchu przychodzącego

Zmodyfikowane reguły ruchu przychodzącego pokazano na rysunku 25.


Rysunek 25: Zmodyfikowane reguły ruchu przychodzącego

Reguły ruchu wychodzącego domyślnie zezwalają na cały ruch (patrz Rysunek 26).


Rysunek 26: Reguły wychodzące

Domyślna grupa bezpieczeństwa utworzona dla Oracle DB na RDS również nie zezwala na cały ruch, jak pokazano na rysunku 27.


Rysunek 27: Grupa bezpieczeństwa dla Oracle DB na RDS

Zmodyfikuj grupę bezpieczeństwa Inbound dla Oracle DB na RDS za pomocą przycisku Edit, podobnie jak modyfikowanie reguł Inbound grupy bezpieczeństwa bazy danych MySQL, aby zezwolić na cały ruch, jak pokazano na rysunku 28.


Rysunek 28: Grupa bezpieczeństwa dla Oracle DB na RDS

Zanotuj główną nazwę użytkownika i hasło główne skonfigurowane dla każdej instancji bazy danych podczas tworzenia instancji, jak pokazano dla bazy danych MySQL na rysunku 29. Ponadto podczas tworzenia bazy danych MySQL na RDS żadne z ustawień konfiguracyjnych (nazwa bazy danych , identyfikator instancji bazy danych, główna nazwa użytkownika, główne hasło) powinny być słowami zastrzeżonymi MySQL, takimi jak „MYSQL”.


Rysunek 29: Główna nazwa użytkownika i główne hasło

Przygotowywanie baz danych Oracle i MySQL dla DMS

Aby używać Oracle DB i MySQL DB na RDS jako odpowiednio źródło i cel DMS, musimy skonfigurować niektóre ustawienia w instancjach DB. Połącz się z instancjami Oracle i MySQL DB w powłoce wiersza poleceń, aby skonfigurować ustawienia. Aby połączyć się z instancjami RDS DB w powłoce wiersza poleceń, musimy uzyskać Endpoint dla instancji RDS. Punkt końcowy bazy danych Oracle na RDS jest pokazany w konsoli RDS na rysunku 30.


Rysunek 30: Punkt końcowy dla Oracle DB na RDS

Połącz się z instancją Oracle DB za pomocą następującego sqlplus komenda, w której HOST, SID,PORT mogą być różne dla różnych użytkowników; wartość HOST jest uzyskiwana przez usunięcie sufiksu portu z punktu końcowego.

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

Interfejs wiersza poleceń SQL*Plus łączy się z bazą danych Oracle na RDS (patrz Rysunek 31).


Rysunek 31: SQL*Plus CLI połączony z bazą danych Oracle

Włącz dodatkowe rejestrowanie na poziomie bazy danych dla DMS.

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

Procedura PL/SQL zostaje zakończona, jak pokazano na rysunku 32.


Rysunek 32: Włączanie dodatkowego rejestrowania na poziomie bazy danych

Włącz także PRIMARY KEY logowanie na poziomie bazy danych.

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

KLUCZ PODSTAWOWY logowanie zostaje włączone, jak pokazano na rysunku 33.


Rysunek 33: Włączanie rejestrowania KLUCZY PODSTAWOWYCH

Skonfiguruj archiwizację dzienników ponawiania dla instancji Oracle DB w RDS.

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

Archiwizacja zostanie skonfigurowana, jak pokazano na rysunku 34.


Rysunek 34: Konfiguracja archiwizacji

Podczas migracji bazy danych migrowane są również tabele i dane tabel. Utwórz tabelę bazy danych wlslog w bazie danych 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');

Aby dodać dodatkowe logowanie dla tabeli bez PRIMARY KEY logowanie, lub jeśli KLUCZ PODSTAWOWY logowanie na poziomie bazy danych nie jest ustawione, zmień tabelę, aby dodać dodatkowe logowanie.

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

Dodatkowe rejestrowanie można również włączyć w CREATE TABLE oświadczenie.

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);

Dane wyjściowe dwóch poprzednich poleceń pokazano na rysunku 35.


Rysunek 35: Dodawanie dodatkowego rejestrowania do już utworzonej tabeli lub do nowej tabeli

Następnie przygotuj instancję MySQL DB na RDS do migracji DMS. Aby połączyć się z bazą danych MySQL, uzyskaj punkt końcowy (patrz Rysunek 36.


Rysunek 36: Punkt końcowy dla bazy danych MySQL na RDS

Host uzyskuje się przez usunięcie sufiksu portu z punktu końcowego. Używając MySQL CLI, połącz się z MySQL z wiersza poleceń.

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

MySQL CLI łączy się z instancją MySQL DB na RDS, jak pokazano na rysunku 37.


Rysunek 37: Łączenie się z MySQL z MySQL CLI

Następnie utwórz i przyznaj uprawnienia do odczytu i zapisu bazy danych MySQL użytkownikowi 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>'@'%';

Zastępując konto użytkownika jako dvohra, dane wyjściowe niektórych poleceń pokazano na rysunku 38.


Rysunek 38: Przyznawanie dostępu do bazy danych MySQL użytkownikowi DMS

Wniosek

W tym artykule przedstawiliśmy migrację bazy danych Oracle na RDS do bazy danych MySQL na RDS przy użyciu usługi migracji bazy danych AWS. W tym artykule omówiliśmy konfigurację źródłowej i docelowej bazy danych. W kolejnym artykule utworzymy i uruchomimy migrację.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę przejść przez wszystkie wiersze tabeli? (MySQL)

  2. Funkcja MySQL COS() — zwraca cosinus liczby w MySQL

  3. Jaki jest ciąg połączenia sterownika MySQL JDBC?

  4. Błąd MySQL 1449:Użytkownik określony jako definiujący nie istnieje

  5. INSERT IGNORE vs INSERT ... NA ZDUPLIKOWANY KLUCZ AKTUALIZACJI