Instanzen klonen

Auf dieser Seite wird das Klonen beschrieben. Außerdem wird beschrieben, wie eine Instanz geklont wird.

Übersicht

Beim Klonen einer Cloud SQL-Instanz wird eine neue Instanz als Kopie der Quellinstanz erstellt. Die neue Instanz ist komplett unabhängig von der Quellinstanz.

Häufig gestellte Fragen

Frage Antwort
Wirkt sich das Klonen auf die Leistung aus? Nein. Das Klonen wirkt sich nicht auf die Leistung der Quellinstanz aus.
Werden Sicherungen in die neue Instanz kopiert? Nein. Die neue Instanz erstellt neue automatische Sicherungen. Manuelle Sicherungen werden von der Quellinstanz nicht kopiert.
Hat die neue Instanz die gleiche(n) IP-Adresse(n)? Nein. Die neue Instanz hat eine oder mehrere neue IP-Adressen.
Gelten für die neue Instanz die gleichen Konfigurationseinstellungen? Ja. Für die neue Instanz gelten die identischen Einstellungen zu Datenbank-Flags, Verbindungsoptionen und Maschinentyp sowie die gleichen Speicher- und Arbeitsspeichereinstellungen.
Werden Replikate in die neue Instanz kopiert? Nein. Sie müssen für die neue Instanz neue Replikate erstellen.
Kann man ein Replikat klonen? Nein. Sie können ein Replikat nicht klonen.
Kann man einen Klon von einem früheren Zeitpunkt erstellen? Ja. Die Wiederherstellung zu einem bestimmten Zeitpunkt nutzt das Klonen zum Wiederherstellen einer Instanz von einem früheren Zeitpunkt. Dies bietet eine Unterstützung für die Wiederherstellung Ihrer Datenbank nach einem Schadenfall.
Werden die Wartungseinstellungen der Quellinstanz automatisch in die Kloninstanz kopiert? Nein. Sie müssen die Wartungseinstellungen für die Kloninstanz konfigurieren.
Kann man eine Instanz klonen, wenn die Zone für diese Instanz nicht verfügbar ist? Ja. Wenn Sie eine Instanz klonen, können Sie eine andere Zone für die Instanz angeben.
Kann man eine Datenbank in einem anderen Projekt klonen? Nein. Sie können eine Datenbank nicht in ein anderes Projekt klonen.
Kann man eine Instanz klonen, die früher ein Klon war? Ja. Sie können eine Instanz klonen, die von einer anderen Instanz geklont wurde.
Werden Datenbanknutzer in die neue Instanz kopiert? Ja, Datenbanknutzer werden in die neue Instanz kopiert. Passwörter für diese Nutzer werden ebenfalls kopiert, sodass sie nicht neu erstellt werden müssen.

Instanz klonen

gcloud CLI, Terraform oder der API klonen.

Console

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

    Cloud SQL-Instanzen aufrufen

  2. Suchen Sie die Zeile der zu klonenden Instanz.
  3. Klicken Sie in der Spalte Aktionen auf das Menü Weitere Aktionen.
  4. Klicken Sie auf Klon erstellen.
  5. Aktualisieren Sie auf der Seite Klon erstellen die Instanz-ID (falls erforderlich) und klicken Sie auf Klon erstellen. Lassen Sie Aktuellen Status der Instanz klonen ausgewählt.

    Während der Initialisierung des Klons wird wieder die Seite mit der Instanzliste angezeigt.

gcloud

Verwenden Sie den Befehl gcloud sql instances clone, um eine Instanz zu löschen:

gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \
--project=PROJECT_ID

Ersetzen Sie die folgenden Werte:

  • SOURCE_INSTANCE_NAME: der Name der zu klonenden Cloud SQL-Instanz
  • DESTINATION_INSTANCE_NAME: der Name der geklonten Instanz
  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Quell- und Zielinstanzen enthält

Zum Ausführen des Befehls gcloud sql instances clone benötigen Sie die Berechtigung cloudsql.instances.clone. Weitere Informationen zu den erforderlichen Berechtigungen zum Ausführen von gcloud CLI-Befehlen finden Sie unter Cloud SQL-Berechtigungen.

Terraform

Verwenden Sie zum Klonen der Instanz eine Terraform-Ressource.

resource "google_sql_database_instance" "clone" {
  name             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Änderungen anwenden

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.

    Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.

Verzeichnis vorbereiten

Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).

  1. Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung .tf haben, z. B. main.tf. In dieser Anleitung wird die Datei als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.

    Kopieren Sie den Beispielcode in das neu erstellte main.tf.

    Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
    terraform init

    Fügen Sie optional die Option -upgrade ein, um die neueste Google-Anbieterversion zu verwenden:

    terraform init -upgrade

Änderungen anwenden

  1. Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
    terraform plan

    Korrigieren Sie die Konfiguration nach Bedarf.

  2. Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie yes an der Eingabeaufforderung ein:
    terraform apply

    Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.

  3. Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.

Änderungen löschen

So löschen Sie das Projekt:

  1. Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument deletion_protection auf false.
    deletion_protection =  "false"
  2. Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie yes an der Eingabeaufforderung ein:
    terraform apply
  1. Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und yes an der Eingabeaufforderung eingeben:

    terraform destroy

REST Version 1

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Quell- und Zielinstanzen enthält
  • SOURCE_INSTANCE_NAME: der Name der zu klonenden Cloud SQL-Instanz
  • DESTINATION_INSTANCE_NAME: der Name der geklonten Instanz

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

JSON-Text anfordern:

{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Zur Verwendung der API-Methode instances.clone benötigen Sie die Berechtigung cloudsql.instances.clone. Weitere Informationen zu den erforderlichen Berechtigungen für API-Methoden finden Sie unter Cloud SQL-Berechtigungen.

REST v1beta4

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Quell- und Zielinstanzen enthält
  • SOURCE_INSTANCE_NAME: der Name der zu klonenden Cloud SQL-Instanz
  • DESTINATION_INSTANCE_NAME: der Name der geklonten Instanz

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

JSON-Text anfordern:

{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Zur Verwendung der API-Methode instances.clone benötigen Sie die Berechtigung cloudsql.instances.clone. Weitere Informationen zu den erforderlichen Berechtigungen für API-Methoden finden Sie unter Cloud SQL-Berechtigungen.

Nicht verfügbare Instanz klonen

Console

Klonen Sie aus folgenden Gründen eine nicht verfügbare Instanz in einer anderen Zone:

  • Auf die aktuelle Zone, in der die Instanz konfiguriert ist, kann nicht zugegriffen werden. Diese Instanz hat den Status FAILED.
  • Die Instanz wird gerade gewartet. Diese Instanz hat den Status MAINTENANCE.

Führen Sie die folgenden Schritte aus, um eine nicht verfügbare Instanz zu klonen:

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

    Cloud SQL-Instanzen aufrufen

  2. Suchen Sie die Zeile der zu klonenden Instanz.
  3. Klicken Sie in der Spalte Aktionen auf das Menü Weitere Aktionen.
  4. Klicken Sie auf Klon erstellen.
  5. Führen Sie auf der Seite Klon erstellen die folgenden Aktionen aus:
    1. Aktualisieren Sie bei Bedarf im Feld Instanz-ID die Instanz-ID.
    2. Klicken Sie auf Von einem früheren Zeitpunkt klonen.
    3. Wählen Sie im Feld Zeitpunkt ein Datum und eine Uhrzeit aus, von der Sie Daten klonen möchten. Dadurch wird der Status der Instanz gemäß diesem Zeitpunkt wiederhergestellt.
    4. Klicken Sie auf Klon erstellen.
  6. Während der Initialisierung des Klons werden Sie zur Seite mit der Instanzliste zurückgeleitet.

gcloud

Klonen Sie eine nicht verfügbare Instanz in einer anderen Zone, da die aktuelle Zone, in der die Instanz konfiguriert ist, nicht zugänglich ist.

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--point-in-time DATE_AND_TIME_STAMP \
--preferred-zone ZONE_NAME

Das Nutzer- oder Dienstkonto, mit dem der Befehl gcloud sql instances clone ausgeführt wird, muss die Berechtigung cloudsql.instances.clone haben. Weitere Informationen zu den erforderlichen Berechtigungen zum Ausführen von gcloud CLI-Befehlen finden Sie unter Cloud SQL-Berechtigungen.

REST Version 1

Klonen Sie eine nicht verfügbare Instanz in einer anderen Zone, da die aktuelle Zone, in der die Instanz konfiguriert ist, nicht zugänglich ist.

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • PROJECT_ID: Projekt-ID.
  • SOURCE_INSTANCE_NAME: der Name der Quellinstanz.
  • TARGET_INSTANCE_NAME: der Name der (geklonten) Zielinstanz.
  • DATE_AND_TIME_STAMP: ein Datums- und Uhrzeitstempel für die Quellinstanz in der UTC-Zeitzone und im RFC 3339-Format (z. B.
    2012-11-15T16:19:00.094Z).
  • ZONE_NAME: Optional. Der Zonenname für die Zielinstanz. Damit wird eine andere Zone für die Cloud SQL-Instanz festgelegt, die Sie klonen möchten. Bei einer regionalen Instanz ersetzt diese Zone die primäre Zone, die sekundäre Zone bleibt jedoch so wie bei der Instanz.

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

JSON-Text anfordern:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_NAME",
    "pointInTime": "DATE_AND_TIME_STAMP",
    "preferredZone": "ZONE_NAME"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Das Nutzer- oder Dienstkonto, das die API-Methode instances.clone verwendet, muss die Berechtigung cloudsql.instances.clone haben. Weitere Informationen zu den erforderlichen Berechtigungen für API-Methoden finden Sie unter Cloud SQL-Berechtigungen.

REST v1beta4

Klonen Sie eine nicht verfügbare Instanz in einer anderen Zone, da die aktuelle Zone, in der die Instanz konfiguriert ist, nicht zugänglich ist.

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • PROJECT_ID: Projekt-ID.
  • SOURCE_INSTANCE_NAME: der Name der Quellinstanz.
  • TARGET_INSTANCE_NAME: der Name der (geklonten) Zielinstanz.
  • DATE_AND_TIME_STAMP: ein Datums- und Uhrzeitstempel für die Quellinstanz in der Zeitzone UTC und im Format RFC 3339 (z. B.
    2012-11-15T16:19:00.094Z).
  • ZONE_NAME: Optional. Der Zonenname für die Zielinstanz. Damit wird eine andere Zone für die Cloud SQL-Instanz festgelegt, die Sie klonen möchten. Bei einer regionalen Instanz ersetzt diese Zone die primäre Zone, die sekundäre Zone bleibt jedoch so wie bei der Instanz.

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

JSON-Text anfordern:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_NAME",
    "pointInTime": "DATE_AND_TIME_STAMP",
    "preferredZone": "ZONE_NAME"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Das Nutzer- oder Dienstkonto, das die API-Methode instances.clone verwendet, muss die Berechtigung cloudsql.instances.clone haben. Weitere Informationen zu den erforderlichen Berechtigungen für API-Methoden finden Sie unter Cloud SQL-Berechtigungen.

Instanz klonen, die eine interne IP-Adresse verwendet

Wenn Ihre Cloud SQL-Instanz eine interne IP-Adresse verwendet, können Sie optional einen zugewiesenen IP-Bereich für die neue IP-Adresse des Klons angeben. Beispiel: google-managed-services-default.

gcloud

Klonen Sie die Instanz und geben Sie optional den zugewiesenen IP-Bereich an, den Sie verwenden möchten:

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--allocated-ip-range-name ALLOCATED_IP_RANGE_NAME

Das Nutzer- oder Dienstkonto, mit dem der Befehl gcloud sql instances clone ausgeführt wird, muss die Berechtigung cloudsql.instances.clone haben. Weitere Informationen zu den erforderlichen Berechtigungen zum Ausführen von gcloud CLI-Befehlen finden Sie unter Cloud SQL-Berechtigungen.

REST Version 1

Klonen Sie die Instanz und geben Sie optional den zugewiesenen IP-Bereich an, den Sie verwenden möchten:

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • project-id: die Projekt-ID
  • source-instance-id: die ID der Quellinstanz
  • target-instance-id: die ID der Zielinstanz
  • allocated-ip-range-name: der Name eines zugewiesenen IP-Bereichs

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  "cloneContext":
  {
    "destinationInstanceName": "target-instance-id",
    "allocatedIpRange": "allocated-ip-range-name"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Das Nutzer- oder Dienstkonto, das die API-Methode instances.clone verwendet, muss die Berechtigung cloudsql.instances.clone haben. Weitere Informationen zu den erforderlichen Berechtigungen für API-Methoden finden Sie unter Cloud SQL-Berechtigungen.

REST v1beta4

Klonen Sie die Instanz und geben Sie optional den zugewiesenen IP-Bereich an, den Sie verwenden möchten:

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • project-id: die Projekt-ID
  • source-instance-id: die ID der Quellinstanz
  • target-instance-id: die ID der Zielinstanz
  • allocated-ip-range-name: der Name eines zugewiesenen IP-Bereichs

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  "cloneContext":
  {
    "destinationInstanceName": "target-instance-id",
    "allocatedIpRange": "allocated-ip-range-name"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Das Nutzer- oder Dienstkonto, das die API-Methode instances.clone verwendet, muss die Berechtigung cloudsql.instances.clone haben. Weitere Informationen zu den erforderlichen Berechtigungen für API-Methoden finden Sie unter Cloud SQL-Berechtigungen.

Wenn Sie keinen zugewiesenen IP-Bereich angeben, wird das folgende Verhalten angewendet:

  • Wenn die Quellinstanz mit einem angegebenen Bereich erstellt wurde, wird die geklonte Instanz im selben Bereich erstellt.
  • Wenn die Quellinstanz nicht mit einem angegebenen Bereich erstellt wurde, wird die geklonte Instanz in einem zufälligen Bereich erstellt.

Fehlerbehebung

Problem Fehlerbehebung
Der Klonvorgang schlägt mit dem Fehler constraints/sql.restrictAuthorizedNetworks fehl. Der Klonvorgang wird durch die Authorized Networks-Konfiguration blockiert. Authorized Networks sind für öffentliche IP-Adressen im Bereich "Verbindung" der Google Cloud Console konfiguriert und das Klonen ist aufgrund von Sicherheitsaspekten nicht zulässig.

Entfernen Sie nach Möglichkeit alle Authorized Networks-Einträge aus der Cloud SQL-Instanz. Erstellen Sie andernfalls ein Replikat ohne Authorized Networks-Einträge.

Fehlermeldung: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Help Token: [help-token-id].

Sie versuchen, die Google Cloud Console zu verwenden, um eine Instanz mit einer privaten IP-Adresse zu klonen, aber Sie haben den zugewiesenen IP-Bereich, den Sie verwenden möchten, nicht angegeben, und die Quellinstanz wird nicht mit dem angegebenen Bereich erstellt. Dadurch wird die geklonte Instanz in einem zufälligen Bereich erstellt.

Klonen Sie mit gcloud die Instanz und geben Sie einen Wert für den
Parameter --allocated-ip-range-name an. Weitere Informationen finden Sie unter Instanz mit einer privaten IP-Adresse klonen.