Exportieren von DB-Snapshot-Daten nach Amazon S3 - Amazon Relational Database Service

Exportieren von DB-Snapshot-Daten nach Amazon S3

Sie können DB-Snapshot-Daten in einen Amazon S3-Bucket exportieren. Der Exportprozess läuft im Hintergrund und beeinträchtigt nicht die Leistung Ihrer aktiven DB-Instance.

Wenn Sie einen DB-Snapshot exportieren, extrahiert Amazon RDS Daten aus dem Snapshot und speichert sie in einem Amazon-S3-Bucket in Ihrem Konto. Die Daten werden in einem Apache Parquet-Format gespeichert, das komprimiert und konsistent ist.

Sie können alle Arten von DB-Snapshots exportieren – einschließlich manueller Snapshots, automatisierter System-Snapshots und vom AWS Backup-Service erzeugter Snapshots. Standardmäßig werden alle Daten im Snapshot exportiert. Sie können sich jedoch dafür entscheiden, bestimmte Sätze von Datenbanken, Schemata oder Tabellen zu exportieren.

Nachdem die Daten exportiert wurden, können Sie die exportierten Daten direkt mit Tools wie Amazon Athena oder Amazon Redshift Spectrum analysieren. Weitere Informationen zur Verwendung Athena zum Lesen von Parquet-Daten finden Sie unter Parquet SerDe im Amazon Athena-Benutzerhandbuch. Weitere Informationen zur Verwendung Redshift Spectrum zum Lesen von Parquet-Daten finden Sie unter COPY from columnar data formats im Amazon Redshift Database Developer Guide.

Amazon RDS unterstützt den Export von Snapshots in alle AWS-Regionen mit Ausnahme der folgenden:

  • Asien-Pazifik (Jakarta)

  • AWS GovCloud (USA-Ost)

  • AWS GovCloud (USA-West)

Die folgende Tabelle zeigt die Engine-Versionen, die für den Export von Snapshot-Daten nach Amazon S3 unterstützt werden.

MariaDB MySQL PostgreSQL

10.3

10.2.12 und höher

8.0.13 und höher

5.7.24 und höher

5.6.40 und höher

Alle Versionen 12 und 13

11.2 und höher

10.7 und höher

9.6.6 – 9.6.9, 9.6.12 und höher

Eine vollständige Liste der von Amazon RDS unterstützten Engine-Versionen finden Sie im Folgenden:

Einschränkungen

Das Exportieren von DB-Snapshot-Daten nach Amazon S3 hat die folgenden Einschränkungen:

  • Das Exportieren von Snapshots aus DB-Instances, die magnetischen Speicher verwenden, wird nicht unterstützt.

  • Wenn eine Datenbank, ein Schema oder eine Tabelle andere Zeichen als den folgenden enthält, wird ein teilweiser Export nicht unterstützt. Sie können jedoch den gesamten DB-Snapshot exportieren.

    • Lateinische Buchstaben (A–Z)

    • Ziffern (0–9)

    • Dollar-Symbol ($)

    • Unterstrich (_)

  • Leerzeichen ( ) und bestimmte andere Zeichen werden in den Spaltennamen von Datenbanktabellen nicht unterstützt. Tabellen mit den folgenden Zeichen in Spaltennamen werden beim Export übersprungen:

    , ; { } ( ) \n \t = (space)
  • Wenn die Daten ein großes Objekt wie BLOB oder CLOB mit einer Größe von 500 MB oder mehr enthalten, schlägt der Export fehl.

  • Wenn eine Zeile in einer Tabelle ca. 2 GB groß oder noch größer ist, wird die Tabelle beim Export übersprungen.

  • Es wird dringend empfohlen, für jede Exportaufgabe einen eindeutigen Namen zu verwenden. Wenn Sie keinen eindeutigen Aufgabennamen verwenden, erhalten Sie möglicherweise die folgende Fehlermeldung:

    ExportTaskAlreadyExistsFault: Beim Aufrufen des StartExportTask-Vorgangs ist ein Fehler aufgetreten (ExportTaskAlreadyExists): Die Exportaufgabe mit der ID xxxxx ist bereits vorhanden.

Übersicht über das Exportieren von Snapshot-Daten

Sie verwenden den folgenden Prozess, um DB-Snapshot-Daten in eine Amazon S3 einen Bucket zu exportieren. Weitere Informationen finden Sie in den folgenden Abschnitten.

  1. Identifizieren Sie den zu exportierenden Snapshot.

    Verwenden Sie einen vorhandenen automatischen oder manuellen Snapshot oder erstellen Sie einen manuellen Snapshot einer DB-Instance.

  2. Richten Sie den Zugriff auf den Amazon S3-Bucket ein.

    Ein Bucket ist ein Container für Amazon S3-Objekte oder -Dateien. Um die Informationen für den Zugriff auf einen Bucket bereitzustellen, führen Sie die folgenden Schritte aus:

    1. Identifizieren Sie den S3-Bucket, in den der Snapshot exportiert werden soll. Der S3-Bucket muss sich in derselben AWS-Region wie der Snapshot befinden. Weitere Informationen finden Sie unter Identifizieren des Amazon S3-Buckets, in den exportiert werden soll.

    2. Erstellen Sie eine AWS Identity and Access Management (IAM)-Rolle, die der Snapshot-Exportaufgabe Zugriff auf den S3 Bucket gewährt. Weitere Informationen finden Sie unter Bereitstellen des Zugriffs auf einen Amazon S3-Bucket mit einer IAM-Rolle.

  3. Erstellen Sie einen symmetrischen AWS KMS key für die serverseitige Verschlüsselung. Der KMS-Schlüssel wird von der Snapshot-Exportaufgabe verwendet, um AWS KMS serverseitige Verschlüsselung beim Schreiben der Exportdaten in S3 einzurichten. Weitere Informationen finden Sie unter Verschlüsseln von Amazon RDS-Ressourcen.

    Der KMS-Schlüssel wird auch für die lokale Festplattenverschlüsselung im Ruhezustand auf Amazon EC2 verwendet. Wenn Ihre KMS-Schlüsselrichtlinie eine Anweisung zur Zugriffsverweigerung enthält, müssen Sie den AWS-Service-Prinzipal export.rds.amazonaws.com explizit ausschließen.

    Sie können einen KMS-Schlüssel in Ihrem AWS-Konto oder Sie können einen kontoübergreifenden KMS-Schlüssel verwenden. Weitere Informationen finden Sie unter Verwendung eines kontoübergreifenden AWS KMS key zum Verschlüsseln von Amazon-S3-Exporten.

  4. Exportieren Sie den Snapshot mit der Konsole oder dem CLI-Befehl start-export-task nach Amazon S3. Weitere Informationen finden Sie unter Exportieren eines Snapshots in einen Amazon S3-Bucket.

  5. Um auf Ihre exportierten Daten im Amazon S3-Bucket zuzugreifen, siehe Hochladen, Herunterladen und Verwalten von Objekten im Amazon Simple Storage Service User Guide.

Einrichten des Zugriffs auf einen Amazon S3-Bucket

Um DB-Snapshot-Daten in eine Amazon S3-Datei zu exportieren, geben Sie zunächst dem Snapshot die Berechtigung für den Zugriff auf den Amazon S3-Bucket. Dann erstellen Sie eine IAM-Rolle, um dem Amazon RDS-Service zu erlauben, in den Amazon S3-Bucket zu schreiben.

Identifizieren des Amazon S3-Buckets, in den exportiert werden soll

Identifizieren Sie den Amazon S3-Bucket, in den der DB-Snapshot exportiert werden soll. Verwenden Sie einen vorhandenen S3-Bucket oder erstellen Sie einen neuen S3-Bucket.

Anmerkung

Der S3-Bucket, in den exportiert werden soll, muss sich in derselben AWS-Region wie der Snapshot befinden.

Weitere Informationen zur Arbeit mit Amazon S3-Buckets finden Sie im Amazon Simple Storage Service User Guide:

Bereitstellen des Zugriffs auf einen Amazon S3-Bucket mit einer IAM-Rolle

Bevor Sie DB-Snapshot-Daten nach Amazon S3 exportieren, geben Sie den Snapshot-Exportaufgaben Schreibzugriffsrechte auf den Amazon S3-Bucket.

Erstellen Sie dazu eine IAM-Richtlinie, die den Zugriff auf den -Bucket ermöglicht. Erstellen Sie dann eine IAM-Rolle und weisen Sie die Richtlinie der Rolle zu. Die IAM-Rolle weisen Sie später Ihrer Snapshot-Exportaufgabe zu.

Wichtig

Wenn Sie planen, die AWS Management Console zum Exportieren Ihres Snapshots zu verwenden, können Sie wählen, dass die IAM-Richtlinie und die Rolle beim Exportieren des Snapshots automatisch erstellt werden. Anweisungen finden Sie unter Exportieren eines Snapshots in einen Amazon S3-Bucket.

So geben Sie DB-Snapshot-Aufgaben Zugriff auf Amazon S3

  1. Erstellen Sie eine IAM-Richtlinie. Diese Richtlinie bietet die Berechtigungen für den Bucket und die Objekte, die den Zugriff auf Ihre Snapshot-Exportaufgabe ermöglichen Amazon S3.

    Die Richtlinie enthält die folgenden erforderlichen Aktionen, um die Übertragung von Dateien aus Amazon RDS in einen S3-Bucket zu ermöglichen:

    • s3:PutObject*

    • s3:GetObject*

    • s3:ListBucket

    • s3:DeleteObject*

    • s3:GetBucketLocation

    Fügen Sie in die Richtlinie die folgenden Ressourcen zur Identifizierung des S3-Buckets und der Objekte im Bucket ein. Die folgende Liste von Ressourcen zeigt das ARN-Format (Amazon-Ressourcenname) für den Amazon S3-Zugriff.

    • arn:aws:s3:::your-s3-bucket

    • arn:aws:s3:::your-s3-bucket/*

    Weitere Informationen zur Erstellung einer IAM-Richtlinie für Amazon RDS finden Sie unter Erstellen und Verwenden einer IAM-Richtlinie für den IAM-Datenbankzugriff. Siehe auch Tutorial: Erstellen und Anfügen Ihrer ersten vom Kunden verwalteten Richtlinie im IAM-Benutzerhandbuch.

    Der folgende AWS CLI-Befehl erstellt eine IAM-Richtlinie namens ExportPolicy mit diesen Optionen. Sie gewährt Zugriff auf einen Bucket namens your-s3-bucket.

    Anmerkung

    Nachdem Sie die Richtlinie erstellt haben, notieren Sie den ARN der Richtlinie. Sie benötigen den ARN für einen nachfolgenden Schritt, in dem Sie die Richtlinie an eine IAM-Rolle anhängen.

    aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::your-s3-bucket", "arn:aws:s3:::your-s3-bucket/*" ] } ] }'
  2. Erstellen Sie eine IAM-Rolle. Sie tun dies, damit Amazon RDS diese IAM-Rolle in Ihrem Namen übernehmen kann, um auf Ihre Amazon S3-Buckets zuzugreifen. Weitere Informationen finden Sie unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM-Benutzer im IAM-Benutzerhandbuch.

    Das folgende Beispiel zeigt die Verwendung des AWS CLI-Befehls zum Erstellen einer Rolle mit dem Namen rds-s3-export-role.

    aws iam create-role --role-name rds-s3-export-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
  3. Fügen Sie die erstellte IAM-Richtlinie der IAM-Rolle an, die Sie erstellt haben.

    Mit dem folgenden AWS CLI-Befehl wird die zuvor erstellte Richtlinie der Rolle mit dem Namen rds-s3-export-role zugeordnet. Ersetzen Sie your-policy-arn durch den Richtlinien-ARN, den Sie in einem früheren Schritt notiert haben.

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role

Einen kontoübergreifenden Amazon-S3-Bucket verwenden

Sie können Amazon-S3-Bucket für AWS-Konten. Um einen kontoübergreifenden Bucket zu verwenden, fügen Sie eine Bucket-Richtlinie hinzu, um den Zugriff auf die IAM-Rolle zu erlauben, die Sie für die S3-Exporte verwenden. Weitere Informationen finden Sie unter Beispiel 2: Bucket-Eigentümer erteilt kontoübergreifende Bucket-Berechtigungen.

  • Fügen Sie eine Bucket-Richtlinie an Ihren Bucket an, wie im folgenden Beispiel gezeigt.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/Admin" }, "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::mycrossaccountbucket", "arn:aws:s3:::mycrossaccountbucket/*" ] } ] }

Verwendung eines kontoübergreifenden AWS KMS key zum Verschlüsseln von Amazon-S3-Exporten

Sie können ein kontoübergreifendes AWS KMS key nutzen, um Amazon-S3-Exporte zu verschlüsseln. Zuerst fügen Sie dem lokalen Konto eine Schlüsselrichtlinie hinzu und fügen dann IAM-Richtlinien im externen Konto hinzu. Weitere Informationen finden Sie unter Benutzern in anderen Konten die Verwendung eines KMS-Schlüssels erlauben.

So verwenden Sie einen kontoübergreifenden KMS-Schlüssel

  1. Fügen Sie dem lokalen Konto eine Schlüsselrichtlinie hinzu.

    Das folgende Beispiel gibt ExampleRole und ExampleUser im externen Konto 444455556666 Berechtigungen im lokalen Konto 123456789012.

    { "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "*" }
  2. Fügen Sie IAM-Richtlinien im externen Konto hinzu.

    Die folgende IAM-Richtlinie erlaubt es dem Prinzipal, den KMS-Schlüssel im Konto 123456789012 für kryptografische Operationen zu erlauben. Um diese Berechtigung an ExampleRole und ExampleUser zu erteilen, fügen Sie die Richtlinie zu ihnen im Konto 444455556666 an.

    { "Sid": "Allow use of KMS key in account 123456789012", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Exportieren eines Snapshots in einen Amazon S3-Bucket

Sie können bis zu fünf gleichzeitige DB-Snapshot-Exportaufgaben pro Konto durchführen.

Anmerkung

Das Exportieren von RDS-Snapshots kann je nach Datenbanktyp und -größe eine Weile dauern. Die Exportaufgabe stellt zuerst die gesamte Datenbank wieder her und skaliert sie, bevor die Daten in Amazon S3 extrahiert werden. Der Fortschritt des Vorgangs während dieser Phase wird als Starting (Startet) angezeigt. Wenn die Aufgabe zum Exportieren von Daten zu S3 wechselt, wird der Fortschritt als In progress (In Bearbeitung) angezeigt.

Die Zeit, die für den Export benötigt wird, hängt von den in der Datenbank gespeicherten Daten ab. Beispielsweise exportieren Tabellen mit gut verteilten numerischen Primärschlüssel- oder Indexspalten am schnellsten. Bei Tabellen, die keine Spalte enthalten, die für die Partitionierung geeignet ist, und bei Tabellen mit nur einem Index für eine auf Zeichenfolgen basierende Spalte, dauert dies länger, da der Export einen langsameren Single-Thread-Prozess verwendet. Diese längere Exportzeit tritt auf, da der Export einen langsameren Single-Thread-Prozess verwendet.

Sie können einen DB-Snapshot mit Hilfe der AWS Management Console, der AWS CLI oder der RDS-API zu Amazon S3 exportieren.

Wenn Sie eine Lambda-Funktion zum Exportieren eines Snapshots verwenden, fügen Sie die Aktion kms:DescribeKey der Lambda-Funktionsrichtlinie hinzu. Weitere Informationen finden Sie unter AWS Lambda Berechtigungen.

Die Konsolenoption Export to Amazon S3 (Zu Amazon S3-Konsole exportieren) wird nur für Snapshots angezeigt, die zu Amazon S3 exportiert werden können. Ein Snapshot ist aus folgenden Gründen möglicherweise nicht für den Export verfügbar:

  • Die DB-Engine wird für den S3-Export nicht unterstützt.

  • Die DB-Instance-Version wird für den S3-Export nicht unterstützt.

  • Der S3-Export wird in der AWS-Region, in der der Snapshot erstellt wurde, nicht unterstützt.

So exportieren Sie einen DB-Snapshot:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich die Option Snapshots.

  3. Wählen Sie auf den Registerkarten die Art des Snapshots aus, den Sie exportieren möchten.

  4. Wählen Sie in der Liste der Snapshots den Snapshot aus, den Sie exportieren möchten.

  5. Wählen Sie für Actions (Aktionen) die Option Export to Amazon S3 (Nach Amazon S3 exportieren) aus.

    Das Fenster Export to Amazon S3 (Nach Amazon S3 exportieren) erscheint.

  6. Geben Sie für Export identifier (Export-ID) einen Namen ein, um die Exportaufgabe zu identifizieren. Dieser Wert wird auch für den Namen der im S3-Bucket erstellten Datei verwendet.

  7. Wählen Sie die zu exportierenden Daten aus:

    • Wählen Sie All (Alle), um alle Daten im Snapshot zu exportieren.

    • Wählen Sie Partial (Teilweise), um bestimmte Teile des Snapshots zu exportieren. Um zu ermitteln, welche Teile des Snapshots exportiert werden sollen, geben Sie eine oder mehrere Datenbanken, Schemas oder Tabellen für Bezeichner ein, getrennt durch Leerzeichen.

      Verwenden Sie das folgende Format:

      database[.schema][.table] database2[.schema2][.table2] ... databasen[.scheman][.tablen]

      Zum Beispiel:

      mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
  8. Wählen Sie für S3 bucket (S3-Bucket) den Bucket aus, in den exportiert werden soll.

    Um die exportierten Daten einem Ordnerpfad im S3-Bucket zuzuordnen, geben Sie den optionalen Pfad für S3 prefix (S3-Präfix) ein.

  9. Wählen Sie für die IAM-Rolle entweder eine Rolle, die Ihnen Schreibzugriff auf den gewählten S3-Bucket gewährt, oder erstellen Sie eine neue Rolle.

    • Wenn Sie eine Rolle durch Befolgen der Schritte in Bereitstellen des Zugriffs auf einen Amazon S3-Bucket mit einer IAM-Rolle erstellt haben, wählen Sie diese Rolle.

    • Wenn Sie keine Rolle erstellt haben, die Ihnen Schreibzugriff auf den von Ihnen gewählten S3-Bucket gewährt, wählen Sie Create a new role (Neue Rolle erstellen), um die Rolle automatisch zu erstellen. Geben Sie dann unter IAM role name (IAM-Rollenname) einen Namen für die Rolle ein.

  10. Für AWS KMS key geben Sie den ARN für den Schlüssel ein, der für die Verschlüsselung der exportierten Daten verwendet werden soll.

  11. Wählen Sie Export to Amazon S3 (Nach Amazon S3 exportieren) aus.

Um einen DB–Snapshot mit AWS CLI nach Amazon S3 zu exportieren, verwenden Sie den Befehl start-export-task mit den folgenden erforderlichen Optionen:

  • --export-task-identifier

  • --source-arn

  • --s3-bucket-name

  • --iam-role-arn

  • --kms-key-id

In den folgenden Beispielen heißt die Aufgabe für den Export von Snapshots my-snapshot-export, die einen Snapshot in einen S3-Bucket namens my-export-bucket exportiert.

Für Linux, macOS oder Unix:

aws rds start-export-task \ --export-task-identifier my-snapshot-export \ --source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name \ --s3-bucket-name my-export-bucket \ --iam-role-arn iam-role \ --kms-key-id my-key

Für Windows:

aws rds start-export-task ^ --export-task-identifier my-snapshot-export ^ --source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name ^ --s3-bucket-name my-export-bucket ^ --iam-role-arn iam-role ^ --kms-key-id my-key

Beispiel für eine Ausgabe folgt.

{ "Status": "STARTING", "IamRoleArn": "iam-role", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "my-export-bucket", "PercentProgress": 0, "KmsKeyId": "my-key", "ExportTaskIdentifier": "my-snapshot-export", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name" }

Um einen Ordnerpfad im S3-Bucket für den Snapshot-Export bereitzustellen, fügen Sie die Option --s3-prefix im Befehl start-export-task hinzu.

Um einen DB-Snapshot mit der Amazon RDS-API nach Amazon S3 zu exportieren, verwenden Sie die Operation StartExportTask mit den folgenden erforderlichen Parametern:

  • ExportTaskIdentifier

  • SourceArn

  • S3BucketName

  • IamRoleArn

  • KmsKeyId

Überwachung von Snapshot-Exporten

Sie können DB-Snapshot-Exporte mit der AWS Management Console, der AWS CLI oder der RDS-API überwachen.

So überwachen Sie DB-Snapshot-Exporte:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich die Option Snapshots.

  3. Um die Liste der Snapshot-Exporte anzuzeigen, wählen Sie die Registerkarte Exports in Amazon S3 (Exporte in Amazon S3) aus.

  4. Um Informationen über einen bestimmten Snapshot-Export anzuzeigen, wählen Sie die Exportaufgabe aus.

Um DB-Snapshot-Exporte mit der AWS CLI zu überwachen, verwenden Sie den Befehl describe-export-tasks.

Das folgende Beispiel zeigt, wie Sie aktuelle Informationen über alle Ihre Snapshot-Exporte anzeigen können.

aws rds describe-export-tasks { "ExportTasks": [ { "Status": "CANCELED", "TaskEndTime": "2019-11-01T17:36:46.961Z", "S3Prefix": "something", "ExportTime": "2019-10-24T20:23:48.364Z", "S3Bucket": "examplebucket", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "anewtest", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-25T19:10:58.885Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:parameter-groups-test" }, { "Status": "COMPLETE", "TaskEndTime": "2019-10-31T21:37:28.312Z", "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}", "S3Prefix": "", "ExportTime": "2019-10-31T06:44:53.452Z", "S3Bucket": "examplebucket1", "PercentProgress": 100, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "thursday-events-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 263, "TaskStartTime": "2019-10-31T20:58:06.998Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-31-06-44" }, { "Status": "FAILED", "TaskEndTime": "2019-10-31T02:12:36.409Z", "FailureCause": "The S3 bucket edgcuc-export isn't located in the current AWS Region. Please, review your S3 bucket name and retry the export.", "S3Prefix": "", "ExportTime": "2019-10-30T06:45:04.526Z", "S3Bucket": "examplebucket2", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "wednesday-afternoon-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-30T22:43:40.034Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-30-06-45" } ] }

Um Informationen über einen bestimmten Snapshot-Export anzuzeigen, fügen Sie die Option --export-task-identifier mit dem Befehl --export-task-identifier ein. Um die Ausgabe zu filtern, fügen Sie die Option --Filters ein. Weitere Optionen finden Sie beim describe-export-tasks-Befehl.

Um Informationen über DB-Snapshot-Exporte mit der Amazon RDS-API anzuzeigen, verwenden Sie die DescribeExportTasks-Operation.

Um den Abschluss des Exportworkflows zu verfolgen oder einen anderen Workflow auszulösen, können Sie Amazon Simple Notification Service-Themen abonnieren. Weitere Informationen zu Amazon SNS finden Sie unter Verwenden von Amazon RDS-Ereignisbenachrichtigungen.

Abbrechen einer Snapshot-Exportaufgabe

Sie können eine DB-Snapshot-Exportaufgabe mit Hilfe der AWS Management Console, der AWS CLI oder der RDS-API abbrechen.

Anmerkung

Das Abbrechen einer Snapshot-Exportaufgabe entfernt keine Daten, die nach Amazon S3 exportiert wurden. Informationen zum Löschen der Daten über die Konsole finden Sie unter Wie lösche ich Objekte aus einem S3-Bucket?. Um die Daten mit der CLI zu löschen, verwenden Sie den Befehl delete-object.

So brechen Sie eine Aufgabe zum Export von Snapshots ab:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich die Option Snapshots.

  3. Wählen Sie die Registerkarte Exports in Amazon S3 (Exporte in Amazon S3) aus.

  4. Wählen Sie die Snapshot-Exportaufgabe aus, die Sie abbrechen möchten.

  5. Klicken Sie auf Abbrechen.

  6. Wählen Sie die Bestätigungsseite Cancel export task (Exportaufgabe abbrechen) aus.

Um eine Snapshot-Exportaufgabe mit der AWS CLI abzubrechen, verwenden Sie den Befehl cancel-export-task aus. Der Befehl erfordert die Option --export-task-identifier.

aws rds cancel-export-task --export-task-identifier my_export { "Status": "CANCELING", "S3Prefix": "", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "examplebucket", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "my_export", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:export-example-1" }

Um einen Snapshot-Exportauftrag mit der Amazon RDS-API abzubrechen, verwenden Sie den Befehl CancelExportTask mit dem Parameter ExportTaskIdentifier.

Fehlermeldungen für Amazon-S3-Exportaufgaben

In der folgenden Tabelle werden die Nachrichten beschrieben, die zurückgegeben werden, wenn Amazon-S3-Exportaufgaben fehlschlagen.

Fehlernachricht Beschreibung
Ein unbekannter interner Fehler ist aufgetreten.

Die Aufgabe ist fehlgeschlagen, da eine unbekannte Störung, eine Ausnahme oder ein Fehler aufgetreten ist.

Beim Schreiben der Metadaten der Exportaufgabe in den S3-Bucket [Bucket-Name] ist ein unbekannter interner Fehler aufgetreten].

Die Aufgabe ist fehlgeschlagen, da eine unbekannte Störung, eine Ausnahme oder ein Fehler aufgetreten ist.

Der RDS-Export konnte die Metadaten der Exportaufgabe nicht schreiben, da er die IAM-Rolle [Rolle ARN] nicht übernehmen kann].

Die Exportaufgabe geht davon aus, dass Ihre IAM-Rolle überprüft, ob es erlaubt ist Metadaten in Ihren S3-Bucket zu schreiben Wenn die Aufgabe Ihre IAM-Rolle nicht übernehmen kann, schlägt sie fehl.

Der RDS-Export konnte die Metadaten der Exportaufgabe nicht in den S3-Bucket [Bucket-Name] mit der IAM-Rolle [Rolle ARN] mit dem KMS-Schlüssel [Schlüssel-ID] schreiben]. Fehlercode: [Fehlercode]

Eine oder mehrere Berechtigungen fehlen, sodass die Exportaufgabe nicht auf den S3-Bucket zugreifen kann. Diese Fehlermeldung wird ausgelöst, wenn eine der folgenden Optionen empfangen wird:

  • AWSSecurityTokenServiceException mit dem Fehlercode AccessDenied

  • AmazonS3Exception mit dem Fehlercode NoSuchBucket, AccessDenied, KMS.KMSInvalidStateException, 403 Forbidden, oder KMS.DisabledException

Dies bedeutet, dass zwischen der IAM-Rolle, dem S3-Bucket oder dem KMS-Schlüssel Einstellungen falsch konfiguriert sind.

Die IAM-Rolle [Rolle ARN] ist nicht berechtigt, [S3-Aktion] im S3-Bucket [Bucket-Name] aufzurufen]. Überprüfen Sie Ihre Berechtigungen und versuchen Sie den Export erneut.

Die IAM-Richtlinie ist falsch konfiguriert. Die Berechtigung für die spezifische S3-Aktion für den S3-Bucket fehlt. Dies führt dazu, dass die Exportaufgabe fehlschlägt.

Fehler bei der Überprüfung des KMS-Schlüssels. Überprüfen Sie die Anmeldeinformation Ihres KMS-Schlüssels und versuchen Sie es erneut. Die Überprüfung der KMS-Schlüsselanmeldeinformationen ist fehlgeschlagen.
Die Überprüfung der S3-Anmeldeinformation ist fehlgeschlagen. Überprüfen Sie die Berechtigungen für Ihren S3-Bucket und Ihre IAM-Richtlinie. Die Überprüfung der S3-Anmeldeinformation ist fehlgeschlagen.
Der S3-Bucket [Bucket-Name] ist ungültig. Entweder befindet es sich nicht in der aktuellen AWS Region oder es gibt sie nicht. Überprüfen Sie Ihren S3-Bucket-Namen und versuchen Sie den Export erneut. Der S3-Bucket ist ungültig.
Der S3-Bucket [Bucket-Name] befindet sich nicht in der aktuellen AWS Region. Überprüfen Sie Ihren S3-Bucket-Namen und versuchen Sie den Export erneut. Der S3-Bucket liegt in der falschen AWS Region.

Fehlerbehebung bei PostgreSQL-Berechtigungsfehlern

Beim Exportieren von PostgreSQL-Datenbanken in Amazon S3 wird möglicherweise ein PERMISSIONS_DO_NOT_EXIST-Fehler angezeigt, der besagt, dass bestimmte Tabellen übersprungen wurden. Dies wird normalerweise durch den Superuser verursacht, den Sie beim Erstellen der DB-Instance angeben, der keine Berechtigungen zum Zugriff auf diese Tabellen besitzt.

Führen Sie den folgenden Befehl aus, um diesen Fehler zu beheben:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO superuser_name

Weitere Informationen zu Superuser-Berechtigungen finden Sie unter Berechtigungen von Hauptbenutzerkonten.

Benennungskonvention für Dateien

Exportierte Daten für bestimmte Tabellen werden im Format base_prefix/files gespeichert, wobei das Basispräfix folgendes ist:

export_identifier/database_name/schema_name.table_name/

Beispiel:

export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/

Es gibt zwei Konventionen für die Benennung von Dateien. Die aktuelle Konvention ist die Folgende:

partition_index/part-00000-random_uuid.format-based_extension

Beispiel:

1/part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet 2/part-00000-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet 3/part-00000-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet

Die ältere Konvention ist die Folgende:

part-partition_index-random_uuid.format-based_extension

Beispiel:

part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet

Die Namenskonvention für Dateien kann geändert werden. Daher empfehlen wir beim Lesen von Zieltabellen, dass Sie alles innerhalb des Basispräfixes für die Tabelle lesen.

Datenkonvertierung beim Exportieren in einen Amazon S3-Bucket

Wenn Sie einen DB-Snapshot in einen Amazon S3-Bucket exportieren, konvertiert Amazon RDS Daten in das Parquet-Format, exportiert Daten darin und speichert Daten im Parquet-Format. Weitere Informationen über Parquet finden Sie auf der Website Apache Parquet.

Parquet speichert alle Daten als einen der folgenden primitiven Typen:

  • BOOLEAN

  • INT32

  • INT64

  • INT96

  • FLOAT

  • DOUBLE

  • BYTE_ARRAY – Ein Byte-Array mit variabler Länge, auch bekannt als Binary

  • FIXED_LEN_BYTE_ARRAY – Ein Byte-Array fester Länge, das verwendet wird, wenn die Werte eine konstante Größe haben

Es gibt nur wenige Parquet-Datentypen, um die Komplexität beim Lesen und Schreiben des Formats zu reduzieren. Parquet bietet logische Typen zur Erweiterung primitiver Typen. Ein logischer Typ ist als Annotation, bei der Daten in einem LogicalType-Metadatenfeld implementiert sind. Die logische Typannotation beschreibt, wie der primitive Typ zu interpretieren ist.

Wenn der logische Typ STRING einen STRING-Typ annotiert, gibt er an, dass das Byte-Array als UTF-8-kodierte Zeichenfolge interpretiert werden soll. Nach Abschluss einer Exportaufgabe informiert Sie Amazon RDS, wenn eine Zeichenfolgenkonvertierung stattgefunden hat. Die zugrunde liegenden exportierten Daten entsprechen immer den Daten aus der Quelle. Aufgrund des Kodierungsunterschieds in UTF-8 können jedoch einige Zeichen beim Einlesen von Tools wie Athena anders als in der Quelle erscheinen.

Weitere Informationen finden Sie unter Logische Typdefinitionen für Parquet in der Parquet-Dokumentation.

MySQL- und MariaDB-Datentyp-Mapping zu Parquet

Die folgende Tabelle zeigt das Mapping von MySQL- und MariaDB-Datentypen zu Parquet-Datentypen, wenn die Daten konvertiert und nach Amazon S3 exportiert werden.

Quelldatentyp Parquet-Primitiv-Typ Logische Typannotation Anmerkungen zur Konvertierung
Numerische Datentypen
BIGINT INT64
BIGINT UNSIGNED FIXED_LEN_BYTE_ARRAY(9) DECIMAL(20,0) Parquet unterstützt nur signierte Typen, daher erfordert das Mapping ein zusätzliches Byte (8 plus 1), um den Typ BIGINT_UNSIGNED zu speichern.
BIT BYTE_ARRAY
DECIMAL INT32 DECIMAL (p,s) Wenn der Quellwert kleiner als 231 ist, wird er als INT32 gespeichert.
INT64 DECIMAL (p,s) Wenn der Quellwert 231 oder größer ist, aber kleiner als 263 ist, wird er als INT64 gespeichert.
FIX_LEN_BYTE_ARRAY(N) DECIMAL (p,s) Wenn der Quellwert 263 oder größer ist, wird er als FIXED_LEN_BYTE_ARRAY(N) gespeichert.
BYTE_ARRAY STRING Parquet unterstützt maximal 38 Dezimalstellen. Der Dezimalwert wird in eine Zeichenfolge vom Typ BYTE_ARRAY konvertiert und als UTF8 kodiert.
DOUBLE DOUBLE
FLOAT DOUBLE
INT INT32
INT UNSIGNED INT64
MEDIUMINT INT32
MEDIUMINT UNSIGNED INT64
NUMERIC INT32 DECIMAL (p,s)

Wenn der Quellwert kleiner als 231 ist, wird er als INT32 gespeichert.

INT64 DECIMAL (p,s) Wenn der Quellwert 231 oder größer ist, aber kleiner als 263 ist, wird er als INT64 gespeichert.
FIXED_LEN_ARRAY(N) DECIMAL (p,s) Wenn der Quellwert 263 oder größer ist, wird er als FIXED_LEN_BYTE_ARRAY(N) gespeichert.
BYTE_ARRAY STRING Parquet unterstützt keine numerische Genauigkeit größer als 38. Der Numeric-Wert wird in eine Zeichenfolge vom Typ BYTE_ARRAY konvertiert und als UTF8 kodiert.
SMALLINT INT32
SMALLINT UNSIGNED INT32
TINYINT INT32
TINYINT UNSIGNED INT32
Zeichenfolgen-Datentypen
BINARY BYTE_ARRAY
BLOB BYTE_ARRAY
CHAR BYTE_ARRAY
ENUM BYTE_ARRAY STRING
LINESTRING BYTE_ARRAY
LONGBLOB BYTE_ARRAY
LONGTEXT BYTE_ARRAY STRING
MEDIUMBLOB BYTE_ARRAY
MEDIUMTEXT BYTE_ARRAY STRING
MULTILINESTRING BYTE_ARRAY
SET BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TINYBLOB BYTE_ARRAY
TINYTEXT BYTE_ARRAY STRING
VARBINARY BYTE_ARRAY
VARCHAR BYTE_ARRAY STRING
Datums- und Uhrzeit-Datentypen
DATUM BYTE_ARRAY STRING Ein Datum wird in eine Zeichenfolge vom Typ BYTE_ARRAY konvertiert und als UTF8 kodiert.
DATETIME INT64 TIMESTAMP_MICROS
TIME BYTE_ARRAY STRING Ein TIME-Typ wird in einem BYTE_ARRAY in eine Zeichenfolge konvertiert und als UTF8 kodiert.
TIMESTAMP INT64 TIMESTAMP_MICROS
YEAR INT32
Geometrische Datentypen
GEOMETRY BYTE_ARRAY
GEOMETRYCOLLECTION BYTE_ARRAY
MULTIPOINT BYTE_ARRAY
MULTIPOLYGON BYTE_ARRAY
POINT BYTE_ARRAY
POLYGON BYTE_ARRAY
JSON-Datentyp
JSON BYTE_ARRAY STRING

PostgreSQL-Datentyp-Mapping zu Parquet

Die folgende Tabelle zeigt das Mapping von PostgreSQL-Datentypen zu Parquet-Datentypen, wenn Daten konvertiert und nach Amazon S3 exportiert werden.

PostgreSQL-Datentyp Parquet-Primitiv-Typ Logische Typannotation Anmerkungen zum Mapping
Numerische Datentypen
BIGINT INT64
BIGSERIAL INT64
DECIMAL BYTE_ARRAY STRING Ein DECIMAL-Typ wird in eine Zeichenfolge in einem BYTE_ARRAY-Typ konvertiert und als UTF8 kodiert.

Diese Konvertierung soll Komplikationen aufgrund von Datengenauigkeit und Datenwerten, die keine Zahlen sind (NaN), vermeiden.

DOUBLE PRECISION DOUBLE
INTEGER INT32
MONEY BYTE_ARRAY STRING
REAL FLOAT
SERIAL INT32
SMALLINT INT32 INT_16
SMALLSERIAL INT32 INT_16
Zeichenfolgen- und verwandte Datentypen
ARRAY BYTE_ARRAY STRING

Ein Array wird in eine Zeichenfolge konvertiert und als BINARY (UTF8) kodiert.

Diese Konvertierung dient dazu, Komplikationen aufgrund von Datengenauigkeit, Datenwerten, die keine Zahl sind (NaN), und Zeitdatenwerten zu vermeiden.

BIT BYTE_ARRAY STRING
BIT VARYING BYTE_ARRAY STRING
BYTEA BINARY
CHAR BYTE_ARRAY STRING
CHAR(N) BYTE_ARRAY STRING
ENUM BYTE_ARRAY STRING
NAME BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TEXT SEARCH BYTE_ARRAY STRING
VARCHAR(N) BYTE_ARRAY STRING
XML BYTE_ARRAY STRING
Datums- und Uhrzeit-Datentypen
DATUM BYTE_ARRAY STRING
INTERVAL BYTE_ARRAY STRING
TIME BYTE_ARRAY STRING
TIME WITH TIME ZONE BYTE_ARRAY STRING
TIMESTAMP BYTE_ARRAY STRING
TIMESTAMP WITH TIME ZONE BYTE_ARRAY STRING
Geometrische Datentypen
BOX BYTE_ARRAY STRING
CIRCLE BYTE_ARRAY STRING
LINE BYTE_ARRAY STRING
LINESEGMENT BYTE_ARRAY STRING
PATH BYTE_ARRAY STRING
POINT BYTE_ARRAY STRING
POLYGON BYTE_ARRAY STRING
JSON-Datentypen
JSON BYTE_ARRAY STRING
JSONB BYTE_ARRAY STRING
Weitere Datentypen
BOOLEAN BOOLEAN
CIDR BYTE_ARRAY STRING Network-Datentyp
COMPOSITE BYTE_ARRAY STRING
DOMAIN BYTE_ARRAY STRING
INET BYTE_ARRAY STRING Network-Datentyp
MACADDR BYTE_ARRAY STRING
OBJECT IDENTIFIER
PG_LSN BYTE_ARRAY STRING
RANGE BYTE_ARRAY STRING
UUID BYTE_ARRAY STRING