Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Migration einer Oracle-Datenbank zu MySQL auf AWS, Teil 1

AWS Database Migration Service (DMS) ist ein Service zum Migrieren von Datenbanken zu AWS. Die Zieldatenbank muss eine der unterstützten Datenbanken auf AWS sein, wie z. B. die vom Relational Database Service gehosteten Datenbanken, DynamoDB und RedShift. Die Quelldatenbank könnte eine Datenbank auf AWS oder eine lokale Datenbank oder eine Datenbank auf einer anderen Cloud-Plattform wie Oracle Cloud Platform sein. Die Quelldatenbank hat während der Migration keine Ausfallzeit.

Warum Datenbanken migrieren?

Eine Datenbank muss möglicherweise aus mehreren Gründen migriert werden, z. B. aus den folgenden:

  • Heterogene Migration zu einer anderen Datenbank-Engine. Zum Beispiel eine Oracle-Datenbank zu einer MySQL-Datenbank. Eine heterogene Migration kann erforderlich sein, um Funktionen aus einer anderen Datenbank zu nutzen, z. B. ein Datenbanktyp, der in der Quelldatenbank nicht unterstützt wird. Eine kommerzielle Datenbank könnte auf eine Open-Source-Datenbank migriert werden. Eine relationale Datenbank könnte von der Migration zu einer NoSQL-Datenbank profitieren.
  • Homogene Migration auf denselben Datenbank-Engine-Typ, aber auf einer anderen Plattform. Homogene Migration könnte verwendet werden, um eine Sicherung einer Datenbank zu erstellen. Eine lokale Datenbank könnte von der Migration auf eine Cloud-Plattform profitieren.
  • Kontinuierliche Datenreplikation auf verschiedene Zieldatenbanken zum Zweck des Testens und Entwickelns und regionale Verteilung der Datenbanken.
  • Mehrere Quelldatenbanken kann zur Konsolidierung in eine einzelne Datenbank migriert werden.

In zwei Artikeln werden wir die Migration einer Oracle-Datenbank zu einer MySQL-Datenbank mit Database Migration Service besprechen. Dieser Artikel hat die folgenden Abschnitte:

  • Einstellung der Umgebung
  • Erstellen eines IAM-Benutzers
  • Erstellen eines Verschlüsselungsschlüssels
  • Erstellen von Oracle- und MySQL-DB-Instances auf RDS
  • Oracle- und MySQL-DBs für DMS vorbereiten
  • Schlussfolgerung

Einstellung der Umgebung

Einzige Voraussetzung ist ein AWS-Konto, das unter diesem Link erstellt werden kann.

Erstellen eines IAM-Benutzers

Ein Benutzer muss IAM-Berechtigungen und -Rollen erhalten, um auf DMS zugreifen zu können. Für den Zugriff auf andere Dienste von DMS sind zusätzliche IAM-Berechtigungen erforderlich; Einige Aktionen sind von anderen AWS-Services wie KMS, IAM, EC2 oder CloudWatch erforderlich. In diesem Abschnitt erstellen wir einen IAM-Benutzer und hängen eine Richtlinie für die erforderlichen Berechtigungen an. Wählen Sie den AWS IAM-Service aus und klicken Sie auf Benutzer hinzufügen , wie in Abbildung 1 gezeigt.


Abbildung 1: Benutzer hinzufügen

Unter Benutzer hinzufügen , geben Sie einen Benutzernamen an (dvohra) und wählen Sie beide Zugriffstyp aus Optionen, wie in Abbildung 2 gezeigt.


Abbildung 2: Neuen Benutzer konfigurieren

Wählen Sie das benutzerdefinierte Passwort aus Option für das Konsolenkennwort, geben Sie ein benutzerdefiniertes Kennwort ein und klicken Sie auf Weiter, wie in Abbildung 3 gezeigt.


Abbildung 3: Passwort angeben

Unter Berechtigungen , wählen Sie Vorhandene Richtlinien direkt anhängen aus Option und klicken Sie auf Richtlinie erstellen um eine Richtlinie zum Anhängen zu erstellen, wie in Abbildung 4 gezeigt.


Abbildung 4: Benutzer hinzufügen>Richtlinie erstellen

In Richtlinie erstellen , wählen Sie Eigene Richtlinie erstellen aus Option, wie in Abbildung 5 gezeigt.


Abbildung 5: Erstellen Sie Ihre eigene Richtlinie

In Bewertungsrichtlinien , geben Sie einen Richtliniennamen (DMS) an und kopieren Sie die folgende Richtlinie in das Richtliniendokument .

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

Klicken Sie auf Richtlinie validieren und wenn die Meldung Die Richtlinie ist gültig generiert wird (siehe Abbildung 6), klicken Sie auf Richtlinie erstellen , auch in Abbildung 6 dargestellt.


Abbildung 6: Richtlinie erstellen

Im Benutzer erstellen wählen Sie das neu erstellte DMS aus Richtlinie und klicken Sie auf Weiter, wie in Abbildung 7 gezeigt.


Abbildung 7: Richtlinie zum Anhängen an Benutzer auswählen

Klicken Sie unter Überprüfung auf Nutzer erstellen , wie in Abbildung 8 gezeigt.


Abbildung 8: Überprüfen Sie>Benutzer erstellen

Ein neuer Benutzer wird erstellt, wie in Abbildung 9 gezeigt.


Abbildung 9: Neuer Benutzer erstellt

Ein neuer Benutzer wird zur IAM-Konsole>Benutzer hinzugefügt , wie in Abbildung 10 gezeigt.


Abbildung 10: IAM-Benutzer

Nachdem wir einen neuen Benutzer erstellt haben, müssen wir uns als neuer Benutzer anmelden, um die DMS-Migration zu erstellen. Der Login-Link für die Konsole um sich als neuer Benutzer anzumelden, wird aus den Sicherheitsanmeldeinformationen für den neuen Benutzer abgerufen (siehe Abbildung 11).


Abbildung 11: Konsolen-Login-Link

Nachdem Sie einen IAM-Benutzer für DMS erstellt haben, melden Sie sich als Root-Benutzer ab, wie in Abbildung 12 gezeigt.


Abbildung 12: Melden Sie sich als Root-Benutzer ab

Öffnen Sie die Anmelde-URL in einem Browser, geben Sie den Benutzernamen und das Passwort ein und klicken Sie auf Anmelden, wie in Abbildung 13 gezeigt.


Abbildung 13: Anmelden als neuer IAM-Benutzer

Erstellen eines Verschlüsselungsschlüssels

Stellen Sie sicher, dass Sie als der im vorherigen Abschnitt erstellte IAM-Benutzer angemeldet sind. Wir müssen einen Verschlüsselungsschlüssel erstellen, der beim Erstellen einer DMS-Migration als Hauptschlüssel verwendet wird. Die Verschlüsselung muss erstellt werden, während Sie als neuer IAM-Benutzer und nicht als Root-Benutzer angemeldet sind. Wählen Sie Verschlüsselungsschlüssel aus in der IAM-Konsole und klicken Sie auf Schlüssel erstellen , wie in Abbildung 14 gezeigt.


Abbildung 14: Schlüssel erstellen

Unter Alias ​​und Beschreibung erstellen , geben Sie einen Alias an (dms ) und klicken Sie auf Nächster Schritt, wie in Abbildung 15 gezeigt.


Abbildung 15: Alias ​​angeben

Klicken Sie unter Tags hinzufügen auf Nächster Schritt, da Tags nicht erforderlich sind. Wählen Sie in Key Administrators den als Administrator hinzugefügten IAM-Benutzer aus (siehe Abbildung 16). Wählen Sie Schlüssellöschung als Schlüsseladministratoren erlauben, diesen Schlüssel zu löschen, und klicken Sie auf Nächster Schritt.


Abbildung 16: Schlüsseladministratoren

Wählen Sie in Schlüsselnutzungsberechtigungen definieren die IAM-Benutzer und -Rollen aus, die den Verschlüsselungsschlüssel verwenden dürfen; Wählen Sie den neuen IAM-Benutzer und die dms-vpc-role aus , wie in Abbildung 17 gezeigt. Klicken Sie auf Nächster Schritt.


Abbildung 17: Schlüsselnutzungsberechtigungen definieren

Klicken Sie in der Vorschau der Schlüsselrichtlinie auf Fertig stellen, wie in Abbildung 18 gezeigt.


Abbildung 18: Vorschau der Schlüsselrichtlinie

Ein neuer Verschlüsselungsschlüssel wird erstellt, wie in Abbildung 19 gezeigt.


Abbildung 19: Verschlüsselungsschlüssel erstellt

Erstellen von Oracle- und MySQL-DB-Instances auf RDS

Da wir Oracle- und MySQL-RDS-DB-Instanzen als Quelle bzw. Ziel für die DMS-Migration verwenden werden, erstellen Sie zwei RDS-Instanzen, eine für die Oracle SE-Datenbank und die andere für MySQL. Wählen Sie beim Erstellen der RDS-Instanzen in Erweiterte Einstellungen konfigurieren Netzwerk und Sicherheit aus, um eine neue VPC zu erstellen, erstellen Sie eine neue DB-Subnetzgruppe und erstellen Sie eine neue Sicherheitsgruppe, wie in Abbildung 20 für Oracle DB gezeigt. Wenn das AWS-Konto eine Begrenzung der maximalen Anzahl von VPCs hat, löschen Sie einige ungenutzte VPCs, bevor Sie die RDS-Instanzen erstellen.


Abbildung 20: Erweiterte Einstellungen konfigurieren

Die RDS-Instanzen für Oracle und MySQL sind in Abbildung 21 dargestellt.


Abbildung 21: RDS-DB-Instances

Die automatisch erstellten Sicherheitsgruppen verfügen nicht über die erforderlichen Eingangs-/Ausgangsregeln, die geändert werden müssen. Klicken Sie in der RDS-Konsole auf den Link für Sicherheitsgruppen, wie für die MySQL-Datenbank in Abbildung 22 gezeigt.


Abbildung 22: Sicherheitsgruppen

Klicken Sie für die Sicherheitsgruppe Eingehend auf Bearbeiten, wie in Abbildung 23 gezeigt.


Abbildung 23: Sicherheitsgruppe>Bearbeiten

Wählen Sie unter Eingehende Regeln bearbeiten die Option Typ als Gesamter Datenverkehr, Protokoll als Alle, Portbereich als 0-65535, Quelle als Überall aus und klicken Sie auf Speichern, wie in Abbildung 24 gezeigt.


Abbildung 24: Eingangsregeln bearbeiten

Die modifizierten Inbound-Regeln sind in Abbildung 25 dargestellt.


Abbildung 25: Geänderte Eingangsregeln

Die ausgehenden Regeln lassen standardmäßig den gesamten Datenverkehr zu (siehe Abbildung 26).


Abbildung 26: Ausgehende Regeln

Die für Oracle DB auf RDS erstellte Standardsicherheitsgruppe lässt ebenfalls nicht den gesamten Datenverkehr zu, wie in Abbildung 27 gezeigt.


Abbildung 27: Sicherheitsgruppe für Oracle DB auf RDS

Ändern Sie die Sicherheitsgruppe Inbound für Oracle DB auf RDS mit der Schaltfläche Bearbeiten, ähnlich wie beim Ändern der MySQL Database Security Group Inbound-Regeln, um den gesamten Datenverkehr zuzulassen, wie in Abbildung 28 gezeigt.


Abbildung 28: Sicherheitsgruppe für Oracle DB auf RDS

Notieren Sie sich den Master-Benutzernamen und das Master-Passwort, die für jede der DB-Instances konfiguriert wurden, während Sie die Instances erstellen, wie für die MySQL-DB in Abbildung 29 gezeigt. Außerdem werden beim Erstellen der MySQL-DB auf RDS keine der Konfigurationseinstellungen (Datenbankname , DB Instance Identifier, Master Username, Master Password) sollten MySQL-reservierte Wörter sein, wie „MYSQL“.


Abbildung 29: Master-Benutzername und Master-Passwort

Oracle- und MySQL-DBs für DMS vorbereiten

Um Oracle DB und MySQL DB auf RDS als DMS-Quelle bzw. -Ziel zu verwenden, müssen wir einige Einstellungen auf den DB-Instanzen konfigurieren. Stellen Sie in einer Befehlszeilen-Shell eine Verbindung zu den Oracle- und MySQL-DB-Instances her, um die Einstellungen zu konfigurieren. Um eine Verbindung zu den RDS-DB-Instances in einer Befehlszeilen-Shell herzustellen, müssen wir den Endpoint für die RDS-Instances abrufen. Der Endpunkt für die Oracle-Datenbank auf RDS wird in der RDS-Konsole in Abbildung 30 gezeigt.


Abbildung 30: Endpunkt für Oracle DB auf RDS

Stellen Sie mit dem folgenden sqlplus eine Verbindung zur Oracle-DB-Instance her Befehl, bei dem HOST, SID, PORT für verschiedene Benutzer unterschiedlich sein können; Der HOST-Wert wird erhalten, indem das Port-Suffix vom Endpoint entfernt wird.

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

Die SQL*Plus-Befehlszeilenschnittstelle wird mit der Oracle-Datenbank auf RDS verbunden (siehe Abbildung 31).


Abbildung 31: SQL*Plus CLI verbunden mit Oracle DB

Aktivieren Sie die zusätzliche Protokollierung auf Datenbankebene für DMS.

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

Die PL/SQL-Prozedur wird abgeschlossen, wie in Abbildung 32 gezeigt.


Abbildung 32: Aktivieren der zusätzlichen Protokollierung auf Datenbankebene

Aktivieren Sie außerdem PRIMARY KEY Protokollierung auf Datenbankebene.

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

Der PRIMÄRSCHLÜSSEL Die Protokollierung wird aktiviert, wie in Abbildung 33 gezeigt.


Abbildung 33: PRIMARY KEY Logging aktivieren

Konfigurieren Sie die Archivierung der Redo-Protokolle für die Oracle-DB-Instance auf RDS.

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

Die Archivierung wird konfiguriert, wie in Abbildung 34 gezeigt.


Abbildung 34: Archivierung konfigurieren

Bei der Migration einer Datenbank werden auch die Tabellen und Tabellendaten migriert. Erstellen Sie eine Datenbanktabelle wlslog in der Oracle-Datenbank.

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

Um eine zusätzliche Protokollierung für eine Tabelle ohne einen PRIMARY KEY hinzuzufügen Protokollierung, oder wenn PRIMARY KEY die Protokollierung auf Datenbankebene nicht eingestellt ist, ändern Sie die Tabelle, um eine zusätzliche Protokollierung hinzuzufügen.

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

Zusätzliche Protokollierung kann auch in CREATE TABLE aktiviert werden Aussage.

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

Die Ausgabe der beiden vorhergehenden Befehle ist in Abbildung 35 dargestellt.


Abbildung 35: Ergänzende Protokollierung zu einer bereits erstellten Tabelle oder zu einer neuen Tabelle hinzufügen

Bereiten Sie als Nächstes die MySQL-DB-Instance auf RDS für die DMS-Migration vor. Um sich mit MySQL DB zu verbinden, rufen Sie den Endpunkt ab (siehe Abbildung 36.


Abbildung 36: Endpunkt für MySQL DB auf RDS

Der Host wird erhalten, indem das Port-Suffix vom Endpunkt entfernt wird. Stellen Sie mit der MySQL-Befehlszeilenschnittstelle über eine Befehlszeile eine Verbindung zu MySQL her.

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

Die MySQL-CLI wird mit einer MySQL-DB-Instance auf RDS verbunden, wie in Abbildung 37 gezeigt.


Abbildung 37: Herstellen einer Verbindung zu MySQL über die MySQL-CLI

Als nächstes erstellen und gewähren Sie dem DMS-Benutzer (dvohra) Lese- und Schreibrechte für die MySQL-Datenbank.

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>'@'%';

Wenn Sie das Benutzerkonto durch dvohra ersetzen, wird die Ausgabe einiger Befehle in Abbildung 38 gezeigt.


Abbildung 38: Dem DMS-Benutzer Zugriff auf die MySQL-Datenbank gewähren

Schlussfolgerung

In diesem Artikel haben wir die Migration einer Oracle-Datenbank auf RDS zu einer MySQL-Datenbank auf RDS mit dem AWS Database Migration Service vorgestellt. In diesem Artikel haben wir das Einrichten der Quell- und Zieldatenbanken besprochen. In einem späteren Artikel werden wir eine Migration erstellen und ausführen.