Mithilfe von SQL-Dumpdateien exportieren und importieren

Auf dieser Seite wird gezeigt, wie Sie Daten mithilfe von SQL-Dumpdateien exportieren und in Cloud SQL-Instanzen importieren.

Hinweise

Exporte verwenden Datenbankressourcen, stören den normalen Datenbankbetrieb jedoch nicht, wenn die Instanz nicht unterdimensioniert ist.

Best Practices finden Sie unter Best Practices zum Importieren und Exportieren von Daten.

Prüfen Sie die Ergebnisse nach Abschluss eines Importvorgangs.

Daten aus Cloud SQL for PostgreSQL exportieren

Erforderliche Rollen und Berechtigungen für das Exportieren aus Cloud SQL for PostgreSQL

Damit Daten aus Cloud SQL in Cloud Storage exportiert werden können, muss der Nutzer, der den Export initiiert, eine der folgenden Rollen haben:

Darüber hinaus muss das Dienstkonto für die Cloud SQL-Instanz eine der folgenden Rollen haben:

  • Die IAM-Rolle (Identity and Access Management) storage.objectAdmin
  • Eine benutzerdefinierte Rolle mit folgenden Berechtigungen:
    • storage.objects.create
    • storage.objects.list (nur für parallelen Export von Dateien)
    • storage.objects.delete (nur für das parallele Exportieren von Dateien)

Informationen zu IAM-Rollen finden Sie unter Identity and Access Management.

Aus Cloud SQL for PostgreSQL in eine SQL-Dumpdatei exportieren

Wenn Sie mit Cloud SQL einen Export in der Google Cloud Console, mit der gcloud CLI oder der API ausführen, verwenden Sie das Dienstprogramm pg_dump mit den Optionen, die erforderlich sind, damit die ausgegebene Exportdatei in Cloud SQL importiert werden kann.

Wenn Sie dagegen Ihre Daten in Cloud SQL importieren möchten, folgen Sie der Anleitung unter Daten von einem externen Datenbankserver exportieren, damit Ihre SQL-Dumpdatei korrekt für Cloud SQL formatiert wird.

So exportieren Sie Daten aus einer Datenbank in einer Cloud SQL-Instanz in eine SQL-Dumpdatei in einem Cloud Storage-Bucket:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
  3. Klicken Sie auf Exportieren.
  4. Klicken Sie im Bereich Dateiformat auf SQL, um eine SQL-Dumpdatei zu erstellen.
  5. Wählen Sie im Drop-down-Menü im Bereich Zu exportierende Daten die Datenbank aus, aus der Sie Daten exportieren möchten.
  6. Wählen Sie im Bereich Ziel die Option Durchsuchen aus, um nach einem Cloud Storage-Bucket oder -Ordner für den Export zu suchen.
  7. Klicken Sie auf Exportieren, um mit dem Export zu beginnen.

gcloud

  1. Cloud Storage-Bucket erstellen
  2. Suchen Sie das Dienstkonto für die Cloud SQL-Instanz, aus der Sie exportieren. Dazu können Sie den Befehl gcloud sql instances describe ausführen. Suchen Sie in der Ausgabe nach dem Feld serviceAccountEmailAddress.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Weisen Sie mit gcloud storage buckets add-iam-policy-binding die IAM-Rolle storage.objectAdmin dem Dienstkonto zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  4. Exportieren Sie die Datenbank in Ihren Cloud Storage-Bucket:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \
    --database=DATABASE_NAME \
    --offload
      

    Mit dem Befehl export sql werden zwar Ansichten exportiert, jedoch keine Trigger oder gespeicherten Prozeduren. Verwenden Sie das Tool pg_dump, um Trigger und/oder gespeicherte Prozeduren zu exportieren.

    Weitere Informationen zur Verwendung des Befehls export sql finden Sie auf der Referenzseite des Befehls sql export sql.

  5. Wenn Sie die zuvor festgelegte IAM-Rolle nicht beibehalten möchten, entfernen Sie sie jetzt.

REST Version 1

  1. Erstellen Sie einen Bucket für den Export:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME

    Dieser Schritt ist nicht erforderlich, wird aber dringend empfohlen, damit kein Zugriff auf andere Daten möglich ist.

  2. Weisen Sie Ihrer Instanz die IAM-Rolle legacyBucketWriter für Ihren Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  3. Exportieren Sie Ihre Datenbank:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die Projekt-ID
    • INSTANCE_ID: die Instanz-ID
    • BUCKET_NAME: der Name des Cloud Storage-Buckets
    • PATH_TO_DUMP_FILE: der Pfad zur SQL-Dumpdatei
    • DATABASE_NAME_1: der Name einer Datenbank in der Cloud SQL-Instanz
    • DATABASE_NAME_2: der Name einer Datenbank in der Cloud SQL-Instanz

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export

    JSON-Text anfordern:

    {
      "exportContext":
        {
           "fileType": "SQL",
           "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
           "databases": ["DATABASE_NAME"],
           "offload": TRUE | FALSE,
           "sqlExportOptions": {
            "clean": [TRUE|FALSE],
            "ifExists": [TRUE|FALSE]
           }
        }
     }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Wenn Sie die zuvor festgelegte IAM-Rolle nicht beibehalten möchten, entfernen Sie diese jetzt.
Die vollständige Liste der Parameter für die Anfrage finden Sie auf der Seite instances:export.

REST v1beta4

  1. Erstellen Sie einen Bucket für den Export:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    

    Dieser Schritt ist nicht erforderlich, wird aber dringend empfohlen, damit kein Zugriff auf andere Daten möglich ist.

  2. Weisen Sie Ihrer Instanz die IAM-Rolle storage.objectAdmin für Ihren Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  3. Exportieren Sie Ihre Datenbank:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die Projekt-ID
    • INSTANCE_ID: die Instanz-ID
    • BUCKET_NAME: der Name des Cloud Storage-Buckets
    • PATH_TO_DUMP_FILE: der Pfad zur SQL-Dumpdatei
    • DATABASE_NAME_1: der Name einer Datenbank in der Cloud SQL-Instanz
    • DATABASE_NAME_2: der Name einer Datenbank in der Cloud SQL-Instanz

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export

    JSON-Text anfordern:

    {
       "exportContext":
         {
            "fileType": "SQL",
            "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
            "databases": ["DATABASE_NAME"],
            "offload": TRUE | FALSE,
            "sqlExportOptions": {
             "clean": [TRUE|FALSE],
             "ifExists": [TRUE|FALSE]
            }
         }
      }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Wenn Sie die zuvor festgelegte IAM-Rolle nicht beibehalten möchten, entfernen Sie sie jetzt.
Die vollständige Liste der Parameter für diese Anfrage finden Sie auf der Seite instances:export.

Daten in Cloud SQL for PostgreSQL importieren

Erforderliche Rollen und Berechtigungen für das Importieren in Cloud SQL for PostgreSQL

Wenn Sie Daten aus Cloud Storage in Cloud SQL importieren möchten, muss der Nutzer, der den Import initiiert, eine der folgenden Rollen haben:

Darüber hinaus muss das Dienstkonto für die Cloud SQL-Instanz eine der folgenden Rollen haben:

  • storage.objectAdmin IAM-Rolle.
  • Eine benutzerdefinierte Rolle mit folgenden Berechtigungen:
    • storage.objects.get
    • storage.objects.list (nur für den parallelen Import von Dateien)

Informationen zu IAM-Rollen finden Sie unter Identity and Access Management.

SQL-Dumpdatei in Cloud SQL for PostgreSQL importieren

SQL-Dateien sind Nur-Text-Dateien mit einer Abfolge von SQL-Befehlen.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
  3. Klicken Sie auf Importieren.
  4. Geben Sie im Abschnitt Datei auswählen, aus der Sie Daten importieren möchten den Pfad zum Bucket und zur SQL-Dumpdatei für den Import ein oder wechseln Sie zu einer vorhandenen Datei.

    Sie können eine komprimierte Datei (.gz) oder eine unkomprimierte Datei (.sql) importieren.

  5. Wählen Sie unter Format die Option SQL aus.
  6. Wählen Sie die Datenbank aus, in die die Daten importiert werden sollen.

    Dadurch führt Cloud SQL vor dem Import die Anweisung USE DATABASE aus.

  7. Wählen Sie bei Bedarf einen Nutzer für den Import aus.

    Wenn Ihre Importdatei Anweisungen enthält, die von einem bestimmten Nutzer ausgeführt werden müssen, können Sie mit diesem Feld einen Nutzer angeben.

  8. Klicken Sie auf Importieren, um den Import zu starten.

gcloud

  1. Erstellen Sie einen Cloud Storage-Bucket.
  2. Laden Sie die Datei in den Bucket hoch.

    Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.

  3. Beschreiben Sie die Instanz, in die Sie Daten importieren:
    gcloud sql instances describe INSTANCE_NAME
  4. Kopieren Sie das Feld serviceAccountEmailAddress.
  5. Weisen Sie mit gcloud storage buckets add-iam-policy-binding die IAM-Rolle storage.objectAdmin dem Dienstkonto für den Bucket zu.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  6. Importieren Sie die Datenbank:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME

    Informationen zum Verwenden des Befehls import sql finden Sie auf der Referenzseite des Befehls sql import sql.

    Wenn durch den Befehl ein Fehler wie ERROR_RDBMS zurückgegeben wird, prüfen Sie die Berechtigungen. Dieser Fehler wird oft durch Berechtigungsprobleme verursacht.

  7. Wenn Sie die zuvor festgelegten Cloud IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese mit gcloud storage buckets remove-iam-policy-binding.

REST Version 1

  1. Erstellen Sie eine SQL-Dumpdatei. In der verknüpften Anleitung werden bestimmte Flags festgelegt, durch die die Dumpdatei mit Cloud SQL kompatibel wird.

    • Wenn Sie Daten von einem lokalen PostgreSQL-Server importieren:
      1. Erstellen Sie eine SQL-Dumpdatei anhand der Anleitung unter Daten mit pg_dump exportieren.
      2. Erstellen Sie einen Bucket in Cloud Storage. Folgen Sie dazu der Anleitung unter Buckets erstellen.
      3. Laden Sie die SQL-Dumpdatei in den Cloud Storage-Bucket hoch. Gehen Sie dabei wie unter Objekte hochladen beschrieben vor.
  2. Erstellen Sie einen Cloud Storage-Bucket.
  3. Laden Sie die Datei in den Bucket hoch.

    Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.

  4. Weisen Sie Ihrer Instanz die IAM-Rollen legacyBucketWriter und objectViewer für Ihren Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  5. Importieren Sie die Dumpdatei:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID
    • bucket_name: der Name des Cloud Storage-Buckets
    • path_to_sql_file: der Pfad zur SQL-Datei
    • database_name: der Name einer Datenbank in der Cloud SQL-Instanz

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    JSON-Text anfordern:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Wenn Sie einen anderen Nutzer für den Import verwenden möchten, geben Sie das Attribut importContext.importUser an.

    Die vollständige Liste der Parameter für die Anfrage finden Sie auf der Seite instances:insert.
  6. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese jetzt.

REST v1beta4

  1. Erstellen Sie eine SQL-Dumpdatei. In der verknüpften Anleitung werden bestimmte Flags festgelegt, durch die die Dumpdatei mit Cloud SQL kompatibel wird.

    • Wenn Sie Daten von einem lokalen PostgreSQL-Server importieren:
      1. Erstellen Sie eine SQL-Dumpdatei anhand der Anleitung unter Daten mit pg_dump exportieren.
      2. Erstellen Sie einen Bucket in Cloud Storage. Folgen Sie dazu der Anleitung unter Buckets erstellen.
      3. Laden Sie die SQL-Dumpdatei in den Cloud Storage-Bucket hoch. Gehen Sie dabei wie unter Objekte hochladen beschrieben vor.
  2. Erstellen Sie einen Cloud Storage-Bucket.
  3. Laden Sie die Datei in den Bucket hoch.

    Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.

  4. Weisen Sie Ihrer Instanz die IAM-Rolle storage.objectAdmin für Ihren Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  5. Importieren Sie die Dumpdatei:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID
    • bucket_name: der Name des Cloud Storage-Buckets
    • path_to_sql_file: der Pfad zur SQL-Datei
    • database_name: der Name einer Datenbank in der Cloud SQL-Instanz

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    JSON-Text anfordern:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Wenn Sie einen anderen Nutzer für den Import verwenden möchten, geben Sie das Attribut importContext.importUser an.

    Die vollständige Liste der Parameter für die Anfrage finden Sie auf der Seite instances:insert.
  6. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese jetzt.

Nächste Schritte