Dateien parallel exportieren und importieren

Auf dieser Seite wird gezeigt, wie Sie Dateien parallel in Cloud SQL-Instanzen exportieren und importieren.

Hinweise

Für einen Export- oder Importvorgang ist Folgendes zu beachten:

  • Sorgen Sie dafür, dass in Ihrer Datenbank ausreichend freier Speicherplatz vorhanden ist.
  • Export- und Importvorgänge verwenden Datenbankressourcen, stören typische Datenbankvorgänge jedoch nicht, wenn die Instanz nicht unterdimensioniert ist.

  • Beachten Sie die Best Practices zum Exportieren und Importieren von Daten.
  • Prüfen Sie die Ergebnisse nach Abschluss eines Importvorgangs.

Daten parallel aus Cloud SQL for PostgreSQL in mehrere Dateien exportieren

Die folgenden Abschnitte enthalten Informationen zum parallelen Exportieren von Daten aus Cloud SQL for PostgreSQL in mehrere Dateien.

Erforderliche Rollen und Berechtigungen für den parallelen Export von Daten aus Cloud SQL for PostgreSQL in mehrere Dateien

Zum Exportieren von Daten aus Cloud SQL in Cloud Storage 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 den parallelen Export von Dateien)
    • storage.objects.delete (nur für den parallelen Export von Dateien)

Informationen zu IAM-Rollen finden Sie unter Identitäts- und Zugriffsverwaltung.

Daten parallel in mehrere Dateien exportieren

Sie können Daten parallel aus mehreren in Cloud SQL gespeicherten Dateien in Cloud Storage exportieren. Verwenden Sie dazu das Dienstprogramm pg_dump mit der Option --jobs.

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

gcloud

Führen Sie die folgenden Schritte aus, um Daten aus Cloud SQL parallel in mehrere Dateien zu exportieren:

  1. Cloud Storage-Bucket erstellen.
  2. Verwenden Sie den Befehl
    gcloud sql instances describe, um das Dienstkonto für die Cloud SQL-Instanz zu ermitteln, aus der Sie Dateien exportieren.
    gcloud sql instances describe INSTANCE_NAME
    
  3. Ersetzen Sie dabei INSTANCE_NAME durch den Namen Ihrer Cloud SQL-Instanz.

    Suchen Sie in der Ausgabe nach dem Wert, der dem Feld serviceAccountEmailAddress zugeordnet ist.

  4. Verwenden Sie das Dienstprogramm gsutil iam, um dem Dienstkonto die IAM-Rolle storage.objectAdmin zuzuweisen. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  5. Verwenden Sie den Befehl gcloud sql export sql, um Daten aus Cloud SQL parallel in mehrere Dateien zu exportieren:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \
    --offload \
    --parallel \
    --threads=THREAD_NUMBER \
    --database=DATABASE_NAME \
    --table=TABLE_EXPRESSION
    

    Ersetzen Sie die folgenden Werte:

    • INSTANCE_NAME: der Name der Cloud SQL-Instanz, aus der Sie Dateien parallel exportieren.
    • BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
    • BUCKET_PATH: der Pfad zum Bucket, in dem die Exportdateien gespeichert sind.
    • FOLDER_NAME: der Ordner, in dem die Exportdateien gespeichert sind.
    • THREAD_NUMBER: Die Anzahl der Threads, die Cloud SQL zum parallelen Exportieren von Dateien verwendet. Wenn Sie beispielsweise drei Dateien gleichzeitig exportieren möchten, geben Sie 3 als Wert für diesen Parameter an.
    • DATABASE_NAME: der Name der Datenbank in der Cloud SQL-Instanz, aus der der Export ausgeführt wird. Sie dürfen nur eine Datenbank angeben.
    • TABLE_EXPRESSION: die Tabellen, die aus der angegebenen Datenbank exportiert werden sollen.

    Mit dem Befehl export sql werden zwar Ansichten exportiert, jedoch keine Trigger oder gespeicherten Prozeduren. Verwenden Sie zum Exportieren von Triggern oder gespeicherten Prozeduren einen einzelnen Thread für den Export. In diesem Thread wird das pg_dump-Tool verwendet.

    Nach Abschluss des Exports sollten Sie Dateien in einem Ordner im Cloud Storage-Bucket im Verzeichnisformat pg_dump haben.

  6. Wenn Sie die IAM-Rolle, die Sie unter Erforderliche Rollen und Berechtigungen für den Export aus Cloud SQL for PostgreSQL festgelegt haben, nicht benötigen, revoke Sie sie.

REST Version 1

Führen Sie die folgenden Schritte aus, um Daten aus Cloud SQL parallel in mehrere Dateien zu exportieren:

  1. Erstellen Sie einen Cloud Storage-Bucket:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Ersetzen Sie die folgenden Werte:
    • PROJECT_NAME: der Name des Google Cloud-Projekts, das den von Ihnen erstellten Cloud Storage-Bucket enthält.
    • LOCATION_NAME ist der Speicherort des Buckets, in dem Sie die zu exportierenden Dateien speichern möchten. Beispiel: us-east1.
    • BUCKET_NAME: der Name des Buckets. Beachten Sie dabei die Benennungsanforderungen. Beispiel: my-bucket
  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 Daten parallel aus Cloud SQL in mehrere Dateien:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_NAME: der Name des Google Cloud-Projekts, das den von Ihnen erstellten Cloud Storage-Bucket enthält.
    • INSTANCE_NAME: der Name der Cloud SQL-Instanz, aus der Sie Dateien parallel exportieren.
    • BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
    • BUCKET_PATH: der Pfad zum Bucket, in dem die Exportdateien gespeichert sind.
    • FOLDER_NAME: der Ordner, in dem die Exportdateien gespeichert sind.
    • DATABASE_NAME: der Name der Datenbank in der Cloud SQL-Instanz, aus der der Export ausgeführt wird. Sie dürfen nur eine Datenbank angeben.
    • THREAD_NUMBER: Die Anzahl der Threads, die Cloud SQL zum parallelen Exportieren von Dateien verwendet. Wenn Sie beispielsweise drei Dateien gleichzeitig exportieren möchten, geben Sie 3 als Wert für diesen Parameter an.

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

    JSON-Text anfordern:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlExportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Nach Abschluss des Exports sollten Sie Dateien in einem Ordner im Cloud Storage-Bucket im Verzeichnisformat pg_dump haben.

  5. Wenn Sie die IAM-Rolle, die Sie unter Erforderliche Rollen und Berechtigungen für den Export aus Cloud SQL for PostgreSQL festgelegt haben, nicht benötigen, revoke Sie sie.
Die vollständige Liste der Parameter für die Anfrage finden Sie auf der Seite Cloud SQL Admin API.

REST v1beta4

Führen Sie die folgenden Schritte aus, um Daten aus Cloud SQL parallel in mehrere Dateien zu exportieren:

  1. Erstellen Sie einen Cloud Storage-Bucket:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Ersetzen Sie die folgenden Werte:
    • PROJECT_NAME: der Name des Google Cloud-Projekts, das den von Ihnen erstellten Cloud Storage-Bucket enthält.
    • LOCATION_NAME ist der Speicherort des Buckets, in dem Sie die zu exportierenden Dateien speichern möchten. Beispiel: us-east1.
    • BUCKET_NAME: der Name des Buckets. Beachten Sie dabei die Benennungsanforderungen. Beispiel: my-bucket
  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 Daten parallel aus Cloud SQL in mehrere Dateien:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_NAME: der Name des Google Cloud-Projekts, das den von Ihnen erstellten Cloud Storage-Bucket enthält.
    • INSTANCE_NAME: der Name der Cloud SQL-Instanz, aus der Sie Dateien parallel exportieren.
    • BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
    • BUCKET_PATH: der Pfad zum Bucket, in dem die Exportdateien gespeichert sind.
    • FOLDER_NAME: der Ordner, in dem die Exportdateien gespeichert sind.
    • DATABASE_NAME: der Name der Datenbank in der Cloud SQL-Instanz, aus der der Export ausgeführt wird. Sie dürfen nur eine Datenbank angeben.
    • THREAD_NUMBER: Die Anzahl der Threads, die Cloud SQL zum parallelen Exportieren von Dateien verwendet. Wenn Sie beispielsweise drei Dateien gleichzeitig exportieren möchten, geben Sie 3 als Wert für diesen Parameter an.

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

    JSON-Text anfordern:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlExportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Nach Abschluss des Exports sollten Sie Dateien in einem Ordner im Cloud Storage-Bucket im Verzeichnisformat pg_dump haben.

  5. Wenn Sie die IAM-Rolle, die Sie unter Erforderliche Rollen und Berechtigungen für den Export aus Cloud SQL for PostgreSQL festgelegt haben, nicht benötigen, revoke Sie sie.
Die vollständige Liste der Parameter für die Anfrage finden Sie auf der Seite Cloud SQL Admin API.

Daten aus mehreren Dateien parallel in Cloud SQL for PostgreSQL importieren

Die folgenden Abschnitte enthalten Informationen zum parallelen Importieren von Daten aus mehreren Dateien in Cloud SQL for PostgreSQL.

Erforderliche Rollen und Berechtigungen für den parallelen Import von Daten aus mehreren Dateien in Cloud SQL for PostgreSQL

Zum Importieren von Daten aus Cloud Storage in Cloud SQL 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 Identitäts- und Zugriffsverwaltung.

Daten in Cloud SQL for PostgreSQL importieren

Sie können Daten parallel aus mehreren Dateien in Cloud Storage in Ihre Datenbank importieren. Verwenden Sie dazu das Dienstprogramm pg_restore mit der Option --jobs.

gcloud

Führen Sie die folgenden Schritte aus, um Daten aus mehreren Dateien parallel in Cloud SQL zu importieren:

  1. Cloud Storage-Bucket erstellen
  2. Laden Sie die Dateien in den Bucket hoch.

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

  3. Verwenden Sie den Befehl
    gcloud sql instances describe, um das Dienstkonto für die Cloud SQL-Instanz zu ermitteln, in die Sie Dateien importieren.
    gcloud sql instances describe INSTANCE_NAME
    
  4. Ersetzen Sie dabei INSTANCE_NAME durch den Namen Ihrer Cloud SQL-Instanz.

    Suchen Sie in der Ausgabe nach dem Wert, der dem Feld serviceAccountEmailAddress zugeordnet ist.

  5. Verwenden Sie das Dienstprogramm gsutil iam, um dem Dienstkonto die IAM-Rolle storage.objectAdmin zuzuweisen. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  6. Verwenden Sie den Befehl gcloud sql import sql, um Daten aus mehreren Dateien parallel in Cloud SQL zu importieren:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \
    --offload \
    --parallel \
    --threads=THREAD_NUMBER \
    --database=DATABASE_NAME
    

    Ersetzen Sie die folgenden Werte:

    • INSTANCE_NAME: der Name der Cloud SQL-Instanz, in die Sie Dateien parallel importieren.
    • BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
    • BUCKET_PATH: der Pfad zum Bucket, in dem die Importdateien gespeichert sind.
    • FOLDER_NAME: Der Ordner, in dem die Importdateien gespeichert sind.
    • THREAD_NUMBER: Die Anzahl der Threads, die Cloud SQL zum parallelen Importieren von Dateien verwendet. Wenn Sie beispielsweise drei Dateien parallel importieren möchten, geben Sie 3 als Wert für diesen Parameter an.
    • DATABASE_NAME: der Name der Datenbank in der Cloud SQL-Instanz, aus der der Import erfolgt. Sie dürfen nur eine Datenbank angeben.

    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 IAM-Berechtigungen, die Sie unter Erforderliche Rollen und Berechtigungen für den Import in Cloud SQL for PostgreSQL festgelegt haben, nicht benötigen, verwenden Sie gsutil iam, um sie zu entfernen.

REST Version 1

Führen Sie die folgenden Schritte aus, um Daten aus mehreren Dateien parallel in Cloud SQL zu importieren:

  1. Erstellen Sie einen Cloud Storage-Bucket:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Ersetzen Sie die folgenden Werte:
    • PROJECT_NAME: der Name des Google Cloud-Projekts, das den von Ihnen erstellten Cloud Storage-Bucket enthält.
    • LOCATION_NAME: Der Speicherort des Buckets, in dem Sie die zu importierenden Dateien speichern möchten. Beispiel: us-east1.
    • BUCKET_NAME: der Name des Buckets. Beachten Sie dabei die Benennungsanforderungen. Beispiel: my-bucket
  2. Laden Sie die Dateien in den Bucket hoch.

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

  3. 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.
  4. Importieren Sie Daten aus mehreren Dateien parallel in Cloud SQL:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_NAME: der Name des Google Cloud-Projekts, das den von Ihnen erstellten Cloud Storage-Bucket enthält.
    • INSTANCE_NAME: der Name der Cloud SQL-Instanz, in die Sie Dateien parallel importieren.
    • BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
    • BUCKET_PATH: der Pfad zum Bucket, in dem die Importdateien gespeichert sind.
    • FOLDER_NAME: Der Ordner, in dem die Importdateien gespeichert sind.
    • DATABASE_NAME: der Name der Datenbank in der Cloud SQL-Instanz, aus der der Import erfolgt. Sie dürfen nur eine Datenbank angeben.
    • THREAD_NUMBER: Die Anzahl der Threads, die Cloud SQL zum parallelen Importieren von Dateien verwendet. Wenn Sie beispielsweise drei Dateien parallel importieren möchten, geben Sie 3 als Wert für diesen Parameter an.

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

    JSON-Text anfordern:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlImportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    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 Cloud SQL Admin API.
  5. Wenn Sie die IAM-Berechtigungen, die Sie unter Erforderliche Rollen und Berechtigungen für den Import in Cloud SQL for PostgreSQL festgelegt haben, nicht benötigen, verwenden Sie gsutil iam, um sie zu entfernen.

REST v1beta4

Führen Sie die folgenden Schritte aus, um Daten aus mehreren Dateien parallel in Cloud SQL zu importieren:

  1. Erstellen Sie einen Cloud Storage-Bucket:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Ersetzen Sie die folgenden Werte:
    • PROJECT_NAME: der Name des Google Cloud-Projekts, das den von Ihnen erstellten Cloud Storage-Bucket enthält.
    • LOCATION_NAME: Der Speicherort des Buckets, in dem Sie die zu importierenden Dateien speichern möchten. Beispiel: us-east1.
    • BUCKET_NAME: der Name des Buckets. Beachten Sie dabei die Benennungsanforderungen. Beispiel: my-bucket
  2. Laden Sie die Dateien in den Bucket hoch.

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

  3. 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.
  4. Importieren Sie Daten aus mehreren Dateien parallel in Cloud SQL:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_NAME: der Name des Google Cloud-Projekts, das den von Ihnen erstellten Cloud Storage-Bucket enthält.
    • INSTANCE_NAME: der Name der Cloud SQL-Instanz, von der Sie Dateien parallel importieren.
    • BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
    • BUCKET_PATH: der Pfad zum Bucket, in dem die Importdateien gespeichert sind.
    • FOLDER_NAME: Der Ordner, in dem die Importdateien gespeichert sind.
    • DATABASE_NAME: der Name der Datenbank in der Cloud SQL-Instanz, aus der der Import erfolgt. Sie dürfen nur eine Datenbank angeben.
    • THREAD_NUMBER: Die Anzahl der Threads, die Cloud SQL zum parallelen Importieren von Dateien verwendet. Wenn Sie beispielsweise drei Dateien parallel importieren möchten, geben Sie 3 als Wert für diesen Parameter an.

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

    JSON-Text anfordern:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlImportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    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 Cloud SQL Admin API.
  5. Wenn Sie die IAM-Berechtigungen, die Sie unter Erforderliche Rollen und Berechtigungen für den Import in Cloud SQL for PostgreSQL festgelegt haben, nicht benötigen, verwenden Sie gsutil iam, um sie zu entfernen.

Beschränkungen

  • Wenn Sie beim parallelen Importieren oder Exportieren von Daten aus mehreren Dateien zu viele Threads angeben, kann dies mehr Arbeitsspeicher nutzen als Ihre Cloud SQL-Instanz hat. In diesem Fall wird eine interne Fehlermeldung angezeigt. Prüfen Sie die Speichernutzung der Instanz und erhöhen Sie nach Bedarf die Größe der Instanz. Weitere Informationen finden Sie unter Informationen zu Instanzeinstellungen.
  • Beim Export werden Kommas in Datenbanknamen oder Tabellennamen in den Feldern databases oder tables nicht unterstützt.
  • Achten Sie darauf, dass genügend Speicherplatz für den ersten Download der Dumpdatei vorhanden ist. Andernfalls wird der Fehler no space left on disk angezeigt.
  • Wenn Ihre Instanz nur eine virtuelle CPU (vCPU) hat, können Sie nicht mehrere Dateien parallel importieren oder exportieren. Die Anzahl der vCPUs für Ihre Instanz darf nicht kleiner sein als die Anzahl der Threads, die Sie für den Import- oder Exportvorgang verwenden. Die Anzahl der Threads muss mindestens zwei sein.
  • Das Dienstprogramm pg_dump kann keine Tabellen aufteilen, die Sie exportieren. Wenn Sie also eine sehr große Tabelle haben, kann sie zu einem Engpass für die Geschwindigkeit des Exportvorgangs werden.

Nächste Schritte