Importieren von Daten aus einer beliebigen Quelle zu einer MariaDB- oder MySQL-DB-Instance - 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 aus einer beliebigen Quelle zu einer MariaDB- oder MySQL-DB-Instance

Wir empfehlen, vor und nach dem Laden der Daten DB-Snapshots der Amazon RDS-DB-Zielinstanz zu erstellen. Amazon RDS-DB-Snapshots sind vollständige Backups von Ihrer DB-Instance, die für eine Wiederherstellung Ihrer DB-Instance auf einen bekannten Zustand verwendet werden können. Wenn Sie ein DB-Snapshot-I/O initiieren, werden alle Operationen in Ihrer DB-Instance augenblicklich unterbrochen, während Ihre Datenbank gesichert wird.

Wenn Sie einen DB-Snapshot unmittelbar vor dem Laden erstellen, können Sie die Datenbank bei Bedarf in ihrem Zustand vor dem Laden wiederherstellen. Ein DB-Snapshot, der sofort nach einem Ladevorgang gemacht wird, schützt Sie vor einem erneuten Laden der Daten, falls ein Fehler auftritt. Sie können diesen aber auch als Anfangsbestand für neue Datenbank-Instances verwenden.

Im Folgenden sind die durchzuführenden Schritte aufgeführt. Jeder Schritt wird im Folgenden ausführlicher erläutert.

  1. Erstellen Sie flache Dateien, die die zu ladenden Daten enthalten.

  2. Stoppen Sie alle Anwendungen, die auf die Ziel-DB-Instance zugreifen.

  3. Erstellen eines DB-Snapshots.

  4. Erwägen Sie, automatische Backups für Amazon RDS zu deaktivieren.

  5. Laden Sie die Daten.

  6. Aktivieren Sie die automatischen Backups erneut.

Schritt 1: Erstellen Sie flache Dateien, die die zu ladenden Daten enthalten

Verwenden Sie ein gängiges Format, z. B. kommagetrennte Werte (CSV), um die zu ladenden Daten zu speichern. Jede Tabelle muss über eine eigene Datei verfügen. Sie können keine Daten für mehrere Tabellen in derselben Datei kombinieren. Geben Sie jeder Datei denselben Namen wie der zugehörigen Tabelle. Die Dateierweiterung können Sie benennen, wie Sie möchten. Wenn der Tabellenname beispielsweise sales lautet, kann der Dateiname sales.csv oder sales.txt lauten, aber nicht sales_01.csv.

Wann immer es möglich ist, ordnen Sie Daten nach Primärschlüssel der ladenden Tabelle. Dadurch werden die Ladezeiten drastisch verbessert und die Anforderungen an den Festplattenspeicher minimiert.

Die optimale Geschwindigkeit und Effizienz dieser Prozedur ist auf kleine Dateigrößen ausgelegt. Wenn die Größe einer einzelnen unkomprimierten Datei mehr als 1 GiB beträgt, teilen Sie diese in mehrere Dateien auf, die danach separat geladen werden können.

Verwenden Sie auf Unix-ähnlichen Systemen (einschließlich Linux) den split-Befehl. Der folgende Befehl teilt beispielsweise die Datei sales.csv in mehrere Dateien auf, die kleiner als 1 GiB sind. Die Teilung findet nur an Zeilenumbrüchen statt (-C 1024m). Die neuen Dateien heißen sales.part_00, sales.part_01 usw.

split -C 1024m -d sales.csv sales.part_

Ähnliche Hilfsprogramme sind auch für andere Betriebssysteme verfügbar.

Schritt 2: Halten Sie alle Anwendungen an, die auf die Ziel-DB-Instance zugreifen

Stoppen Sie vor dem Starten eines großen Ladevorgangs alle Anwendungsaktivitäten, die auf die DB-Ziel-Instance zugreifen, in die die Daten geladen werden sollen. Wir empfehlen dies insbesondere, wenn andere Sitzungen die zu ladenden Tabellen oder die in diesen Tabellen referenzierten Tabellen verändern. Dadurch wird die Gefahr von Verstößen gegen Einschränkungen während des Ladens reduziert und zugleich die Ausführungsgeschwindigkeit des Ladevorgangs erhöht. Zudem wird es möglich, die DB-Instance im Zustand unmittelbar vor dem Ladevorgang wiederherzustellen, ohne die Änderungen durch Prozesse zu verlieren, die nicht am Ladevorgang beteiligt sind.

Unter Umständen ist dies jedoch nicht möglich oder nicht praktikabel. Wenn Sie vor dem Ladevorgang den Zugriff von Anwendungen auf die DB-Instance nicht stoppen können, führen Sie die erforderlichen Schritte aus, um die Verfügbarkeit und Integrität der Daten sicherzustellen. Die jeweiligen erforderlichen Schritte können sich stark unterscheiden, je nachdem welche besonderen Verwendungsfälle der Standortanforderungen vorliegen.

Schritt 3: Erstellen Sie einen DB-Snapshot

Wenn Sie Daten in eine neue DB-Instance laden wollen, die keine Daten enthält, können Sie diesen Schritt überspringen. Andernfalls ermöglicht das Erstellen eines DB-Snapshots der DB-Instance die Wiederherstellung der DB-Instance in dem Zustand, den sie unmittelbar vor dem Ladevorgang hatte, falls dies erforderlich wird. Wie bereits zuvor erwähnt, werden, wenn Sie ein DB-Snapshot I/O initiieren, alle Operationen in Ihrer DB-Instance für einige Minuten unterbrochen, während die Datenbank gesichert wird.

Im folgenden Beispiel wird der AWS CLI create-db-snapshot Befehl verwendet, um einen DB-Snapshot der AcmeRDS Instance zu erstellen und dem DB-Snapshot die ID zu geben"preload".

Für LinuxmacOS, oderUnix:

aws rds create-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

Windows:

aws rds create-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

Sie können auch die Wiederherstellung aus der DB-Snapshot-Funktionalität verwenden, um Test-DB-Instances für Testversuche zu erstellen, oder, um die Änderungen während eines Ladevorgangs rückgängig zu machen.

Bedenken Sie, dass die Wiederherstellung einer Datenbank aus einem DB-Snapshot eine neue DB-Instance erstellt, die wie alle DB-Instances über eine eindeutige Kennung und einen Endpunkt verfügt. Um die DB-Instance wiederherzustellen, ohne den Endpunkt zu ändern, löschen Sie zuerst die DB-Instance, damit Sie den Endpunkt wiederverwenden können.

Um beispielsweise eine DB-Instance für einen Testlauf oder andere Testzwecke zu erstellen, weisen Sie der DB-Instance eine eigene Kennung zu. Im Beispiel ist AcmeRDS-2" die Kennung. Das Beispiel stellt über den Endpunkt, der AcmeRDS-2 zugeordnet ist, eine Verbindung mit der DB-Instance her.

Für LinuxmacOS, oderUnix:

aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS-2 \ --db-snapshot-identifier preload

Windows:

aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS-2 ^ --db-snapshot-identifier preload

Um einen bestehenden Endpunkt erneut zu verwenden, löschen Sie zuerst die DB-Instance und weisen Sie dann der wiederhergestellten Datenbank dieselbe Kennung zu.

Für LinuxmacOS, oderUnix:

aws rds delete-db-instance \ --db-instance-identifier AcmeRDS \ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

Windows:

aws rds delete-db-instance ^ --db-instance-identifier AcmeRDS ^ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

Im vorherigen Beispiel wird ein letzter DB-Snapshot der DB-Instance erstellt, bevor sie gelöscht wird. Dies ist zwar optional, wird aber empfohlen.

Schritt 4: Erwägen Sie, automatische Backups für Amazon RDS zu deaktivieren

Warnung

Deaktivieren Sie automatische Backups nicht, wenn Sie eine point-in-time Wiederherstellung durchführen müssen.

Durch das Deaktivieren automatisierter Backups werden alle vorhandenen Backups gelöscht, sodass eine point-in-time Wiederherstellung nicht möglich ist, nachdem automatische Backups deaktiviert wurden. Das Deaktivieren von automatischen Backups ist eine Leistungsoptimierung und ist für Datenladevorgänge nicht erforderlich. Beachten Sie, dass manuelle DB-Snapshots nicht von der Deaktivierung automatischer Backups betroffen sind. Alle bestehenden manuellen DB-Snapshots bleiben für eine Wiederherstellung verfügbar.

Das Deaktivieren von automatischen Backups reduziert die Ladezeit um 25 % und verringert zugleich den während des Ladevorgangs erforderlichen Speicherplatz. Wenn Sie Daten in eine neue DB-Instance laden wollen, die keine Daten enthält, ist das Deaktivieren von Backups eine einfache Möglichkeit, die Übertragungsgeschwindigkeit zu erhöhen und zusätzlichen Speicherverbrauch zu vermeiden. In einigen Fällen können Sie jedoch in eine DB-Instance laden, die bereits Daten enthält. Wenn ja, sollten Sie die Vorteile der Deaktivierung von Backups gegen die Auswirkungen eines Verlusts der Leistungsfähigkeit point-in-time-recovery abwägen.

In DB-Instances ist die Funktion für automatische Backups standardmäßig aktiviert (mit einem Aufbewahrungszeitraum von 1 Tag). Setzen Sie den Wert des Aufbewahrungszeitraums für Backups auf 0, um automatische Backups zu deaktivieren. Nach dem Ladevorgang können Sie Backups erneut aktivieren, indem Sie den Aufbewahrungszeitraum für Backups auf einen Nicht-Null-Wert setzen. Um Backups zu aktivieren oder zu deaktivieren, fährt Amazon RDS die DB-Instance herunter und startet sie neu, um die Protokollierung in MariaDB oder MySQL zu aktivieren oder zu deaktivieren.

Verwenden Sie den AWS CLI modify-db-instance Befehl, um die Backup-Aufbewahrung auf Null zu setzen und die Änderung sofort zu übernehmen. Das Setzen des Aufbewahrungszeitraums für Backups auf Null erfordert den Neustart einer DB-Instance. Warten Sie daher bitte, bis der Neustart abgeschlossen wurde, bevor Sie fortfahren.

Für LinuxmacOS, oderUnix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --apply-immediately \ --backup-retention-period 0

Windows:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --apply-immediately ^ --backup-retention-period 0

Sie können den Status Ihrer DB-Instance mit dem AWS CLI describe-db-instances Befehl überprüfen. Das folgende Beispiel zeigt den DB-Instance-Status der AcmeRDS-DB-Instance.

aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"

Wenn der Status der DB-Instance available ist, können Sie fortfahren.

Schritt 5: Laden Sie die Daten

Verwenden Sie die LOAD DATA LOCAL INFILE MySQL-Anweisung, um Zeilen aus Ihren Flatfiles in die Datenbanktabellen zu lesen.

Das folgende Beispiel zeigt Ihnen, wie Sie Daten aus einer Datei mit dem Namen sales.txt in eine Sales in der Datenbank benannte Tabelle laden.

mysql> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\'; Query OK, 1 row affected (0.01 sec) Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

Weitere Informationen zu der LOAD DATA Anweisung finden Sie in der MySQL-Dokumentation.

Schritt 6: Reaktivieren Sie automatische Backups für Amazon RDS

Nachdem der Ladevorgang abgeschlossen ist, aktivieren Sie die automatischen Backups in Amazon RDS erneut, indem Sie den Aufbewahrungszeitraum für Backups auf seinen ursprünglichen Wert vor dem Ladevorgang setzen. Wie bereits vorher erwähnt, wird Amazon RDS einen Neustart der DB-Instance durchführen, es kommt also zu einem kurzen Ausfall.

Im folgenden Beispiel wird der AWS CLI modify-db-instance Befehl verwendet, um automatische Backups für die AcmeRDS DB-Instance zu aktivieren und die Aufbewahrungsfrist auf einen Tag festzulegen.

Für LinuxmacOS, oderUnix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --backup-retention-period 1 \ --apply-immediately

Windows:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --backup-retention-period 1 ^ --apply-immediately