Mithilfe von BAK-Dateien und Transaktionsprotokolldateien exportieren und importieren

Auf dieser Seite wird gezeigt, wie Sie Daten mithilfe von BAK-Dateien in Cloud SQL-Instanzen ex- und importieren und wie Sie Daten über Transaktionslogdateien in Cloud SQL-Instanzen importiert.

Hinweis

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 SQL Server exportieren

Cloud SQL unterstützt den Export integrierter BAK-Dateien.

Wenn Sie eine neue Instanz aus einer exportierten Datei erstellen möchten, sollten Sie eine Sicherung in einer anderen Instanz wiederherstellen oder die Instanz klonen.

Cloud SQL führt während des Exports eine vollständige Sicherung der ausgewählten Datenbank aus.

Erforderliche Rollen und Berechtigungen für den Export von Cloud SQL for SQL Server

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 Rolle storage.objectAdmin für die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM)
  • Eine
      benutzerdefinierte Rolle mit folgenden Berechtigungen:
    • storage.objects.create
    • storage.objects.list (nur für Stripe-Export)
    • storage.objects.delete (nur für Stripe-Export)
    • storage.buckets.getIamPolicy (nur für den Export von Transaktionsprotokollen)
    • storage.buckets.setIamPolicy (nur für den Export von Transaktionsprotokollen)

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

Daten aus Cloud SQL for SQL Server in eine BAK-Datei exportieren

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 BAK.
  5. Wählen Sie im Drop-down-Menü im Abschnitt 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:
    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \
    --database=DATABASE_NAME
      

    Informationen zum Verwenden des Befehls gcloud sql export bak finden Sie auf der Referenzseite des Befehls.

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

REST Version 1

  1. Cloud Storage-Bucket für den Export erstellen.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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:

    
    

    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 die Anfrage finden Sie auf der Seite instances:export.

REST v1beta4

  1. Cloud Storage-Bucket für den Export erstellen.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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:

    
    

    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 die Anfrage finden Sie auf der Seite instances:export.

Differenzielle Datenbanksicherungen exportieren

Bevor Sie eine differenzielle Datenbanksicherung exportieren, müssen Sie eine differenzielle Basis exportieren.

Wenn andere Dienste oder Features wie die Wiederherstellung zu einem bestimmten Zeitpunkt und Lesereplikate eine vollständige Sicherung zwischen dem vollständigen Sicherungsexport und dem differenziellen Sicherungsexport auslösen, müssen Sie den vollständigen Sicherungsexport noch einmal auslösen.

Das folgende Beispiel verdeutlicht dies:

  1. Sie fragen um 7:00 Uhr morgens eine vollständige Sicherung an.
  2. Sie aktivieren die Wiederherstellung zu einem bestimmten Zeitpunkt um 9:00 Uhr. Dadurch wird eine vollständige Sicherung Ihrer Instanz ausgelöst.
  3. Sie versuchen um 17:00 Uhr eine differenzielle Sicherung durchzuführen. Diese Exportanfrage schlägt mit einer Fehlermeldung fehl, da die letzte vollständige Sicherung durch die Wiederherstellung eines bestimmten Zeitpunkts ausgelöst wurde.

Cloud SQL unterstützt keine Datenbankexportanfragen mit --differential-base oder --bak-type=DIFF auf Replikationsinstanzen.

gcloud

  1. Einen 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 als differenzielle Basis.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --differential-base

    Informationen zum Verwenden des Befehls gcloud sql export bak finden Sie auf der Referenzseite des Befehls.

  5. Exportieren Sie eine differenzielle Sicherung.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF
      

    Informationen zum Verwenden des Befehls gcloud sql export bak finden Sie auf der Referenzseite des Befehls.

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

REST Version 1

  1. Cloud Storage-Bucket für den Export erstellen.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 Ihr vollständiges Datenbank-Backup als differenzielle Basis.

    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_BAK_FILE: Pfad zur SQL-BAK-Datei
    • DATABASE_NAME: der Name der Datenbank in der Cloud SQL-Instanz
    • offload: Wenn Sie den serverlosen Export aktivieren und verwenden möchten, setzen Sie diesen Wert auf TRUE.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "databases": ["DATABASE_NAME"]
          "offload": TRUE | FALSE
          "bakExportOptions": {
            "differentialBase":true
          }
       }
    }
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Exportieren Sie eine differenzielle Sicherung.

    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 der Anfrage:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
          "offload": true | false
          "bakExportOptions": {
            bakType:"DIFF"
          }
    
        }
    }
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

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

REST v1beta4

  1. Cloud Storage-Bucket für den Export erstellen.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 Ihr vollständiges Datenbank-Backup als differenzielle Basis.

    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: Wenn Sie den serverlosen Export aktivieren und verwenden möchten, setzen Sie den Wert auf true.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    {
      "exportContext":
        {
           "fileType": "BAK",
           "uri": "gs://bucket_name/path_to_dump_file",
           "databases": ["database_name"]
           "offload": true | false
           "bakExportOptions": {
             "differentialBase":true
           }
    
         }
    }
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. So exportieren Sie eine differenzielle Sicherung:

    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: Wenn Sie serverlosen Export aktivieren und verwenden möchten, setzen Sie diesen Wert auf true.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    {
      "exportContext":
        {
           "fileType": "BAK",
           "uri": "gs://bucket_name/path_to_dump_file",
           "databases": ["database_name"]
           "offload": true | false
           "bakExportOptions": {
            bakType:"DIFF"
           }
    
         }
    }
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

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

Transaktionslogs exportieren

Sie können die Transaktionslogs für Cloud SQL Enterprise Plus-Instanzen exportieren, für die die Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time-Recovery, PITR) aktiviert ist und deren Logs in Cloud Storage gespeichert werden.

gcloud

  1. Cloud Storage-Bucket für den Export erstellen.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

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

  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 verwenden. 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.Admin dem Dienstkonto zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Richtlinien für Bucket festlegen und verwalten.
  4. Exportieren Sie die Transaktionsprotokolle.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_PATH
    --export-log-start-time=START_DATE_AND_TIME /
    --export-log-end-time=END_DATE_AND_TIME /
    --database=DATABASE_NAME --bak-type=TLOG
      

    Informationen zum Verwenden des Befehls gcloud sql export bak finden Sie auf der Referenzseite des Befehls.

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

REST

  1. Einen Cloud Storage-Bucket erstellen

    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.Admin für Ihren Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Richtlinien für Bucket festlegen und verwalten.
  3. Exportieren Sie die Transaktionsprotokolle.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: Projekt-ID.
    • INSTANCE_ID: Instanz-ID.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • FOLDER_PATH: der Pfad zum Ordner im Cloud Storage-Bucket. Cloud SQL exportiert die Transaktionsprotokolle in diesen Ordner.
    • DATABASE_NAME: Name der Datenbank in der Cloud SQL-Instanz.
    • exportLogStartTime: Das Startdatum und die Startzeit der zu exportierenden Transaktionsprotokolle.
    • exportLogEndTime: Das Enddatum und die Endzeit der zu exportierenden Transaktionslogs.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/FOLDER_PATH",
          "databases": ["DATABASE_NAME"]
          "bakExportOptions": {
            bakType:"TLOG"
            exportLogStartTime: START_DATE_AND_TIME
            exportLogEndTime: END_DATE_AND_TIME
          }
       }
    }
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand Content

    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 die Anfrage finden Sie auf der Seite instances.export.

Stripe-Export verwenden

Vorteile des Stripe-Exports:

  • Geringerer Zeitaufwand für den Abschluss von Vorgängen
  • Datenbanken mit mehr als 5 TB können exportiert werden

Ein potenzieller Nachteil des Stripe-Exports besteht darin, dass die Sicherung nicht aus einer Datei besteht, sondern aus mehreren Dateien besteht. Dieses Set wird als "Stripeset" bezeichnet; Siehe Geräte in einem Stripesetmedium (Stripeset) sichern. In Cloud SQL exportieren Sie die Daten in einen leeren Ordner in Cloud Storage, anstatt eine einzelne Datei zu generieren. Weitere Informationen finden Sie unter Stripe-Export verwenden.

Abläufe planen

Ein Stripe-Export kann die Leistung von Exporten verbessern. Wenn Ihr Anwendungsfall jedoch eine einzelne Ausgabedatei erfordert oder Ihre Datenbank weniger als 5 TB groß ist und eine schnellere Leistung nicht kritisch ist, sollten Sie einen Nicht-Stripe-Export verwenden.

Wenn Sie sich für einen Stripe-Export entscheiden, berücksichtigen Sie die Anzahl der Stripes. Sie können diesen Wert im gcloud CLI-Befehl oder im REST API-Aufruf angeben. Wenn Sie jedoch eine optimale Anzahl von Stripes für die Leistung wünschen oder eine Zahl nicht kennen, lassen Sie die Zahl weg. Eine optimale Anzahl von Stripes wird automatisch festgelegt.

Derzeit werden von Cloud SQL for SQL Server 64 Stripes unterstützt.

Stripe-Export verwenden

gcloud

  1. Einen Cloud Storage-Bucket erstellen
  2. Suchen Sie das Dienstkonto für die Cloud SQL-Instanz, aus der Sie exportieren. Führen Sie dazu den Befehl gcloud sql instances describe aus. 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. Zum Exportieren der Datenbank geben Sie den Parameter --striped und/oder einen Wert für --stripe_count an. Das Festlegen eines Werts für --stripe_count impliziert, dass der Parameter --striped beabsichtigt ist. Wenn Sie --no-striped angeben, aber einen Wert für --stripe_count angeben, tritt ein Fehler auf:
    gcloud beta sql export bak INSTANCE_NAME \
    gs://BUCKET_NAME/STRIPED_EXPORT_FOLDER \
    --database=DATABASE_NAME --striped --stripe_count=NUMBER
      

    Informationen zum Verwenden des Befehls gcloud beta sql export bak finden Sie auf der Referenzseite des Befehls.

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

REST Version 1

  1. Cloud Storage-Bucket für den Export erstellen.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 dabei folgende Werte für die Anfragedaten

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID
    • bucket_name: der Name des Cloud Storage-Buckets
    • path_to_folder: Der Pfad zum Ordner (im Cloud Storage-Bucket), in den der Stripeset exportiert werden soll.
    • database_name: der Name einer Datenbank in Ihrer Cloud SQL-Instanz
    • true | false: Legen Sie true fest, um Stripe-Export zu verwenden. Wenn Sie true keine Stripe-Anzahl angeben, wird automatisch eine optimale Anzahl von Stripes festgelegt.
    • number_of_stripes: die Anzahl der zu verwendenden Stripes Wenn angegeben, wird striped als true impliziert

    HTTP-Methode und URL:

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

    JSON-Text anfordern:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

    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 die Anfrage finden Sie auf der Seite instances:export.

REST v1beta4

  1. Cloud Storage-Bucket für den Export erstellen.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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 dabei folgende Werte für die Anfragedaten

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID
    • bucket_name: der Name des Cloud Storage-Buckets
    • path_to_folder: der Pfad zum Ordner (im Cloud Storage-Bucket), in den der Stripe-Satz exportiert werden soll
    • database_name: der Name einer Datenbank in Ihrer Cloud SQL-Instanz
    • true | false: Legen Sie true fest, um Stripe-Export zu verwenden. Wenn Sie true keine Stripe-Anzahl angeben, wird automatisch eine optimale Anzahl von Stripes festgelegt.
    • number_of_stripes: die Anzahl der zu verwendenden Stripes Wenn angegeben, wird striped als true impliziert

    HTTP-Methode und URL:

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

    JSON-Text anfordern:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

    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 die Anfrage finden Sie auf der Seite instances:export.

In Cloud SQL for SQL Server importieren

Erforderliche Rollen und Berechtigungen für Importe in Cloud SQL for SQL Server

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 Stripe-Import)

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

Daten aus einer BAK-Datei in Cloud SQL for SQL Server importieren

Weitere Informationen zum Stripe-Import finden Sie unter Stripe-Import verwenden.

Es stehen verschiedene Import-Frameworks zur Verfügung. Cloud SQL for SQL Server unterstützt beispielsweise Change Data Capture (CDC) für die folgenden Datenbankversionen:

  • SQL Server 2017 Standard
  • SQL Server 2017 Enterprise
  • SQL Server 2019 Standard
  • SQL Server 2019 Enterprise

Beim Importieren einer CDC-fähigen Datenbank wird das Flag KEEP_CDC beibehalten.

Mit der Instanzversion Microsoft SQL Server Enterprise Edition können Sie verschlüsselte BAK-Dateien importieren.

In Microsoft SQL Server Standard Edition-Instanzen können ebenfalls verschlüsselte BAK-Dateien importiert werden, jedoch nur über die gcloud CLI.

Die einzigen unterstützten BAK-Endungen sind .bak und .bak.gz. GPG-verschlüsselte Sicherungen werden derzeit nicht unterstützt.

Für die folgende Anleitung müssen Sie eine neue Datenbank angeben. Erstellen Sie vor dem Import der BAK-Datei noch keine Datenbank.

So importieren Sie Daten mithilfe einer BAK-Datei in eine Cloud SQL-Instanz:

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 Feld Datei auswählen, aus der importiert werden soll den Pfad zum Bucket und zur BAK-Datei für den Import ein.

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

  5. Wählen Sie im Bereich Dateiformat die Option BAK aus.

  6. Geben Sie im Bereich Ziel die Datenbank in Ihrer Cloud SQL-Instanz an, in die Sie die BAK-Datei importieren möchten.
  7. Klicken Sie auf Importieren, um den Import zu starten.

gcloud

  1. Erstellen Sie ein Cloud Storage-Bucket für den Import.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

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

  2. Prüfen Sie, ob die erforderlichen Rollen und Berechtigungen konfiguriert sind.
  3. Führen Sie ein Upload der Daten aus der BAK-Datei in den Bucket aus.
  4. Beschreiben Sie die Instanz, in die Sie Daten importieren:
    gcloud sql instances describe INSTANCE_NAME
  5. Kopieren Sie das Feld serviceAccountEmailAddress.
  6. Weisen Sie mit gcloud storage buckets add-iam-policy-binding die IAM-Rolle storage.objectViewer dem Dienstkonto für den Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  7. Importieren Sie die Daten aus der Datei:
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME
    Verwenden Sie für verschlüsselte Importe den folgenden Befehl:
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME
    --database=DATABASE_NAME --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME
     --pvk-path=gs://BUCKET_NAME/KEY_NAME --prompt-for-pvk-password
  8. 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 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. 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 die Daten aus der Datei:

    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_bak_file: der Pfad zur BAK-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": "BAK",
          "uri": "gs://bucket_name/path_to_bak_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.
  5. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

REST v1beta4

  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. 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 die Daten aus der Datei:

    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_bak_file: der Pfad zur BAK-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": "BAK",
          "uri": "gs://bucket_name/path_to_bak_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.
  5. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

Wenn ein Fehler wie z. B. ERROR_RDBMS angezeigt wird, prüfen Sie, ob die BAK-Datei im Bucket vorhanden ist und Sie die richtigen Berechtigungen für den Bucket haben. Hilfe zum Konfigurieren der Zugriffssteuerung in Cloud Storage finden Sie unter Access Control Lists (ACLs) erstellen und verwalten.

Differenzielle Datenbanksicherungen importieren

Bevor Sie eine differenzielle Datenbanksicherung importieren, müssen Sie ein vollständiges Backup importieren. Ihre Datenbank muss nach dem Import des vollständigen Backups den Status RESTORING haben.

Cloud SQL unterstützt nicht den Import differenzieller Datenbanksicherungen auf Instanzen, für die die Wiederherstellung zu einem bestimmten Zeitpunkt aktiviert ist. Dies liegt daran, dass das Importieren einer Datenbanksicherung mit --no-recovery eine Voraussetzung für den Import von differenziellen Datenbanksicherungen ist. Außerdem können Sie die Wiederherstellung zu einem bestimmten Zeitpunkt für eine Instanz nicht aktivieren, wenn sich die Datenbank im Status RESTORING befindet. Führen Sie im Fall eines Importfehlers einen der folgenden Schritte aus, um die Wiederherstellung zu einem bestimmten Zeitpunkt zu aktivieren:

  • Stellen Sie die Datenbank, die sich im Status RESTORING befindet, mit dem Flag --recovery-only online.

  • Entfernen Sie die Datenbank.

Führen Sie folgende Schritte aus, um Daten mithilfe einer differenziellen Datenbanksicherung in eine Cloud SQL-Instanz zu importieren:

gcloud

  1. Erstellen Sie ein Cloud Storage-Bucket für den Import.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

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

  2. Prüfen Sie, ob die erforderlichen Rollen und Berechtigungen konfiguriert sind.
  3. Führen Sie ein Upload der Daten aus der BAK-Datei in den Bucket aus.
  4. Beschreiben Sie die Instanz, in die Sie Daten importieren:
    gcloud sql instances describe INSTANCE_NAME
  5. Kopieren Sie das Feld serviceAccountEmailAddress.
  6. Weisen Sie mit gcloud storage buckets add-iam-policy-binding die IAM-Rolle storage.objectViewer dem Dienstkonto für den Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  7. Importieren Sie ein vollständiges Backup mit --no-recovery.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
  8. Importieren Sie eine differenzielle Datenbanksicherung.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF --no-recovery
  9. Verwenden Sie das --recovery-only-Flag, um die importierte Datenbank online zu stellen. Dieser Schritt ist optional und muss nur ausgeführt werden, wenn sich Ihre Datenbank im Status RESTORING befindet.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
  10. 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 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. 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 ein vollständiges Backup mit noRecovery.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: Projekt-ID.
    • INSTANCE_ID: Instanz-ID.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • PATH_TO_BAK_FILE: Pfad zur BAK-Datei.
    • DATABASE_NAME: 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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
    
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  5. Importieren Sie eine differenzielle Datenbanksicherung.

    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_bak_file: der Pfad zur BAK-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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
          "bakImportOptions": {
            "bakType": "DIFF",
            "noRecovery": true,
          }
    
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  6. Verwenden Sie recoveryOnly, um die importierte Datenbank online zu stellen. Dieser Schritt ist optional und muss nur ausgeführt werden, wenn sich Ihre Datenbank im Status RESTORING befindet.

    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_BAK_FILE: der Pfad zur BAK-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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
    
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  7. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

REST v1beta4

  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. 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 ein vollständiges Backup mitnoRecovery.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE_ID: Instanz-ID.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • PATH_TO_BAK_FILE: Pfad zur BAK-Datei.
    • DATABASE_NAME: 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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  5. Importieren Sie eine differenzielle Datenbanksicherung.

    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_bak_file: der Pfad zur BAK-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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
          "bakImportOptions": {
            "bakType": "DIFF",
            "noRecovery": true,
          }
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  6. Verwenden Sie recoveryOnly, um die importierte Datenbank online zu stellen. Dieser Schritt ist optional und muss nur ausgeführt werden, wenn sich Ihre Datenbank im Status RESTORING befindet.

    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_BAK_FILE: der Pfad zur BAK-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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  7. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

Wenn ein Fehler wie z. B. ERROR_RDBMS angezeigt wird, prüfen Sie, ob die BAK-Datei im Bucket vorhanden ist und Sie die richtigen Berechtigungen für den Bucket haben. Hilfe zum Konfigurieren der Zugriffssteuerung in Cloud Storage finden Sie unter Access Control Lists (ACLs) erstellen und verwalten.

Transaktionslog-Backups importieren

Ein Transaktionslog dokumentiert die Transaktionen einer Datenbank und die von den einzelnen Transaktionen vorgenommenen Änderungen. Sie können sie verwenden, um die Datenbankkonsistenz nach einem Systemausfall wiederherzustellen.

Führen Sie folgende Schritte aus, um Daten mithilfe eines Transaktions-Backups in eine Cloud SQL-Instanz zu importieren:

gcloud

  1. Optional: Erstellen Sie ein Cloud Storage-Bucket für den Import.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
  2. Laden Sie die Backup-Dateien in den Bucket hoch.
  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.objectViewer dem Dienstkonto für den Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  6. Importieren Sie ein vollständiges Backup mit dem Parameter --no-recovery. Prüfen Sie, ob Ihre Datenbank nach dem Import des vollständigen Backups den Status RESTORING hat.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
  7. Optional: Differenzielle Sicherung importieren.
  8. Importieren Sie ein Transaktions-Backup.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=TLOG
    --stop-at=STOP_AT_TIMESTAMP --stop-at-mark=STOP_AT_MARK_NAME
    --no-recovery
    Ersetzen Sie Folgendes:
    • INSTANCE_NAME: der Name der Instanz.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • BACKUP_FILENAME: der Name der Sicherungsdatei.
    • DATABASE_NAME: Name einer Datenbank in der Cloud SQL-Instanz.
    • STOP_AT_TIMESTAMP: Der Zeitstempel, an dem der Import des Transaktionslogs beendet werden muss. Dies ist ein optionales Feld; der Wert muss das RFC 3339-Format nutzen.
    • STOP_AT_MARK_NAME: Die markierte Transaktion, an der der Import des Transaktionslogs beendet werden muss. Dies ist ein optionales Feld; es kann einen beliebigen String als Wert verwenden. Wenn der Wert das Format lsn:log-sequence-number hat, wird der Import des Transaktionslogs bei der angegebenen Logsequenznummer gestoppt.
    Wiederholen Sie diesen Schritt, bis alle Transaktionslog-Backups importiert wurden.
  9. Optional: Verwenden Sie das --recovery-only-Flag, um die importierte Datenbank online zu stellen. Führen Sie diesen Schritt nur aus, wenn sich Ihre Datenbank im Status RESTORING befindet.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
  10. 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 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. 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. Die vollständige Liste der Parameter für die Anfrage finden Sie auf der Seite instances:insert.
  5. Importieren Sie ein vollständiges Backup mit noRecovery. Prüfen Sie, ob Ihre Datenbank nach dem Import des vollständigen Backups den Status RESTORING hat.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: Projekt-ID.
    • INSTANCE_ID: Instanz-ID.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • PATH_TO_BAK_FILE: Pfad zur BAK-Datei.
    • DATABASE_NAME: 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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
    
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  6. Optional: Differenzielle Sicherung importieren.
  7. Importieren Sie ein Transaktions-Backup.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: Projekt-ID.
    • INSTANCE_ID: Instanz-ID.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • PATH_TO_TLOG_FILE: der Pfad zur Transaktionsprotokolldatei.
    • DATABASE_NAME: Name einer Datenbank in der Cloud SQL-Instanz.
    • STOP_AT_TIMESTAMP: Der Zeitstempel, an dem der Import des Transaktionslogs beendet werden muss. Dies ist ein optionales Feld; der Wert muss das RFC 3339-Format nutzen.
    • STOP_AT_MARK_NAME: Die markierte Transaktion, an der der Import des Transaktionslogs beendet werden muss. Dies ist ein optionales Feld; es kann einen beliebigen String als Wert verwenden. Wenn der Wert das Format lsn:log-sequence-number hat, wird der Import des Transaktionslogs bei der angegebenen Logsequenznummer gestoppt.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_TLOG_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "bakType": "TLOG",
            "stopAt": STOP_AT_TIMESTAMP,
            "stopAtMark": STOP_AT_MARK_NAME,
            "noRecovery": true,
          }
    
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Wiederholen Sie diesen Schritt, bis alle Transaktionslog-Sicherungen importiert wurden.
  8. Optional: Verwenden Sie recoveryOnly, um die importierte Datenbank online zu stellen. Führen Sie diesen Schritt nur aus, wenn sich Ihre Datenbank im Status RESTORING befindet.

    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_BAK_FILE: der Pfad zur BAK-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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
    
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  9. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

REST v1beta4

  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. 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 ein vollständiges Backup mit noRecovery. Prüfen Sie, ob Ihre Datenbank nach dem Import des vollständigen Backups den Status RESTORING hat.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE_ID: Instanz-ID.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • PATH_TO_BAK_FILE: Pfad zur BAK-Datei.
    • DATABASE_NAME: 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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  5. Optional: Differenzielle Sicherung importieren.
  6. Importieren Sie ein Transaktions-Backup. Hier sind stopAt und stopAtMark optionale Felder.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: Projekt-ID.
    • INSTANCE_ID: Instanz-ID.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • PATH_TO_BAK_FILE: Pfad zur BAK-Datei.
    • DATABASE_NAME: Name einer Datenbank in der Cloud SQL-Instanz.
    • STOP_AT_TIMESTAMP: Der Zeitstempel, an dem der Import des Transaktionslogs beendet werden muss. Dies ist ein optionales Feld; der Wert muss das RFC 3339-Format nutzen.
    • STOP_AT_MARK_NAME: Die markierte Transaktion, an der der Import des Transaktionslogs beendet werden muss. Dies ist ein optionales Feld; es kann einen beliebigen String als Wert verwenden. Wenn der Wert das Format lsn:log-sequence-number hat, wird der Import des Transaktionslogs bei der angegebenen Logsequenznummer gestoppt.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "bakType": "TLOG",
            "stopAt": STOP_AT_TIMESTAMP,
            "stopAtMark":STOP_AT_MARK_NAME,
            "noRecovery": true,
          }
    
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Wiederholen Sie diesen Schritt, bis alle Transaktionslog-Sicherungen importiert wurden.
  7. Optional: Verwenden Sie recoveryOnly, um die importierte Datenbank online zu stellen. Führen Sie diesen Schritt nur aus, wenn sich Ihre Datenbank im Status RESTORING befindet.

    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_BAK_FILE: der Pfad zur BAK-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 der Anfrage:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  8. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

Stripe-Import verwenden

Vorteile des Stripe-Imports:

  • Geringerer Zeitaufwand für den Abschluss von Vorgängen
  • Datenbanken mit mehr als 5 TB können importiert werden

Ein möglicher Nachteil des Stripe-Imports ist, dass alle Dateien im entfernten Satz (und nicht eine einzelne Datei) in denselben Ordner in Ihrem Cloud Storage-Bucket hochgeladen werden müssen, bevor Sie den Import durchführen.

Abläufe planen

In den meisten Anwendungsfällen ermöglicht der Stripe-Import eine bessere Leistung ohne Nachteile. Wenn Sie jedoch keine Daten aus einem Stripeset von einer bestimmten Instanz sichern können oder Ihre Datenbank weniger als 5 TB groß ist und eine höhere Leistung keine kritische Leistung darstellt, sollten Sie einen Nicht-Stripe-Import verwenden.

Stripe-Import verwenden

gcloud

  1. Erstellen Sie ein Cloud Storage-Bucket für den Import.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

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

  2. Prüfen Sie, ob die erforderlichen IAM-Rollen und -Berechtigungen konfiguriert sind.
  3. Erstellen Sie einen neuen Ordner in Ihrem Bucket.
  4. Zum Importieren der Datenbank laden Sie die Dateien des Stripesets (der Datenbank) in den neuen Ordner hoch. Achten Sie darauf, dass alle Dateien in den Ordner hochgeladen wurden und der Ordner keine zusätzlichen Dateien enthält.
  5. Geben Sie die Instanz an, aus der Sie exportieren möchten:
    gcloud sql instances describe INSTANCE_NAME
  6. Kopieren Sie das Feld serviceAccountEmailAddress.
  7. Weisen Sie mit gcloud storage buckets add-iam-policy-binding die IAM-Rolle storage.objectViewer dem Dienstkonto für den Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  8. Importieren Sie die Daten aus dem Ordner. Der Unterschied zu einem Nicht-Stripe-Import sieht so aus: Der URI verweist auf den Namen des Ordners, in den das Stripeset hochgeladen wurde, statt auf eine einzelne Datei. Dabei geben Sie den --striped-Parameter an:
    gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \
    --database=DATABASE_NAME --striped
  9. 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 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. 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 die Daten aus der Datei:

    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_folder: der Pfad zum Ordner (im Cloud Storage-Bucket), in dem sich das Stripeset befindet
    • database_name: der Name einer Datenbank, die in Ihrer Cloud SQL-Instanz erstellt werden soll
    • true | false: wird auf true gesetzt, um den Stripeset-Import zu verwenden

    HTTP-Methode und URL:

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

    JSON-Text anfordern:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "database": "database_name",
          "bakImportOptions": {
            "striped": true | false
          }
        }
    }
    

    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.
  5. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

REST v1beta4

  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. 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 die Daten aus der Datei:

    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_folder: der Pfad zum Ordner (im Cloud Storage-Bucket), in dem sich das Stripeset befindet
    • database_name: der Name einer Datenbank, die in Ihrer Cloud SQL-Instanz erstellt werden soll
    • true | false: wird auf true gesetzt, um den Stripeset-Import zu verwenden

    HTTP-Methode und URL:

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

    JSON-Text anfordern:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "database": "database_name",
          "bakImportOptions": {
            "striped": true | false
          }
        }
    }
    

    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.
  5. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

Wenn ein Fehler wie z. B. ERROR_RDBMS angezeigt wird, prüfen Sie, ob die Tabelle vorhanden ist. Ist die Tabelle vorhanden, sollten Sie ermitteln, ob Sie die richtigen Berechtigungen für den Bucket haben. Hilfe zum Konfigurieren der Zugriffssteuerung in Cloud Storage finden Sie unter Access Control Lists (ACLs) erstellen und verwalten.

Nächste Schritte