Import von Daten in eine Amazon RDS for MySQL MySQL-Datenbank 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.

Import von Daten in eine Amazon RDS for MySQL MySQL-Datenbank mit reduzierter Ausfallzeit

In einigen Fällen müssen Sie möglicherweise Daten aus einer externen MariaDB- oder MySQL-Datenbank, die eine Live-Anwendung unterstützt, in eine RDS for MariaDB-DB-Instance, eine RDS for MySQL-DB-Instance oder einen RDS for MySQL Multi-AZ-DB-Cluster importieren. 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 Importkosten senken, indem Sie die Datenmenge reduzieren, die über das Netzwerk übertragen wird. AWS

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. Wenn die externe Instance MariaDB 10.0.24 oder höher ist und die Zielinstanz RDS for MariaDB ist, konfigurieren Sie die MariaDB-Replikation basierend auf globalen Transaktions-Identifikatoren (). GTIDs Andernfalls konfigurieren Sie die Replikation basierend auf den Binärprotokollkoordinaten. Wir empfehlen die GTID-basierte Replikation, wenn Ihre externe Datenbank diese unterstützt, da diese Methode zuverlässiger ist. Weitere Informationen finden Sie unter Global Transaction ID in der MariaDB-Dokumentation.

Anmerkung

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

Das folgende Diagramm zeigt den Import einer externen MySQL-Datenbank in eine MySQL-Datenbank auf Amazon RDS.

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

Aufgabe 1: Erstellen Sie eine Kopie Ihrer vorhandenen Datenbank

Der erste Schritt bei der Migration von großen Datenmengen in eine Datenbank von RDS für MariaDB oder RDS für MySQL mit minimaler Ausfallzeit ist das Erstellen einer Kopie der Quelldaten.

Das folgende Diagramm zeigt die Erstellung einer Sicherungskopie der MySQL-Datenbank.

Workflow, der das Erstellen einer Sicherungskopie der MySQL-Datenbank zeigt.

Sie können das Hilfsprogramm mysqldump verwenden, um ein Datenbank-Backup im SQL-Format oder im separierten Textformat zu erstellen. In MariaDB 10.5 heißt der Client mariadb-dump. Ab MariaDB 11.0.1 müssen Sie anstelle von verwendenmariadb-dump. mysqldump Es wird empfohlen, mit jedem Format in einer Nichtproduktionsumgebung einen Testlauf durchzuführen, um zu sehen, welche Methode die Ausführungsdauer von mysqldump minimiert.

Wir empfehlen außerdem, die mysqldump Leistung gegen den Vorteil abzuwägen, der sich aus der Verwendung des Textformats mit Trennzeichen beim Laden ergibt. 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 Daten für MariaDB laden oder Daten für MySQL laden.

Bevor Sie mit dem Sicherungsvorgang beginnen, müssen Sie die Optionen für die Replikation in der nach Amazon RDS zu kopierenden MariaDB- oder MySQL-Datenbank einstellen. 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 mariadb-dump Hilfsprogramm mysqldump and 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 unter. /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.

    Das folgende Beispiel zeigt den aktualisierten [mysqld] Abschnitt einer my.cnf Datei:

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

    Weitere Informationen finden Sie unter Einstellung der Konfiguration der Replikationsquelle in der MySQL-Dokumentation.

  2. Für die Replikation mit einem Multi-AZ-DB-Cluster setzen Sie den ENFORCE_GTID_CONSISTENCY und den GTID_MODE Parameter aufON.

    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 mit dem mysqldump Hilfsprogramm oder dem Hilfsprogramm eine Sicherungskopie Ihrer Daten und geben Sie dabei entweder das mariadb-dump SQL-Format oder das Textformat mit Trennzeichen an.

    Geben Sie für MySQL 8.0.25 und niedrigere Versionen --master-data=2 an, dass eine Sicherungsdatei erstellt werden soll, mit der die Replikation zwischen Servern gestartet werden kann. Geben Sie für MySQL 8.0.26 und höhere Versionen --source-data=2 an, dass eine Sicherungsdatei erstellt werden soll, mit der die Replikation zwischen Servern gestartet werden kann. Weitere Informationen finden Sie unter mysqldump — A Database Backup Program in der MySQL-Dokumentation.

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

    Um zu vermeiden, dass die MySQL-Systemdatenbank in das Backup aufgenommen wird, verwenden Sie die --all-databases Option mit nichtmysqldump. Weitere Informationen finden Sie unter Erstellen eines Datensnapshots mit mysqldump in der MySQL-Dokumentation.

    Stellen Sie chmod bei Bedarf sicher, dass das Verzeichnis, in dem die Sicherungsdatei erstellt wird, beschreibbar ist.

    Wichtig

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

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

      Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. 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

      Aus Sicherheitsgründen sollten Sie andere Anmeldeinformationen als die im Beispiel gezeigten Eingabeaufforderungen angeben.

      Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:

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

      Aus Sicherheitsgründen sollten Sie andere Anmeldeinformationen als die im Beispiel gezeigten Eingabeaufforderungen angeben.

    • Verwenden Sie den folgenden Befehl, um eine Ausgabe mit begrenztem Text zu erzeugen:

      Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. 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

      Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. 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

      Aus Sicherheitsgründen sollten Sie andere Anmeldeinformationen als die im Beispiel gezeigten Eingabeaufforderungen angeben.

      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 Ihrem mysqldump Befehl die folgenden Argumente hinzu:

      • --routines=0

      • --triggers=0

      • --events=0

      Bei MySQL 8.0.22 und niedrigeren Versionen und MariaDB-Versionen wird ein Kommentar zurückgegeben, wenn Sie das Format mit Trennzeichen ausführen mysqldump und angeben. CHANGE MASTER TO Dieser Kommentar beinhaltet den Namen und die Position der Hauptprotokolldatei. Wenn Sie für MySQL 8.0.23 und höhere Versionen das Format mit getrenntem Text mysqldump verwenden, wird ein Kommentar zurückgegeben. CHANGE REPLICATION SOURCE TO Dieser Kommentar enthält den Namen und die Position der Quellprotokolldatei. Wenn es sich bei der externen Instanz um etwas anderes als MariaDB 10.0.24 und höhere Versionen oder MySQL 8.0.23 und höhere Versionen handelt, notieren Sie sich die Werte für und. MASTER_LOG_FILE MASTER_LOG_POS Sie benötigen diese Werte beim Einrichten der Replikation.

      Die folgende Ausgabe wird für MariaDB-Versionen und für MySQL 8.0.22 und niedrigere 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 höhere 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;

      Für MySQL 8.0.22 und niedrigere Versionen können Sie, wenn Sie das SQL-Format verwenden, den Namen und die Position der Master-Logdatei im CHANGE MASTER TO Kommentar in der Backup-Datei abrufen. Für MySQL 8.0.23 und höhere Versionen können Sie, wenn Sie das SQL-Format verwenden, den Namen und die Position der Quellprotokolldatei im CHANGE REPLICATION SOURCE TO Kommentar in der Sicherungsdatei abrufen. Wenn die externe Instance MariaDB Version 10.0.24 oder höher ist, können Sie die GTID im nächsten Schritt abrufen.

  2. Wenn es sich bei der von Ihnen verwendeten externen Instanz um MariaDB-Version 10.0.24 oder höher handelt, verwenden Sie die GTID-basierte Replikation. Führen Sie es SHOW MASTER STATUS auf der externen MariaDB-Instanz aus, um den Namen und die Position der binären Protokolldatei abzurufen, und konvertieren Sie sie dann in eine GTID, indem Sie sie BINLOG_GTID_POS auf der externen MariaDB-Instanz ausführen.

    SELECT BINLOG_GTID_POS('binary_log_file_name', binary_log_file_position);

    Beachten Sie die zurückgegebene GTID. Sie benötigen die GTID, um die Replikation zu konfigurieren.

  3. 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 die SQL-Ausgabe zu komprimieren:

      gzip backup.sql
    • Verwenden Sie den folgenden Befehl, um die Ausgabe mit begrenztem Text 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 in Amazon befinden EC2, können Sie sie von dort direkt in Ihre MariaDB- oder 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 beispielsweise einen Bereich von IP-Adressen 203.0.113.0/24 oder eine andere VPC-Sicherheitsgruppe angeben. 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 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 Informationen zum Hinzufügen einer Regel für eingehenden Datenverkehr zu einer VPC-Sicherheitsgruppe finden Sie unter Sicherheitsgruppenregeln im Amazon Virtual Private Cloud 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. Der folgende Befehl ist ein scp Beispielbefehl:

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

    Achten Sie beim Kopieren vertraulicher Daten darauf, ein sicheres Netzwerkübertragungsprotokoll zu 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 Connect Ihrer Instance für Linux-Instances herstellen 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. In diesem Beispiel wird der MySQL-Client nicht auf einer anderen Distribution wie Ubuntu oder Red Hat Enterprise Linux installiert. Informationen zur Installation 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- oder MariaDB-Datenbank und importieren Sie Daten aus Ihrer Amazon-Instance EC2

Indem Sie eine RDS for MariaDB-DB-Instance, 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 MariaDB- oder 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 außerdem, was zur Bewältigung der Produktionslast erforderlich ist. Sie können diese Faktoren anhand der Größe und der Ressourcen Ihrer Quell-MariaDB- oder MySQL-Datenbank einschätzen. Weitere Informationen finden Sie unter .

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

    Um einen RDS for MySQL Multi-AZ-DB-Cluster zu erstellen, folgen Sie den Anweisungen unterEinen Multi-AZ-DB-Cluster für Amazon erstellen RDS.

    Um eine RDS for MariaDB- oder RDS for MySQL-DB-Instance zu erstellen, folgen Sie den 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.

      • Wenn Ihre Quell-Instance MySQL 5.5.x ist, muss Ihre Amazon-RDS-DB-Instance MySQL sein.

      • Wenn Ihre Quell-Instance MySQL 5.6.x oder 5.7.x ist, muss Ihre Amazon RDS-DB-Instance MySQL oder MariaDB sein.

      • Wenn Ihre Quell-Instance MySQL 8.0.x ist, muss Ihre Amazon RDS-DB-Instance MySQL 8.0.x sein.

      • Wenn Ihre Quell-Instance MySQL 8.4.x ist, muss die Amazon RDS-DB-Instance MySQL 8.4.x sein.

      • Wenn Ihre Quell-Instance MariaDB 5.5 oder höher ist, muss Ihre Amazon-RDS-DB-Instance MariaDB sein.

    • 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. Um die Replikation mit Ihrer Quelldatenbank wie im folgenden Abschnitt beschrieben einzurichten, muss Ihre DB-Instance öffentlich zugänglich sein.

    • 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 Hinweise zum Erstellen einer Parametergruppe finden Sie unterParametergruppen für Amazon RDS.

  4. Stellen Sie als Hauptbenutzer eine Verbindung mit der neuen Amazon-RDS-Datenbank her. Erstellen Sie die Benutzer, die zur Unterstützung der Administratoren, Anwendungen und Dienste erforderlich sind, die auf die DB-Instance zugreifen müssen. Der Hostname für die Amazon RDS-Datenbank ist der Endpunktwert für diese DB-Instance ohne die Portnummer, zum Beispiel. mysampledb.123456789012.us-west-2.rds.amazonaws.com Sie finden den Endpunktwert in den Datenbankdetails in der Amazon RDS-Konsole.

  5. Connect zu Ihrer EC2 Amazon-Instance her. Weitere Informationen finden Sie unter Connect Ihrer Instance für Linux-Instances herstellen 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 mysql Eingabeaufforderung den source Befehl aus und übergeben Sie ihm den Namen Ihrer Datenbank-Dump-Datei. Dieser Befehl lädt die Daten in die Amazon RDS-DB-Instance.

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

      mysql> source backup.sql;
    • Für das Format mit begrenztem Text erstellen Sie zuerst die Datenbank, falls 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 mysqldump beim ersten Speichern der Tabelle irgendwelche Datenformatierungsoptionen verwendet haben, stellen Sie sicher, dass Sie dieselben Optionen mit verwenden, um eine korrekte Interpretation des LOAD DATA LOCAL INFILE Inhalts der Datendatei sicherzustellen.

  8. Führen Sie eine einfache SELECT Abfrage für eine oder zwei der Tabellen in der importierten Datenbank aus, um zu überprüfen, ob der Import erfolgreich war.

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: Daten aus Ihrer externen Datenbank in Ihre neue Amazon RDS-Datenbank replizieren

Die Quelldatenbank wurde in der Zeit, in der die Daten in die MariaDB- oder 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 zeigt, wie Daten aus der externen MySQL-Datenbank in die Datenbank auf Amazon RDS repliziert werden.

Die zum Starten der Replikation auf einer Amazon RDS-Datenbank erforderlichen Berechtigungen sind eingeschränkt und stehen Ihrem Amazon RDS-Mastbenutzer nicht zur Verfügung. Verwenden Sie aus diesem Grund die entsprechende gespeicherte Amazon RDS-Prozedur für Ihre Haupt-Engine-Version:

So starten Sie eine Replikation:

In Aufgabe 1 haben Sie bei der Festlegung der Replikationsoptionen die binäre Protokollierung aktiviert und eine eindeutige Server-ID für Ihre 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 für die Amazon RDS-Datenbank hinzu. Weitere Informationen zur Konfiguration einer VPC-Sicherheitsgruppe finden Sie unter Sicherheitsgruppenregeln konfigurieren im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch.

    Möglicherweise müssen Sie auch Ihr lokales Netzwerk so konfigurieren, dass Verbindungen von der IP-Adresse Ihrer Amazon RDS-Datenbank zugelassen werden, damit diese mit Ihrer Quell-Instance kommunizieren kann. Verwenden Sie den host folgenden Befehl, 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. Wenn Sie zum Erstellen Ihrer Sicherungsdatei das SQL-Format verwendet haben und die externe Instanz nicht MariaDB 10.0.24 oder höher ist, sehen Sie sich den Inhalt dieser Datei an, indem Sie den folgenden Befehl ausführen:

    cat backup.sql

    Die Datei beinhaltet einen CHANGE MASTER TO-Kommentar, der den Namen und die Position der Hauptprotokolldatei beinhaltet. Dieser Kommentar ist in der Sicherungsdatei enthalten, wenn Sie die Option --master-data mit mysqldump verwenden. Beachten Sie die Werte für MASTER_LOG_FILE und MASTER_LOG_POS.

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

    Wenn Sie zum Erstellen Ihrer Sicherungsdatei ein Textformat mit Trennzeichen verwendet haben und die externe Instanz nicht MariaDB 10.0.24 oder höher ist, sollten Sie bereits über binäre Protokollkoordinaten aus Schritt 1 der Prozedur So erstellen Sie eine Sicherungskopie Ihrer vorhandenen Datenbank unter Aufgabe 1 verfügen.

    Wenn es sich bei der externen Instanz um MariaDB 10.0.24 oder höher handelt, sollten Sie bereits über die GTID verfügen, von der aus Sie die Replikation starten können. Gehen Sie dazu aus Schritt 2 der Prozedur So erstellen Sie eine Sicherungskopie Ihrer vorhandenen Datenbank unter Aufgabe 1.

  5. Konfigurieren Sie die Amazon-RDS-Datenbank als Replikat. Wenn die externe Instance nicht MariaDB 10.0.24 oder höher ist, stellen Sie als Masterbenutzer eine Verbindung zur Amazon RDS-Datenbank her und identifizieren Sie die Quelldatenbank als Quellreplikationsinstanz, indem Sie die entsprechende gespeicherte Amazon RDS-Prozedur verwenden:

    Wenn Sie über eine Sicherungsdatei im SQL-Format verfügen, verwenden Sie den Namen der Master-Log-Datei und die Master-Log-Position, die Sie in Schritt 4 festgelegt haben. Wenn Sie das Format mit Trennzeichen verwendet haben, verwenden Sie den Namen und die Position, die Sie bei der Erstellung der Sicherungsdateien festgelegt haben. Die folgenden Befehle sind Beispiele:

    MySQL 8.4 und höhere Versionen

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

    MariaDB und MySQL 8.0 und niedrigere 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.

    Wenn die externe Instance MariaDB 10.0.24 oder höher ausführt, stellen Sie eine Verbindung mit der Amazon-RDS-Datenbank als Hauptbenutzer her und identifizieren Sie die Quelldatenbank mithilfe des Befehls mysql.rds_set_external_master_gtid als Quellreplikations-Instance. Verwenden Sie die GTID, die Sie in Schritt 2 der Prozedur So erstellen Sie eine Sicherungskopie Ihrer vorhandenen Datenbank unter Aufgabe 1 festgelegt haben. Der folgende Befehl ist ein Beispiel:

    CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 1);

    Die source_server_ip_address ist die IP-Adresse der Quellreplikationsinstance. Eine EC2 private DNS-Adresse wird derzeit nicht unterstützt.

    Anmerkung

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

  6. Führen Sie in der Amazon RDS-Datenbank den folgenden mysql.rds_start_replication Befehl aus, um die Replikation zu starten:

    CALL mysql.rds_start_replication;
  7. Führen Sie in der Amazon RDS-Datenbank den Befehl SHOW REPLICA STATUS aus, um zu ermitteln, wann das Replikat mit der Quellreplikationsinstanz auf dem neuesten Stand ist. Zu den Ergebnissen des SHOW REPLICA STATUS-Befehls gehört das Feld Seconds_Behind_Master. Wenn das Seconds_Behind_Master Feld 0 zurückgibt, entspricht das Replikat der Quellreplikationsinstanz.

    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.

    Führen Sie für eine MariaDB 10.5-, 10.6- oder 10.11-DB-Instance die mysql.rds_replica_status gespeicherte Prozedur anstelle des MySQL-Befehls aus.

  8. Sobald die Amazon RDS-Datenbank auf dem neuesten Stand ist, aktivieren Sie automatische Backups, damit Sie diese Datenbank bei Bedarf wiederherstellen können. Sie können automatische Backups für Ihre Amazon RDS-Datenbank mithilfe der Amazon RDS-Konsole aktivieren oder ändern. Weitere Informationen finden Sie unter Einführung in Backups.

Aufgabe 5: Leiten Sie Ihre Live-Anwendung auf Ihre Amazon RDS-Instance weiter

Nachdem die MariaDB- oder MySQL-Datenbank mit der Quellreplikationsinstanz auf dem neuesten Stand ist, können Sie jetzt Ihre Live-Anwendung aktualisieren, um die Amazon RDS-Instance zu verwenden.

Workflow, der zeigt, dass die Replikation gestoppt und die Live-Anwendung an die Datenbank auf Amazon RDS weitergeleitet wird.

So leiten Sie Ihre Live-Anwendung an die MariaDB- oder 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 Sicherheitsgruppenregeln konfigurieren im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch.

  2. Stellen Sie sicher, dass das Seconds_Behind_Master Feld in den Ergebnissen des Befehls SHOW REPLICA STATUS den Wert 0 hat. Dies bedeutet, dass das Replikat mit der Quellreplikationsinstanz auf dem neuesten Stand 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.

    Bei einer DB-Instance von MariaDB 10.5, 10.6 oder 10.11 führen Sie das Verfahren mysql.rds_replica_status anstelle des MySQL-Befehls aus.

  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. Beenden Sie die Replikation für die Amazon RDS-Instance mit dem folgenden mysql.rds_stop_replication Befehl:

    CALL mysql.rds_stop_replication;
  7. Führen Sie die entsprechende gespeicherte Amazon RDS-Prozedur in Ihrer Amazon RDS-Datenbank aus, um die Replikationskonfiguration zurückzusetzen, sodass diese Instance nicht mehr als Replikat identifiziert wird.

    MySQL 8.4 und höhere Versionen

    CALL mysql.rds_reset_external_source;

    MariaDB und MySQL 8.0 und niedrigere 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 Konfiguration und Verwaltung einer Multi-AZ-Bereitstellung für Amazon RDS und Arbeiten mit DB-Instance-Lesereplikaten.