Importieren von Daten in eine Amazon-RDS-MariaDB- oder 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.

Importieren von Daten in eine Amazon-RDS-MariaDB- oder MySQL-Datenbank mit reduzierter Ausfallzeit

In einigen Situationen müssen Sie Daten aus einer externen MariaDB- oder MySQL-Datenbank importieren, die eine Live-Anwendung für eine MariaDB-DB-Instance, eine MySQL-DB-Instance oder einen Multi-AZ-DB-Cluster von 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 Importkosten senken, indem Sie die Datenmenge reduzieren, die über das Netzwerk übertragen wird AWS.

Im Rahmen dieses Verfahrens übertragen Sie eine Kopie Ihrer Datenbankdaten an eine Amazon-EC2-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 MariaDB-Replikation basierend auf den globalen Transaktionskennungen (GTIDs), wenn auf der externen Instance MariaDB 10.0.24 oder höher und auf der Ziel-Instance RDS für MariaDB ausgeführt wird. 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 MySQL-DB-Instance 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 einer MySQL-DB-Instance.

Importieren einer externen MySQL-Datenbank in eine MySQL-Datenbank in RDS
Anmerkung

Wir raten von der Verwendung dieser Prozedur mit Quell-MySQL-Datenbanken mit MySQL-Versionen älter als Version 5.5 ab, da es zu potenziellen Problemen bei der Replikation kommen kann. Weitere Informationen finden Sie unter Replication Compatibility Between MySQL Versions in der MySQL-Dokumentation.

Erstellen einer Kopie Ihrer bestehenden 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.

Erstellen Sie ein Backup der MySQL-Datenbank

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 zu sehen, 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 über die Auswahl eines mysqldump-Formats und dem anschließenden Laden von Daten finden Sie unter Using mysqldump for Backups in der MySQL-Dokumentation.

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.

Anmerkung

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 und information_schema. Das Dienstprogramm mysqldump schließt diese Schemas standardmäßig aus.

Um Benutzer und Rechte zu migrieren, 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 üblicherweise 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.

    Im folgenden Beispiel wird der aktualisierte [mysqld]-Abschnitt einer my.cnf-Datei gezeigt.

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

    Weitere Informationen finden Sie in der MySQL-Dokumentation.

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

    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 --master-data=2 an, um eine Sicherungsdatei zu erstellen, die für das Starten einer Replikation zwischen Servern verwendet werden kann. Weitere Informationen finden Sie in der mysqldump-Dokumentation.

    Verwenden Sie die Optionen --order-by-primary und --single-transaction von mysqldump, um die Leistung zu verbessern und die Datenintegrität zu sichern.

    Verwenden Sie nicht die Option --all-databases 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 Sicherungsdatei 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ürLinux, odermacOS: Unix

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

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

      Windows:

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

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

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

      Für LinuxmacOS, oderUnix:

      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 \ -p password

      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 ^ -p password
      Anmerkung

      Geben Sie aus Sicherheitsgründen andere Anmeldeinformationen als hier angegeben 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 Ihren Befehl mysqldump ein: --routines=0 --triggers=0 --events=0.

      Wenn Sie das separierte Textformat verwenden, wird beim Ausführen von mysqldump ein CHANGE MASTER TO-Kommentar zurückgegeben. Dieser Kommentar beinhaltet den Namen und die Position der Hauptprotokolldatei. Wenn es sich bei der externen Instance um andere als MariaDB-Version 10.0.24 oder höher handelt, beachten Sie die Werte für MASTER_LOG_FILE und MASTER_LOG_POS. Sie benötigen diese Werte beim Einrichten der Replikation.

      -- 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 das SQL-Format verwenden, können Sie den Namen und die Position der Hauptprotokolldatei im CHANGE MASTER 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 die externe Instance, die Sie verwenden, MariaDB Version 10.0.24 oder höher ist, verwenden Sie die GTID-basierte Replikation. Führen Sie SHOW MASTER STATUS in der externen MariaDB-Instance aus, um den Namen und die Position der Binärprotokolldatei zu erhalten. Konvertieren Sie die Werte in GTID, indem Sie BINLOG_GTID_POS in der externen MariaDB-Instance ausführen.

    SELECT BINLOG_GTID_POS('binary log file name', binary log file position);

    Beachten Sie die zurückgegebene GTID. Diese benötigen Sie für die Konfiguration der Replikation.

  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. Diese Informationen benötigen Sie, um die Größe der zu erstellenden Amazon-EC2-Instance zu bestimmen. 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

Erstellen einer Amazon EC2-Instance und Kopieren der komprimierten Datenbank

Das Kopieren Ihrer komprimierten Datenbank-Sicherungsdatei in eine Amazon EC2-Instance verbraucht weniger Netzwerkressourcen als eine direkte Kopie von unkomprimierten Daten zwischen Datenbank-Instances. Sobald sich die Daten in Amazon EC2 befinden, können Sie diese von dort direkt in die MariaDB- oder MySQL-Datenbank kopieren. Damit Sie Kosten für Netzwerkressourcen sparen können, muss sich Ihre Amazon EC2 EC2-Instance in derselben AWS Region wie Ihre Amazon RDS-DB-Instance befinden. Wenn sich die Amazon EC2 EC2-Instance in derselben AWS Region wie Ihre Amazon RDS-Datenbank befindet, wird auch die Netzwerklatenz während des Imports reduziert.

Kopieren Sie die Datenbanksicherung auf eine EC2-Instance

So erstellen Sie eine Amazon EC2-Instance und kopieren Ihre Daten:

  1. Erstellen Sie in AWS-Region dem Bereich, in dem Sie die 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 angeben. Sie können die Amazon-VPC-Managementkonsole verwenden, um VPCs, Subnetze und Sicherheitsgruppen zu erstellen und zu verwalten. Weitere Informationen finden Sie unter Erste Schritte mit Amazon VPC im Amazon Virtual Private Cloud-Handbuch „Erste Schritte“.

  2. Öffnen Sie die Amazon EC2 Management Console und wählen Sie die AWS Region aus, die sowohl Ihre Amazon EC2 EC2-Instance als auch Ihre Amazon RDS-Datenbank enthalten soll. Starten Sie eine Amazon EC2-Instance unter Verwendung 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. Weitere Details zu Amazon EC2-Instances finden Sie unter Erste Schritte mit Amazon EC2-Linux-Instances im Amazon Elastic Compute Cloud-Benutzerhandbuch für Linux.

  3. Wenn Sie sich von Ihrer Amazon-EC2-Instance mit Ihrer Amazon-RDS-Datenbank verbinden möchten, bearbeiten Sie Ihre VPC-Sicherheitsgruppe. Fügen Sie eine Regel für eingehenden Datenverkehr hinzu, in der die private IP-Adresse Ihrer EC2-Instance angegeben ist. Die private IP-Adresse finden Sie auf der Registerkarte Details im Bereich Instance des EC2-Konsolenfensters. Wählen Sie zuerst Sicherheitsgruppen im Navigationsbereich der EC2-Konsole und dann Ihre Sicherheitsgruppe aus und fügen Sie anschließend eine Regel für eingehenden Datenverkehr für MySQL oder Aurora hinzu, die die private IP-Adresse Ihrer EC2-Instance angibt, um Ihre VPC-Sicherheitsgruppe zu bearbeiten und eine Regel für eingehenden Datenverkehr hinzuzufügen. Weitere Informationen zum Hinzufügen einer Regel für eingehenden Datenverkehr zu einer VPC-Sicherheitsgruppe finden Sie unter Hinzufügen und Entfernen von Regeln im Amazon-VPC-Benutzerhandbuch.

  4. Kopieren Sie Ihre komprimierte Datenbank-Sicherungsdatei aus Ihrem lokalen System in Ihre Amazon EC2-Instance. Verwenden Sie bei Bedarf chmod, um sicherzustellen, dass Sie Schreibrechte für das Zielverzeichnis der Amazon-EC2-Instance besitzen. Sie können scp oder einen Secure-Shell(SSH)-Client verwenden, um die Datei zu kopieren. Im Folgenden wird ein Beispiel gezeigt.

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

    Beim Kopieren von sensiblen Daten, stellen Sie sicher, dass Sie ein sicheres Netzwerk-Übertragungsprotokoll verwenden.

  5. Verbinden Sie sich mit Ihrer Amazon EC2-Instance und installieren Sie die neusten Updates und MySQL-Client-Tools mithilfe der folgenden Befehle.

    sudo yum update -y sudo yum install mysql -y

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

    Wichtig

    In diesem Beispiel wird der MySQL-Client auf einem Amazon Machine Image (AMI) für eine Amazon-Linux-Verteilung installiert. Dieses Beispiel funktioniert nicht bei der Installation des MySQL-Clients auf einer anderen Verteilung wie Ubuntu oder Red Hat Enterprise Linux. Weitere Informationen zum Installieren von MySQL finden Sie in der MySQL-Dokumentation unter Installation und Aktualisierung von MySQL.

  6. Solange Sie mit Ihrer Amazon EC2-Instance verbunden sind, dekomprimieren Sie Ihre Datenbank-Sicherungsdatei. Im Folgenden sind einige Beispiele aufgeführt.

    • 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

Erstellen einer MySQL- oder MariaDB-Datenbank und Importieren von Daten aus Ihrer Amazon-EC2-Instance

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

Importieren der Backup-Datei von der EC2-Instance in die MySQL-Datenbank

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 auch, was für den Umgang mit dem Produktions-Workload 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 DB-Instance-Klassen.

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

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

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

    • Geben Sie wie folgt 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 MariaDB 5.5 oder höher ist, muss Ihre Amazon-RDS-DB-Instance MariaDB sein.

    • Geben Sie dieselbe Virtual Private Cloud (VPC) und VPC-Sicherheitsgruppe an, die Sie auch für die Amazon-EC2-Instance ausgewählt haben. Durch diesen Ansatz wird sichergestellt, dass Ihre Amazon EC2-Instance und Ihre Amazon RDS-Instance im Netzwerk gegenseitig 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 später 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 Arbeiten mit Parametergruppen.

  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 Instance zugreifen müssen. Der Hostname für die Amazon-RDS-Datenbank ist der Wert Endpoint (Endpunkt) für diese Instance ohne Portnummer. Ein Beispiel ist mysampledb.123456789012.us-west-2.rds.amazonaws.com. Sie finden den Endpunktwert in den Datenbankdetails der Amazon-RDS-Managementkonsole.

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

  6. Stellen Sie als Remote-Host eine Verbindung mit Ihrer Amazon-RDS-Datenbank von Ihrer Amazon-EC2-Instance aus mithilfe des Befehls mysql her. Im Folgenden wird ein Beispiel gezeigt.

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

    Der Hostname ist der Amazon-RDS-Datenbankendpunkt.

  7. Führen Sie in der mysql-Eingabeaufforderung den Befehl source aus und geben Sie den Namen Ihrer Datenbank-Dump-Datei ein, in die die Daten in der Amazon RDS-DB-Instance geladen werden sollen:

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

      mysql> source backup.sql;
    • Für das Textformat mit Trennzeichen 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 beim ersten Abspeichern der Tabelle irgendwelche Datenformatierungsoptionen mit mysqldump verwendet haben, stellen Sie sicher, dass Sie dieselben Optionen wie verwenden, um eine korrekte Interpretation des Inhalts der LOAD DATA LOCAL INFILE Datendatei zu gewährleisten.

  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 Amazon EC2 EC2-Instance nicht mehr benötigen, beenden Sie die EC2-Instance, um Ihren AWS Ressourcenverbrauch zu reduzieren. Weitere Informationen zum Beenden einer EC2-Instance finden Sie unter Beenden einer Instance im Amazon-EC2-Benutzerhandbuch.

Replizieren zwischen Ihrer externen Datenbank und Ihrer neuen Amazon-RDS-Datenbank

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 verknüpfen.

Replizieren von Daten aus der externen MySQL-Datenbank in die Datenbank in RDS

Die erforderlichen Berechtigungen für das Starten einer Replikation in einer Amazon-RDS-Datenbank sind beschränkt und für Ihren Amazon-RDS-Hauptbenutzer nicht verfügbar. Stellen Sie aus diesem Grund sicher, dass Sie entweder den Amazon-RDS-Befehl mysql.rds_set_external_master oder mysql.rds_set_external_master_gtid für die Konfiguration einer Replikation und den Befehl mysql.rds_start_replication für das Starten einer Replikation zwischen Ihrer Live-Datenbank und Ihrer Amazon-RDS-Datenbank verwenden.

So starten Sie eine Replikation:

In einem vorherigen Schritt haben Sie die Binärprotokollierung 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-Managementkonsole die IP-Adresse des Servers, der die Quelldatenbank hostet, der VPC-Sicherheitsgruppe dieser Amazon-RDS-Datenbank hinzu. Weitere Informationen zum Ändern einer VPC-Sicherheitsgruppe finden Sie unter Sicherheitsgruppen für Ihre VPC im Amazon Virtual Private Cloud-Benutzerhandbuch.

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

    host rds_db_endpoint

    Der Hostname ist der DNS-Name aus dem Endpunkt der Amazon-RDS-Datenbank, z. B myinstance.123456789012.us-east-1.rds.amazonaws.com. Sie finden den Endpunktwert in den Instance-Details in der Amazon RDS-Managementkonsole.

  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. Im Folgenden wird ein Beispiel gezeigt.

    MySQL 5.5, 5.6 und 5.7

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

    MySQL 8.0

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password 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 Datenbank für den 'repl_user'-Benutzer für Ihre Domäne, mit dem folgenden Befehl.

    MySQL 5.5, 5.6 und 5.7

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
    Anmerkung

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

  4. Wenn Sie das SQL-Format zum Erstellen Ihrer Sicherungsdatei verwendet haben und die externe Instance nicht MariaDB 10.0.24 oder höher ist, schauen Sie sich den Inhalt dieser Datei an.

    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 ein separiertes Textformat verwendet haben, um Ihre Sicherungsdatei zu erstellen, und die externe Instance nicht vom Typ MariaDB-Version 10.0.24 oder höher ist, sollten Sie bereits binäre Protokollkoordinaten aus Schritt 1 des Verfahrens unter „So erstellen Sie eine Sicherungskopie Ihrer vorhandenen Datenbank“ in diesem Thema haben.

    Wenn die externe Instance MariaDB 10.0.24 oder höher ist, sollten Sie bereits die GTID haben, von der aus Sie die Replikation aus Schritt 2 des Verfahrens unter „So erstellen Sie eine Sicherungskopie Ihrer vorhandenen Datenbank“ in diesem Thema starten können.

  5. Konfigurieren Sie die Amazon-RDS-Datenbank als Replikat. Wenn die externe Instance nicht 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 als Quellreplikations-Instance. Verwenden Sie den Namen der Hauptprotokolldatei und die Position im Hauptprotokoll, die Sie im vorherigen Schritt ermittelt haben, wenn Sie über eine Sicherungsdatei im SQL-Format verfügen. Oder verwenden Sie den Namen und die Position, die Sie beim Erstellen der Sicherungsdateien ermittelt haben, wenn das Textformat mit Trennzeichen verwendet wurde. Im Folgenden wird ein Beispiel gezeigt.

    CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
    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 unter „So erstellen Sie eine Sicherungskopie Ihrer vorhandenen Datenbank“ in diesem Thema bestimmt haben. Im Folgenden wird ein Beispiel gezeigt.

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

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

    Anmerkung

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

  6. Verwenden Sie für die Amazon-RDS-Datenbank den Befehl mysql.rds_start_replication, 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 festzustellen, wann sich das Replikat up-to-date bei der Quellreplikationsinstanz befindet. Zu den Ergebnissen des SHOW REPLICA STATUS-Befehls gehört das Feld Seconds_Behind_Master. Wenn das Seconds_Behind_Master Feld 0 zurückgibt, befindet sich das Replikat up-to-date bei 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.

    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.

  8. Nachdem die Amazon RDS-Datenbank eingerichtet wurde up-to-date, aktivieren Sie automatische Backups, damit Sie diese Datenbank bei Bedarf wiederherstellen können. Sie können automatische Backups für Ihre Amazon-RDS-Datenbank in der Amazon-RDS-Managementkonsole aktivieren oder ändern. Weitere Informationen finden Sie unter Einführung in Backups.

Weiterleiten Ihrer Live-Anwendung zu Ihrer Amazon RDS-Instance

Nachdem sich die MariaDB- oder MySQL-Datenbank in der Quellreplikationsinstanz befindet up-to-date , können Sie Ihre Live-Anwendung jetzt so aktualisieren, dass sie die Amazon RDS-Instance verwendet.

Anhalten der Replikation und Weiterleiten der Live-Anwendung an die Datenbank in RDS

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 Sicherheitsgruppen für Ihre VPC im Amazon Virtual Private Cloud-Benutzerhandbuch.

  2. Stellen Sie sicher, dass das Seconds_Behind_Master Feld in den Ergebnissen des Befehls SHOW REPLICA STATUS den Wert 0 hat, was bedeutet, dass sich das Replikat up-to-date bei der Quellreplikationsinstanz befindet.

    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. Halten Sie die Replikation für die Amazon RDS-Instance mithilfe des Befehls mysql.rds_stop_replication an.

    CALL mysql.rds_stop_replication;
  7. Führen Sie den Befehl mysql.rds_reset_external_master in Ihrer Amazon-RDS-Datenbank aus, um die Replikationskonfiguration zurückzusetzen, damit diese Instance nicht mehr als Replikat identifiziert wird.

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