Blog

Exportieren von Amazon RDS-Snapshots nach S3: Extrahieren einzelner Tabellendaten

21.11.2024
Lesezeit: 5 Minuten.
Zuletzt aktualisiert am: 10.10.2025

Inhaltsübersicht

Amazon Relational Database Service (RDS) ist zu einem Eckpfeiler für viele Unternehmen geworden, die ihre relationalen Datenbanken in der Cloud verwalten möchten. Eine leistungsstarke Funktion von RDS ist die Möglichkeit, Snapshots zu erstellen, die als Point-in-Time-Backups Ihrer Datenbankinstanzen dienen. Wussten Sie jedoch, dass Sie diese RDS-Snapshots direkt in einen Amazon S3-Bucket exportieren können? In diesem Blog-Beitrag werden wir den Wert des Exports von RDS-Snapshots zu S3 untersuchen und wie man Python verwendet, um Daten aus bestimmten Datenbanken, Schemata oder Tabellen zu extrahieren und sie in das SQL- oder CSV-Format für weitere Analysen zu konvertieren.

Standardmäßig bedeutet die Wiederherstellung einer Datenbank aus einem Snapshot die Erstellung eines neuen Clusters aus diesem Snapshot. Das ist manchmal zu viel und nicht erforderlich. Was aber, wenn man nur einen Teil der Daten aus dem Snapshot erhalten möchte? Natürlich könnte man einen neuen Cluster erstellen und dann eine Verbindung herstellen und die benötigten Daten dumpen, aber es gibt eine Alternative - den Export in S3.

Das Exportieren von RDS-Snapshots nach S3 ist einfach zu bewerkstelligen. Hier finden Sie einen kurzen Überblick über die erforderlichen Schritte:

Wenn Sie dies noch nicht getan haben, erstellen Sie einen S3-Bucket, in dem Sie Ihre RDS-Snapshots speichern möchten

Erstellen Sie eine IAM-Rolle mit Berechtigungen, die es RDS erlauben, auf Ihr S3-Bucket zu schreiben.

Verwenden Sie die AWS Management Console, AWS CLI oder SDKs, um Ihren RDS-Snapshot in den S3-Bucket zu exportieren

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 amzn-s3-demo-bucket \

    --iam-role-arn iam-role \

    --export-only database.schema.table \

    --kms-key-id my-key

Die Aufgabe "Exportieren" unterstützt den teilweisen Datenbankexport über das Flag "Nur exportieren", gefolgt von der Tabelle oder dem Schema, das exportiert werden soll. Mehr Details HIER

Beispiel IAM-Rolle; amazon rds
beigefügte Richtlinien

Die Wiederherstellung nimmt Zeit in Anspruch - in meinen Testszenarien dauerte sie etwa 30-40 Minuten. RDS muss einen ganzen Cluster hochfahren und den Datenbank-Dump durchführen.

Danach finden Sie die extrahierten Daten im Bucket. Sie liegen im ".parquet"-Format vor. Wir können ein einfaches Python-Skript verwenden, um sie in SQL-Anweisungen umzuwandeln

  1. python3 -m venv .venv    
  2. Quelle .venv/bin/activate
  3. pip install pandas pyarrow                                                            
import pandas as pd

import argparse

def parquet_to_sql(parquet_file, table_name, output_file):

    # Read the Parquet file into a DataFrame

    df = pd.read_parquet(parquet_file)

    # Get the column names from the DataFrame

    columns = df.columns.tolist()

    # Create a list to store SQL insert statements

    sql_statements = []

    # Generate SQL INSERT statement for each row

    for index, row in df.iterrows():

        # Prepare the SQL insert statement

        values = [f"'{str(val)}'" if isinstance(val, str) else 'NULL' if pd.isna(val) else str(val) for val in row]

        insert_statement = f"INSERT INTO {table_name} ({', '.join(columns)}) VALUES ({', '.join(values)});"

        sql_statements.append(insert_statement)

    # Write SQL statements to the output file

    with open(output_file, 'w') as f:

        for statement in sql_statements:

            f.write(statement + '\n')

    print(f"SQL statements saved to {output_file}")

def main():

    # Set up argument parser

    parser = argparse.ArgumentParser(description='Convert Parquet to SQL insert statements.')

    parser.add_argument('parquet_file', type=str, help='Path to the Parquet file')

    parser.add_argument('table_name', type=str, help='Name of the target SQL table')

    parser.add_argument('--output', type=str, default='output.sql', help='Output SQL file (default: output.sql)')

    # Parse command-line arguments

    args = parser.parse_args()

    # Convert the Parquet file to SQL

    parquet_to_sql(args.parquet_file, args.table_name, args.output)

if __name__ == "__main__":

    main()

Verwendung:

python main.py --output MY_OUTPUT.sql MY_EXPORT.gz.parquet TABLE_NAME

Beispiel:

python main.py --output senders.sql part-00000-657cc6f6-1bc3-466f-9e2d-433e98af2b6f-c000.gz.parquet senders

Der Export von Amazon RDS-Snapshots nach S3 kann eine äußerst effektive Methode sein, um auf Daten zuzugreifen und sie zu analysieren, ohne dass ein neuer RDS-Cluster erstellt werden muss. Durch den direkten Export in S3 und die Nutzung eines einfachen Python-Skripts können Sie selektiv Tabellen oder bestimmte Daten aus Snapshots für Aufgaben wie Data Warehousing, Auditing und Archivierung extrahieren.

Stellen Sie immer sicher, dass Ihr S3-Bucket mit strengen Zugriffsrichtlinien konfiguriert ist, insbesondere wenn Ihre Snapshots sensible Informationen enthalten. Verwenden Sie AWS KMS, um Daten bei der Übertragung und im Ruhezustand zu verschlüsseln.

Erweiterung des Python-Skripts um Mechanismen zur Fehlerbehandlung, einschließlich Prüfungen auf Datenkompatibilität und Protokollierung, um es in Produktionsumgebungen robuster zu machen

Beachten Sie die potenziellen S3-Speicherkosten für große Snapshots und ziehen Sie die Einrichtung von Lebenszyklusrichtlinien in Betracht, um Daten auf kostengünstigere Speicherklassen zu übertragen, wenn eine langfristige Speicherung erforderlich ist.

Verwenden Sie AWS Lambda und Step Functions, um Snapshot-Exporte und Konvertierungen nach einem Zeitplan zu automatisieren, um die Datenextraktion zu optimieren und manuelle Eingriffe zu minimieren.

Wenn Sie mit großen Datensätzen arbeiten, sollten Sie das Python-Konvertierungsskript für die Verarbeitung größerer Parquet-Dateien optimieren

Durch die Integration dieser Verbesserungen können Sie einen skalierbaren, sicheren und effizienten Workflow für den Export und die Verarbeitung von RDS-Snapshots direkt in S3 einrichten, der für Analysen und die Integration in Ihre breitere Datenstrategie bereit ist.

Eine Antwort hinterlassen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

Jeder Anbieter von Observability-Lösungen hat mittlerweile etwas im Angebot, das als „AI SRE“ bezeichnet wird. Cloud-Anbieter haben eines. Plattformen für das Incident-Management haben eines. Ihr Monitoring-Tool hat wahrscheinlich im letzten Quartal eines hinzugefügt. Die Frage für die meisten...
Lesen
AI SRE Agent: Die ersten 20 Minuten eines Vorfalls automatisieren Es ist 3 Uhr morgens. Ein Alarm wird ausgelöst. Sie klappen Ihren Laptop auf, und die nächsten zwanzig Minuten verlaufen wie immer...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.