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 MySQL exportieren

Erforderliche Rollen und Berechtigungen für Exporte aus Cloud SQL for MySQL

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 aus Cloud SQL for MySQL in eine SQL-Dumpdatei exportieren

Zum Erstellen einer SQL-Dumpdatei exportieren Sie Daten aus Cloud SQL nach Cloud Storage. Sobald sich die Datei in Cloud Storage befindet, können Sie sie in eine andere Cloud SQL-Datenbank importieren. Sie können auch Daten aus Cloud Storage in Ihre lokale Umgebung herunterladen, wenn Sie lokal darauf zugreifen möchten.

Beim Export aus Cloud SQL wird das mysqldump-Dienstprogramm mit den Optionen --single-transaction und --hex-blob verwendet. Mit der Option --single-transaction startet mysqldump eine Transaktion vor der Ausführung. Anstatt die gesamte Datenbank zu sperren, kann mysqldump die Datenbank im aktuellen Zustand lesen und sorgt so für einen konsistenten Datendump.

Wenn Ihre SQL-Dumpdatei DEFINER-Klauseln (Ansichten, Trigger, stored_procedures usw.) enthält, dann könnte die Verwendung dieser Datei für den Import je nach Reihenfolge der Ausführung dieser Anweisungen fehlschlagen. Weitere Informationen über die Verwendung von DEFINER und mögliche Workarounds in Cloud SQL

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. Klicken Sie im Abschnitt Zu exportierende Daten auf Eine oder mehrere Datenbanken in dieser Instanz, um bestimmte Datenbanken zu exportieren.
  6. Wählen Sie im Drop-down-Menü die Datenbanken aus, aus denen exportiert werden soll.
  7. Wählen Sie im Bereich Ziel die Option Durchsuchen aus, um nach einem Cloud Storage-Bucket oder -Ordner für den Export zu suchen.
  8. 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 gsutil iam 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 mysqldump, 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 v1

  1. Erstellen Sie einen Bucket für den Export:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_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
    • offload: aktiviert den serverlosen Export. Legen Sie true fest, um den serverlosen Export zu verwenden.

    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
        }
    }
    

    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:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_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
    • offload: aktiviert den serverlosen Export. Legen Sie true fest, um den serverlosen Export zu verwenden.

    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
        }
    }
    

    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.

Mit mysqldump von Ihrem lokalen MySQL-Server exportieren

Wenn Sie Daten aus einer lokalen MySQL-Datenbank für den Import in eine Cloud SQL-Datenbank exportieren möchten, müssen Sie das Dienstprogramm mysqldump mit den folgenden Flags verwenden:

  • --databases Mit der Option --databases geben Sie eine explizite Liste der Datenbanken an, die exportiert werden sollen. Diese Liste darf nicht die Systemdatenbank mysql enthalten.
  • --hex-blob Enthält die Datenbank Binärfelder, gewährleistet dieses Flag, dass die Binärfelder ordnungsgemäß importiert werden.
  • --set-gtid-purged=OFF Die SQL-Dumpdatei darf weder GTID-Informationen enthalten noch das binäre Logging deaktivieren. Dieses Flag ist für MySQL 5.5 oder für eine externe Replikation nicht erforderlich.
  • --single-transaction Startet eine Transaktion vor der Ausführung. Anstatt die gesamte Datenbank zu sperren, kann mysqldump die Datenbank im aktuellen Zustand lesen und so eine konsistente Daten-Dumpdatei erzeugen.

Führen Sie über die Befehlszeile mysqldump aus:

mysqldump --databases DATABASE_NAME -h INSTANCE_IP -u USERNAME -p \
--hex-blob --single-transaction --set-gtid-purged=OFF \
--default-character-set=utf8mb4 > SQL_FILE.sql

Hilfe zu mysqldump finden Sie in der mysqldump-Referenz.

Externe Replikation in Cloud SQL for MySQL

Weitere Informationen zur Erstellung einer Dumpdatei für die Verwendung in einer externen Serverkonfiguration finden Sie unter Von externem Server replizieren.

Daten in Cloud SQL for MySQL importieren

Erforderliche Rollen und Berechtigungen für den Import in Cloud SQL for MySQL

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.

SQL-Dumpdatei in Cloud SQL for MySQL 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 gsutil iam die IAM-Rolle storage.objectAdmin dem Dienstkonto für den Bucket zu.
    gsutil iam ch serviceAccount:SERVICE-ACCOUNT:objectAdmin \
    gs://BUCKET_NAME
      
    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 gsutil iam.

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.

  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:

    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.

  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:

    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