Importieren von Daten in eine Datenbank von Amazon RDS für MySQL mit reduzierter Ausfallzeit - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Importieren von Daten in eine Datenbank von Amazon RDS für MySQL mit reduzierter Ausfallzeit

In einigen Situationen müssen Sie Daten aus einer externen MySQL-Datenbank importieren, die eine Live-Anwendung für eine DB-Instance von RDS für MySQL oder einen Multi-AZ-DB-Cluster von RDS für MySQL unterstützt. Nutzen Sie das folgende Verfahren, um die Auswirkungen auf die Verfügbarkeit der Anwendung zu minimieren. Dieses Verfahren kann außerdem hilfreich sein, wenn Sie mit einer sehr großen Datenbank arbeiten. Mit diesem Verfahren können Sie die Kosten des Imports durch Reduzierung der Menge an Daten senken, die über das Netzwerk an AWS weitergeleitet werden.

In diesem Verfahren übertragen Sie eine Kopie Ihrer Datenbankdaten auf eine EC2 Amazon-Instance und importieren die Daten in eine neue Amazon RDS-Datenbank. Anschließend verwenden Sie die Replikation, um die Amazon RDS-Datenbank up-to-date mit Ihrer externen Live-Instance zu verknüpfen, bevor Sie Ihre Anwendung auf die Amazon RDS-Datenbank umleiten. Konfigurieren Sie die Replikation basierend auf den Binärprotokollkoordinaten.

Anmerkung

Wenn Sie Daten in eine DB-Instance von RDS für MySQL importieren möchten und Ihr Szenario dies unterstützt, empfehlen wir, Daten mithilfe von Backup-Dateien und Amazon S3 in und aus Amazon RDS zu verschieben. Weitere Informationen finden Sie unter Wiederherstellen eines Backups in eine DB-Instance von Amazon RDS für MySQL.

Im folgenden Diagramm ist der Import einer externen MySQL-Datenbank in eine MySQL-Datenbank auf Amazon RDS veranschaulicht.

Workflow, der den Import einer externen MySQL-Datenbank in eine MySQL-Datenbank auf Amazon RDS darstellt.

Aufgabe 1: Erstellen einer Kopie Ihrer bestehenden Datenbank

Der erste Schritt bei der Migration von großen Datenmengen in eine Datenbank von RDS für MySQL mit minimaler Ausfallzeit besteht darin, eine Kopie der Quelldaten zu erstellen.

Das folgende Diagramm veranschaulicht die Erstellung eines Backups der MySQL-Datenbank.

Workflow, der das Erstellen eines Backups der MySQL-Datenbank darstellt.

Sie können das Hilfsprogramm mysqldump verwenden, um ein Datenbank-Backup im SQL-Format oder im separierten Textformat zu erstellen. Es wird empfohlen, mit jedem Format in einer Nichtproduktionsumgebung einen Testlauf durchzuführen, um festzustellen, welche Methode die Ausführungsdauer von mysqldump minimiert.

Wir empfehlen auch, dass Sie die Leistung von mysqldump gegenüber den Vorteilen einer Verwendung von separiertem Textformat beim Laden abwägen. Ein Backup, das ein separiertes Textformat verwendet, erstellt eine tabulatorseparierte Textdatei für jede verworfene Tabelle. Um den Zeitaufwand für den Import Ihrer Datenbank zu reduzieren, können Sie diese Dateien mit dem Befehl LOAD DATA LOCAL INFILE parallel laden. Weitere Informationen finden Sie unter Schritt 5: Laden der Daten im Verfahren zum Importieren von Daten aus einer beliebigen Quelle.

Bevor Sie mit dem Backup-Vorgang beginnen, müssen Sie die Optionen für die Replikation in der nach Amazon RDS zu kopierenden MySQL-Datenbank festlegen. Die Optionen für die Replikation schließen die Aktivierung der Binärprotokollierung und das Einstellen einer eindeutigen Server-ID mit ein. Das Einstellen dieser Optionen veranlasst den Server, mit der Protokollierung Ihrer Datenbanktransaktionen zu beginnen, und bereitet ihn darauf vor, später im Vorgang als Quellreplikationsinstance zu agieren.

Stellen Sie sicher, dass Sie die folgenden Empfehlungen und Überlegungen kennen:

  • Verwenden Sie die Option --single-transaction mit mysqldump, da sie einen einheitlichen Zustand der Datenbank speichert. Um eine gültige Dump-Datei sicherzustellen, führen Sie beim Ausführen von mysqldump keine DDL-Anweisungen (Data Definition Language) aus. Sie können ein Wartungsfenster für diese Abläufe planen.

  • Schließen Sie die folgenden Schemas aus der Dump-Datei aus:

    • sys

    • performance_schema

    • information_schema

    Das Dienstprogramm mysqldump schließt diese Schemas standardmäßig aus.

  • Wenn Sie Benutzer und Rechte migrieren müssen, sollten Sie in Erwägung ziehen, ein Tool zu verwenden, das die Data Control Language (DCL) für deren Neuerstellung generiert, z. B. das Hilfsprogramm. pt-show-grants

So stellen Sie Optionen für die Replikation ein:

  1. Bearbeiten Sie die my.cnf-Datei. Diese Datei befindet sich normalerweise in /etc.

    sudo vi /etc/my.cnf

    Fügen Sie die Optionen log_bin und server_id zum Abschnitt [mysqld] hinzu. Die Option log_bin bietet eine Dateinamenkennung für Binärprotokolldateien. Die Option server_id stellt eine eindeutige Kennung für den Server für Quelle-Replica-Beziehungen bereit.

    Im folgenden Beispiel ist der aktualisierte [mysqld]-Abschnitt einer my.cnf-Datei angegeben:

    [mysqld] log-bin=mysql-bin server-id=1

    Weitere Informationen finden Sie unter Setting the Replication Master Configuration in der MySQL-Dokumentation.

  2. Legen Sie für die Replikation mit einem Multi-AZ-DB-Cluster die Parameter ENFORCE_GTID_CONSISTENCY und GTID_MODE auf ON fest.

    mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
    mysql> SET @@GLOBAL.GTID_MODE = ON;

    Diese Einstellungen sind für die Replikation mit einer DB-Instance nicht erforderlich.

  3. Den Service mysql neu starten.

    sudo service mysqld restart

So erstellen Sie eine Sicherungskopie für Ihre bestehende Datenbank:

  1. Erstellen Sie ein Backup für Ihre Daten mithilfe des Hilfsprogramms mysqldump, indem Sie entweder das SQL- oder separierte Textformat festlegen.

    Geben Sie bei MySQL 8.0.25 und älteren Versionen --master-data=2 an, um eine Backup-Datei zu erstellen, die für das Starten einer Replikation zwischen Servern verwendet werden kann. Geben Sie bei MySQL 8.0.26 und neueren Versionen --source-data=2 an, um eine Backup-Datei zu erstellen, die für das Starten einer Replikation zwischen Servern verwendet werden kann. Weitere Informationen finden Sie unter mysqldump – A Database Backup Program in der MySQL-Dokumentation.

    Verwenden Sie die Optionen --order-by-primary und --single-transaction für mysqldump., um die Leistung zu verbessern und die Datenintegrität sicherzustellen.

    Verwenden Sie die Option --all-databases nicht mit mysqldump, um die Einbindung der MySQL-Systemdatenbank im Backup zu vermeiden. Weitere Informationen finden Sie unter Creating a Data Snapshot Using mysqldump in der MySQL-Dokumentation.

    Verwenden Sie bei Bedarf chmod, um sicherzustellen, dass das Verzeichnis beschreibbar ist, in dem die Backup-Datei erstellt wird.

    Wichtig

    Führen Sie unter Windows die Eingabeaufforderung als Administrator aus.

    • Verwenden Sie den folgenden Befehl, um eine SQL-Ausgabe zu erstellen:

      Für Linux, macOS oder Unix:

      sudo mysqldump \ --databases database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u local_user \ -ppassword
      Anmerkung

      Geben Sie als bewährte Sicherheitsmethode andere Anmeldeinformationen als die in diesem Beispiel angegebenen Prompts an.

      Für Windows:

      mysqldump ^ --databases database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u local_user ^ -ppassword
      Anmerkung

      Geben Sie als bewährte Sicherheitsmethode andere Anmeldeinformationen als die in diesem Beispiel angegebenen Prompts an.

    • Verwenden Sie den folgenden Befehl, um eine separierte Textausgabe zu erstellen:

      Für Linux, macOS oder Unix:

      sudo mysqldump \ --tab=target_directory \ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \ database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -ppassword

      Für Windows:

      mysqldump ^ --tab=target_directory ^ --fields-terminated-by "," ^ --fields-enclosed-by """ ^ --lines-terminated-by 0x0d0a ^ database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -ppassword
      Anmerkung

      Geben Sie als bewährte Sicherheitsmethode andere Anmeldeinformationen als die in diesem Beispiel angegebenen Prompts an.

      Stellen Sie sicher, dass Sie alle gespeicherten Prozeduren, Auslöser, Funktionen oder Ereignisse manuell in Ihrer Amazon-RDS-Datenbank erstellen. Falls Sie eines dieser Objekte in der Datenbank haben, die Sie kopieren, schließen Sie sie aus, wenn Sie mysqldump ausführen. Fügen Sie dazu die folgenden Argumente in den Befehl mysqldump ein:

      • --routines=0

      • --triggers=0

      • --events=0

      Bei MySQL 8.0.22 und früheren Versionen wird der Kommentar CHANGE MASTER TO zurückgegeben, wenn Sie mysqldump ausführen und das separierte Textformat festlegen. Dieser Kommentar beinhaltet den Namen und die Position der Hauptprotokolldatei. Bei MySQL 8.0.23 und neueren Versionen wird der Kommentar CHANGE REPLICATION SOURCE TO zurückgegeben, wenn Sie mysqldump mithilfe des separierten Textformats ausführen. Dieser Kommentar beinhaltet den Namen und die Position der Quellprotokolldatei. Wenn es sich bei der externen Instance um MySQL 8.0.23 oder eine neuere Version handelt, notieren Sie die Werte für MASTER_LOG_FILE und MASTER_LOG_POS. Sie benötigen diese Werte beim Einrichten der Replikation.

      Die folgende Ausgabe wird für MySQL 8.0.22 und frühere Versionen zurückgegeben:

      -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

      Die folgende Ausgabe wird für MySQL 8.0.23 und neuere Versionen zurückgegeben:

      -- Position to start replication or point-in-time recovery from -- -- CHANGE SOURCE TO SOURCE_LOG_FILE='mysql-bin-changelog.000031', SOURCE_LOG_POS=107;

      Wenn Sie bei MySQL 8.0.22 und früheren Versionen das SQL-Format verwenden, können Sie den Namen und die Position der Hauptprotokolldatei im Kommentar CHANGE MASTER TO in der Backup-Datei abrufen. Wenn Sie bei MySQL 8.0.23 und neueren Versionen das SQL-Format verwenden, können Sie den Namen und die Position der Quellprotokolldatei im Kommentar CHANGE REPLICATION SOURCE TO in der Backup-Datei abrufen.

  2. Komprimieren Sie die kopierten Daten, um die Menge der Netzwerkressourcen zu reduzieren, die benötigt werden, um Ihre Daten in eine Amazon-RDS-Datenbank zu kopieren. Notieren Sie sich die Größe der Backup-Datei. Sie benötigen diese Informationen, um zu bestimmen, wie groß eine EC2 Amazon-Instance erstellt werden soll. Wenn Sie fertig sind, komprimieren Sie die Sicherungsdatei mithilfe von GZIP oder Ihrem bevorzugten Komprimierungsprogramm.

    • Verwenden Sie den folgenden Befehl, um eine SQL-Ausgabe zu komprimieren:

      gzip backup.sql
    • Verwenden Sie den folgenden Befehl, um eine separierte Textausgabe zu komprimieren:

      tar -zcvf backup.tar.gz target_directory

Aufgabe 2: Erstellen Sie eine EC2 Amazon-Instance und kopieren Sie die komprimierte Datenbank

Das Kopieren Ihrer komprimierten Datenbank-Backup-Datei auf eine EC2 Amazon-Instance benötigt weniger Netzwerkressourcen als das direkte Kopieren unkomprimierter Daten zwischen Datenbank-Instances. Nachdem sich Ihre Daten bei Amazon befinden EC2, können Sie sie von dort direkt in Ihre MySQL-Datenbank kopieren. Damit Sie Kosten für Netzwerkressourcen sparen können, muss sich Ihre EC2 Amazon-Instance in derselben Umgebung AWS-Region wie Ihre Amazon RDS-DB-Instance befinden. Wenn sich die EC2 Amazon-Instance in derselben Datenbank AWS-Region wie Ihre Amazon RDS-Datenbank befindet, verringert sich auch die Netzwerklatenz während des Imports.

Das folgende Diagramm zeigt das Kopieren der Datenbanksicherung auf eine EC2 Amazon-Instance.

Workflow, der das Kopieren der Datenbanksicherung auf eine EC2 Amazon-Instance zeigt.

Um eine EC2 Amazon-Instance zu erstellen und Ihre Daten zu kopieren

  1. Erstellen Sie in AWS-Region dem Bereich, in dem Sie die Amazon RDS-Datenbank erstellen möchten, eine Virtual Private Cloud (VPC), eine VPC-Sicherheitsgruppe und ein VPC-Subnetz. Stellen Sie sicher, dass die eingehenden Regeln für Ihre VPC-Sicherheitsgruppe IP-Adressen zulassen, die für eine Verbindung Ihrer Anwendung mit erforderlich sin AWS. Sie können einen IP-Adressbereich (z. B. 203.0.113.0/24) oder eine andere VPC-Sicherheitsgruppe festlegen. Sie können die Amazon VPC-Konsole verwenden VPCs, um Subnetze und Sicherheitsgruppen zu erstellen und zu verwalten. Weitere Informationen finden Sie unter Erste Schritte mit Amazon VPC im Amazon Virtual Private Cloud-Benutzerhandbuch.

  2. Öffnen Sie die EC2 Amazon-Konsole und wählen Sie die aus, die sowohl Ihre EC2 Amazon-Instance als auch Ihre Amazon RDS-Datenbank enthalten AWS-Region soll. Starten Sie eine EC2 Amazon-Instance mit der VPC, dem Subnetz und der Sicherheitsgruppe, die Sie in Schritt 1 erstellt haben. Stellen Sie sicher, dass Sie einen Instance-Typ mit genügend Speicherplatz für Ihre unkomprimierte Datenbank-Sicherungsdatei ausgewählt haben. Einzelheiten zu EC2 Amazon-Instances finden Sie unter Erste Schritte mit Amazon EC2 im Amazon Elastic Compute Cloud-Benutzerhandbuch.

  3. Um von Ihrer EC2 Amazon-Instance aus eine Verbindung zu Ihrer Amazon RDS-Datenbank herzustellen, bearbeiten Sie Ihre VPC-Sicherheitsgruppe. Fügen Sie eine Regel für eingehenden Datenverkehr hinzu, die die private IP-Adresse Ihrer EC2 Instance angibt. Sie finden die private IP-Adresse auf der Registerkarte „Details“ im Bereich „Instanz“ im EC2 Konsolenfenster. Um die VPC-Sicherheitsgruppe zu bearbeiten und eine Regel für eingehenden Datenverkehr hinzuzufügen, wählen Sie im Navigationsbereich der EC2 Konsole Sicherheitsgruppen, wählen Sie Ihre Sicherheitsgruppe aus und fügen Sie dann eine eingehende Regel für MySQL oder Aurora hinzu, die die private IP-Adresse Ihrer Instance angibt. EC2 Weitere Informationen zum Hinzufügen einer Regel für eingehenden Datenverkehr zu einer VPC-Sicherheitsgruppe finden Sie unter Sicherheitsgruppenregeln im Amazon Virtual Private Cloud-Benutzerhandbuch.

  4. Kopieren Sie Ihre komprimierte Datenbank-Backup-Datei von Ihrem lokalen System auf Ihre EC2 Amazon-Instance. Verwenden Siechmod, falls erforderlich, um sicherzustellen, dass Sie über Schreibberechtigungen für das Zielverzeichnis der EC2 Amazon-Instance verfügen. Sie können scp oder einen Secure-Shell(SSH)-Client verwenden, um die Datei zu kopieren. Nachfolgend finden Sie ein Beispiel für einen scp-Befehl:

    scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
    Wichtig

    Vergewissern Sie sich beim Kopieren von sensiblen Daten, dass Sie ein sicheres Netzwerk-Übertragungsprotokoll verwenden.

  5. Stellen Sie mithilfe der folgenden Befehle Connect zu Ihrer EC2 Amazon-Instance her und installieren Sie die neuesten Updates und die MySQL-Client-Tools:

    sudo yum update -y sudo yum install mysql -y

    Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Ihrer Instance für Linux-Instances im Amazon Elastic Compute Cloud-Benutzerhandbuch.

    Wichtig

    In diesem Beispiel wird der MySQL-Client auf einem Amazon Machine Image (AMI) für eine Amazon-Linux-Verteilung installiert. Mit diesem Beispiel kann der MySQL-Client nicht auf einer anderen Verteilung wie Ubuntu oder Red Hat Enterprise Linux installiert werden. Informationen zum Installieren von MySQL finden Sie unter Installation von MySQL in der MySQL-Dokumentation.

  6. Während Sie mit Ihrer EC2 Amazon-Instance verbunden sind, dekomprimieren Sie Ihre Datenbank-Backup-Datei. Die folgenden Befehle sind Beispiele.

    • Verwenden Sie den folgenden Befehl, um eine SQL-Ausgabe zu extrahieren:

      gzip backup.sql.gz -d
    • Verwenden Sie den folgenden Befehl, um eine separierte Textausgabe zu extrahieren:

      tar xzvf backup.tar.gz

Aufgabe 3: Erstellen Sie eine MySQL-Datenbank und importieren Sie Daten aus Ihrer EC2 Amazon-Instance

Indem Sie eine RDS for MySQL-DB-Instance oder einen RDS for MySQL Multi-AZ-DB-Cluster in derselben Umgebung AWS-Region wie Ihre EC2 Amazon-Instance erstellen, können Sie die Datenbank-Backup-Datei EC2 schneller als über das Internet von Amazon importieren.

Das folgende Diagramm zeigt den Import des Backups aus einer EC2 Amazon-Instance in eine MySQL-Datenbank.

Workflow, der den Import des Backups aus der EC2 Instanz in die MySQL-Datenbank zeigt.

So erstellen Sie eine MySQL-Datenbank und importieren Ihre Daten

  1. Bestimmen Sie, welche DB-Instance-Klasse und wie viel Speicherplatz erforderlich sind, um den erwarteten Workload für diese Amazon-RDS-Datenbank unterstützen zu können. Bei diesem Vorgang sollten Sie auch entscheiden, wie viel Speicherplatz und Verarbeitungskapazität für Ihre Datenladevorgänge ausreichen. Entscheiden Sie auch, was für den Umgang mit dem Produktions-Workload erforderlich ist. Sie können diese Faktoren anhand der Größe und der Ressourcen der MySQL-Quelldatenbank einschätzen. Weitere Informationen finden Sie unter DB-Instance-Klassen .

  2. Erstellen Sie eine DB-Instance oder einen Multi-AZ-DB-Cluster in dem AWS-Region , der Ihre EC2 Amazon-Instance enthält.

    Befolgen Sie die Anweisungen unter Erstellen eines Multi-AZ-DB-Clusters für Amazon RDS, um einen Multi-AZ-DB-Cluster von RDS für MySQL zu erstellen.

    Wenn Sie eine DB-Instance von RDS für MySQL erstellen möchten, befolgen Sie die Anweisungen unter Erstellen einer Amazon-RDS-DB-Instance und verwenden Sie die folgenden Richtlinien:

    • Geben Sie eine DB-Engine-Version an, die mit Ihrer Quell-DB-Instance kompatibel ist.

    • Geben Sie dieselbe Virtual Private Cloud (VPC) und dieselbe VPC-Sicherheitsgruppe wie für Ihre EC2 Amazon-Instance an. Dieser Ansatz stellt sicher, dass Ihre EC2 Amazon-Instance und Ihre Amazon RDS-Instance im Netzwerk füreinander sichtbar sind. Stellen Sie sicher, dass Ihre DB-Instance öffentlich zugänglich ist. Ihre DB-Instance muss öffentlich zugänglich sein, um eine Replikation für Ihre Quelldatenbank einzurichten, wie in einem späteren Abschnitt beschrieben wird.

    • Konfigurieren Sie nicht mehrere Availability Zones, Backup-Aufbewahrungen oder Lesereplikate, nachdem Sie das Datenbank-Backup importiert haben. Wenn dieser Importvorgang abgeschlossen ist, können Sie Multi-AZ und Backup-Aufbewahrung für die Produktions-Instance konfigurieren.

  3. Überprüfen Sie die Optionen der Standardkonfiguration für die Amazon-RDS-Datenbank. Wenn in der Standardparametergruppe für die Datenbank die von Ihnen gewünschten Optionen nicht konfiguriert sind, wählen Sie eine andere aus, die die entsprechenden Konfigurationsoptionen enthält, oder erstellen Sie eine neue Parametergruppe. Weitere Informationen zum Erstellen einer Parametergruppe finden Sie unter Parametergruppen für Amazon RDS.

  4. Stellen Sie als Hauptbenutzer eine Verbindung mit der neuen Amazon-RDS-Datenbank her. Erstellen Sie die Benutzer, die erforderlich sind, um die Administratoren, Anwendungen und Services zu unterstützen, die auf die DB-Instance zugreifen müssen. Der Hostname für die Amazon-RDS-Datenbank ist ihr Endpunktwert für diese DB-Instance ohne die Portnummer, z. B. mysampledb.123456789012.us-west-2.rds.amazonaws.com. Sie finden den Endpunktwert in den Datenbankdetails der Amazon-RDS-Konsole.

  5. Connect zu Ihrer EC2 Amazon-Instance her. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Ihrer Instance für Linux-Instances im Amazon Elastic Compute Cloud-Benutzerhandbuch.

  6. Stellen Sie mit dem mysql Befehl eine Connect zu Ihrer Amazon RDS-Datenbank als Remote-Host von Ihrer EC2 Amazon-Instance her. Der folgende Befehl ist ein Beispiel:

    mysql -h host_name -P 3306 -u db_master_user -p

    Das host_name ist der Amazon RDS-Datenbank-Endpunkt.

  7. Führen Sie an der Eingabeaufforderung mysql den Befehl source aus und tragen Sie den Namen der Datenbank-Dumpdatei ein. Mit diesem Befehl werden die Daten in die Amazon-RDS-DB-Instance geladen.

    • Verwenden Sie für das SQL-Format den folgenden Befehl:

      mysql> source backup.sql;
    • Für das separierte Textformat erstellen Sie zuerst die Datenbank, wenn es sich nicht um die Standarddatenbank handelt, die Sie bei der Einrichtung der Amazon-RDS-Datenbank erstellt haben.

      mysql> create database database_name; mysql> use database_name;

      Erstellen Sie anschließend die Tabellen.

      mysql> source table1.sql mysql> source table2.sql etc...

      Importieren Sie dann die Daten.

      mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...

      Zur Verbesserung der Leistung können Sie diese Operationen parallel aus mehreren Verbindungen ausführen, damit alle Ihre Tabellen erstellt und die Daten anschließend gleichzeitig geladen werden.

      Anmerkung

      Wenn Sie Optionen für eine Datenformatierung mit mysqldump beim ersten Verwerfen der Tabelle verwendet haben, müssen Sie nun dieselben Optionen mit LOAD DATA LOCAL INFILE verwenden, um eine richtige Interpretation der Datendateiinhalte sicherzustellen.

  8. Führen Sie eine einfache SELECT-Abfrage anhand einer oder zwei der Tabellen in der importierten Datenbank durch, um zu prüfen, ob der Importvorgang erfolgreich abgeschlossen wurde.

Wenn Sie die in diesem Verfahren verwendete EC2 Amazon-Instance nicht mehr benötigen, beenden Sie die EC2 Instance, um Ihren AWS Ressourcenverbrauch zu reduzieren. Informationen zum Beenden einer EC2 Instance finden Sie unter Kündigen einer Instance im Amazon Elastic Compute Cloud-Benutzerhandbuch.

Aufgabe 4: Replizieren von Daten aus der externen Datenbank in die neue Amazon-RDS-Datenbank

Die Quelldatenbank wurde in der Zeit, in der die Daten in die MySQL-Datenbank kopiert und übertragen wurden, wahrscheinlich aktualisiert. Sie können also die Replikation verwenden, um die kopierte Datenbank up-to-date mit der Quelldatenbank zu verbinden.

Workflow, der die Replikation von Daten aus der externen MySQL-Datenbank in die Datenbank in Amazon RDS darstellt.

Die erforderlichen Berechtigungen für das Starten einer Replikation in einer Amazon-RDS-Datenbank sind beschränkt und für den Amazon-RDS-Hauptbenutzer nicht verfügbar. Verwenden Sie daher die entsprechende gespeicherte Amazon-RDS-Prozedur für die Engine-Hauptversion:

So starten Sie eine Replikation:

In Aufgabe 1 haben Sie bei der Festlegung der Replikationsoptionen die Binärprotokollierung aktiviert und eine eindeutige Server-ID für die Quelldatenbank festgelegt. Jetzt können Sie Ihre Amazon-RDS-Datenbank als Replikat mit Ihrer Live-Datenbank als Quellreplikations-Instance einrichten.

  1. Fügen Sie in der Amazon-RDS-Konsole die IP-Adresse des Servers, der die Quelldatenbank hostet, zur VPC-Sicherheitsgruppe dieser Amazon-RDS-Datenbank hinzu. Weitere Informationen zum Konfigurieren einer VPC-Sicherheitsgruppe finden Sie unter Konfigurieren von Sicherheitsgruppenregeln im Amazon Virtual Private Cloud-Benutzerhandbuch.

    Möglicherweise müssen Sie Ihr lokales Netzwerk so konfigurieren, dass es Verbindungen von der IP-Adresse Ihrer Amazon-RDS-Datenbank zulässt, damit es mit Ihrer Quell-Instance kommunizieren kann. Verwenden Sie den Befehl host, um die IP-Adresse der Amazon-RDS-Datenbank zu ermitteln.

    host host_name

    Das host_name ist zum Beispiel der DNS-Name vom Amazon RDS-Datenbank-Endpunktmyinstance.123456789012.us-east-1.rds.amazonaws.com. Sie finden den Endpunktwert in den DB-Instance-Details in der Amazon-RDS-Konsole.

  2. Verbinden Sie sich mithilfe eines Clients Ihrer Wahl mit der Quell-Instance und erstellen Sie einen Benutzer, der für die Replikation verwendet werden soll. Dieses Konto wird ausschließlich für die Replikation verwendet und muss auf Ihre Domäne beschränkt sein, um die Sicherheit zu erhöhen. Der folgende Befehl ist ein Beispiel:

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
    Anmerkung

    Geben Sie aus Sicherheitsgründen andere Anmeldeinformationen als hier angegeben an.

  3. Erteilen Sie für die Quell-Instance die Sonderrechte REPLICATION CLIENT und REPLICATION SLAVE für Ihren Replikationsbenutzer. Erteilen Sie beispielsweise die Sonderrechte REPLICATION CLIENT und REPLICATION SLAVE in allen Datenbanken für den repl_user-Benutzer für Ihre Domäne, mit dem folgenden Befehl:

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
  4. Konfigurieren Sie die Amazon-RDS-Datenbank als Replikat. Stellen Sie eine Verbindung mit der Amazon-RDS-Datenbank als Masterbenutzer her und identifizieren Sie die Quelldatenbank mithilfe der entsprechenden gespeicherten Amazon-RDS-Prozedur als Quellreplikations-Instance.

    Wenn Sie über eine Backup-Datei im SQL-Format verfügen, verwenden Sie den Namen der Hauptprotokolldatei und die Position des Hauptprotokolls, die Sie beide in Schritt 4 ermittelt haben. Wenn Sie das separierte Textformat genutzt haben, verwenden Sie den Namen und die Position, die Sie beide beim Erstellen der Backup-Dateien ermittelt haben. Die folgenden Befehle sind Beispiele.

    MySQL 8.4 und neuere Versionen

    CALL mysql.rds_set_external_source ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);

    MySQL 8.0 und frühere Versionen

    CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
    Anmerkung

    Geben Sie aus Sicherheitsgründen andere Anmeldeinformationen als hier angegeben an.

  5. Um die Replikation in der Amazon-RDS-Datenbank zu starten, führen Sie den folgenden Befehl aus, der die gespeicherte Prozedur mysql.rds_start_replication verwendet:

    CALL mysql.rds_start_replication;
  6. Führen Sie in der Amazon-RDS-Datenbank den Befehl SHOW REPLICA STATUS aus, um festzustellen, wann das Replikat auf dem aktuellen Stand der Quellreplikations-Instance ist. Zu den Ergebnissen des SHOW REPLICA STATUS-Befehls gehört das Feld Seconds_Behind_Master. Wenn das Feld Seconds_Behind_Master 0 zurückgibt, ist das Replikat auf dem aktuellen Stand der Quellreplikations-Instance.

    Anmerkung

    Frühere Versionen von MySQL verwenden SHOW SLAVE STATUS anstelle von SHOW REPLICA STATUS. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden Si SHOW SLAVE STATUS.

  7. Nachdem die Amazon-RDS-Datenbank auf den aktuellen Stand gebracht wurde, aktivieren Sie die automatischen Backups, damit Sie diese Datenbank bei Bedarf wiederherstellen können. Sie können automatische Backups für die Amazon-RDS-Datenbank mithilfe der Amazon-RDS-Konsole aktivieren oder ändern. Weitere Informationen finden Sie unter Einführung in Backups.

Aufgabe 5: Weiterleiten der Live-Anwendung an die Amazon-RDS-Instance

Wenn die MySQL-Datenbank auf den aktuellen Stand der Quellreplikations-Instance gebracht wurde, können Sie nun die Live-Anwendung aktualisieren, damit sie die Amazon-RDS-Instance nutzt.

Workflow, der die Beendigung der Replikation und die Weiterleitung der Live-Anwendung an die Datenbank in Amazon RDS darstellt.

So leiten Sie die Live-Anwendung an die MySQL-Datenbank weiter und halten die Replikation an

  1. Fügen Sie die IP-Adresse des Host-Servers der Anwendung hinzu, um die VPC-Sicherheitsgruppe für Ihre Amazon-RDS-Datenbank hinzuzufügen. Weitere Informationen zum Ändern einer VPC-Sicherheitsgruppe finden Sie unter Konfigurieren von Sicherheitsgruppenregeln im Amazon Virtual Private Cloud-Benutzerhandbuch.

  2. Vergewissern Sie sich, dass das Feld Seconds_Behind_Master im Ergebnis des Befehls SHOW REPLICA STATUS 0 ist, was darauf hinweist, dass das Replikat auf dem neuesten Stand mit der Quellreplikations-Instance ist.

    SHOW REPLICA STATUS;
    Anmerkung

    Frühere Versionen von MySQL verwenden SHOW SLAVE STATUS anstelle von SHOW REPLICA STATUS. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden Si SHOW SLAVE STATUS.

  3. Schließen Sie alle Verbindungen zur Quelle, nachdem ihre Transaktionen abgeschlossen sind.

  4. Aktualisieren Sie Ihre Anwendung, um die Amazon-RDS-Datenbank zu nutzen. Dieses Update ändert die Verbindungseinstellungen, um den Hostnamen und den Port der Amazon-RDS-Datenbank, das Benutzerkonto und Passwort für die Verbindung und die zu verwendende Datenbank zu bestimmen.

  5. Stellen Sie eine Verbindung mit der DB-Instance her.

    Stellen Sie für einen Multi-AZ-DB-Cluster eine Verbindung mit der Writer-DB-Instance her.

  6. Halten Sie die Replikation für die Amazon-RDS-Instance an, indem Sie den folgenden Befehl ausführen, der die gespeicherte Prozedur mysql.rds_stop_replication verwendet:

    CALL mysql.rds_stop_replication;
  7. Setzen Sie die Replikationskonfiguration zurück, damit diese Instance nicht mehr als Replikat identifiziert wird, indem Sie die entsprechende gespeicherte Amazon-RDS-Prozedur in der Amazon-RDS-Datenbank verwenden:

    MySQL 8.4 und neuere Versionen

    CALL mysql.rds_reset_external_source;

    MySQL 8.0 und frühere Versionen

    CALL mysql.rds_reset_external_master;
  8. Aktivieren Sie zusätzliche Amazon-RDS-Funktionen, wie Multi-AZ-Unterstützung und Lesereplikate. Weitere Informationen erhalten Sie unter Konfigurieren und Verwalten einer Multi-AZ-Bereitstellung für Amazon RDS und Arbeiten mit DB-Instance-Lesereplikaten.