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:
Themen
- Einschränkungen
- Übersicht über das Exportieren von Snapshot-Daten
- Einrichten des Zugriffs auf einen Amazon S3-Bucket
- Verwendung eines kontoübergreifenden AWS KMS key zum Verschlüsseln von Amazon-S3-Exporten
- Exportieren eines Snapshots in einen Amazon S3-Bucket
- Überwachung von Snapshot-Exporten
- Abbrechen einer Snapshot-Exportaufgabe
- Fehlermeldungen für Amazon-S3-Exportaufgaben
- Fehlerbehebung bei PostgreSQL-Berechtigungsfehlern
- Benennungskonvention für Dateien
- Datenkonvertierung beim Exportieren in einen Amazon S3-Bucket
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.
-
Identifizieren Sie den zu exportierenden Snapshot.
Verwenden Sie einen vorhandenen automatischen oder manuellen Snapshot oder erstellen Sie einen manuellen Snapshot einer DB-Instance.
-
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:
-
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.
-
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.
-
-
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.
-
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. -
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.
Themen
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.
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.
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
-
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 namensyour-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
/*" ] } ] }' -
-
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" } ] }'
-
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
durch den Richtlinien-ARN, den Sie in einem früheren Schritt notiert haben.your-policy-arn
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
-
Fügen Sie dem lokalen Konto eine Schlüsselrichtlinie hinzu.
Das folgende Beispiel gibt
ExampleRole
undExampleUser
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": "*" }
-
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
undExampleUser
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.
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:
-
Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich die Option Snapshots.
-
Wählen Sie auf den Registerkarten die Art des Snapshots aus, den Sie exportieren möchten.
-
Wählen Sie in der Liste der Snapshots den Snapshot aus, den Sie exportieren möchten.
-
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.
-
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.
-
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
] ...database
n[.schema
n][.table
n]Zum Beispiel:
mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
-
-
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.
-
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.
-
-
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.
-
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-namemy-export-bucket
\ --iam-role-arniam-role
\ --kms-key-idmy-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-namemy-export-bucket
^ --iam-role-arniam-role
^ --kms-key-idmy-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:
-
Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich die Option Snapshots.
-
Um die Liste der Snapshot-Exporte anzuzeigen, wählen Sie die Registerkarte Exports in Amazon S3 (Exporte in Amazon S3) aus.
-
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.
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:
-
Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich die Option Snapshots.
-
Wählen Sie die Registerkarte Exports in Amazon S3 (Exporte in Amazon S3) aus.
-
Wählen Sie die Snapshot-Exportaufgabe aus, die Sie abbrechen möchten.
-
Klicken Sie auf Abbrechen.
-
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:
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
TOsuperuser_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
gespeichert, wobei das Basispräfix folgendes ist:base_prefix
/files
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
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 |