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 zonale Instanz klonen, können Sie eine andere primäre Zone für die Instanz angeben. Wenn Sie eine Instanz mit Hochverfügbarkeit (regional) klonen, können Sie für die Instanz unterschiedliche primäre und sekundäre Zonen 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

Sie können eine Cloud SQL-Instanz mit der Google Cloud Console, der 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 \
--preferred-zone ZONE_NAME \
--preferred-secondary-zone SECONDARY_ZONE_NAME

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
  • ZONE_NAME: Optional. Der Name der primären Zone für die Zielinstanz. Verwenden Sie diese Option, wenn sich die Zielinstanz in einer anderen primären Zone als die Cloud SQL-Instanz befinden soll, die Sie klonen. Bei einer regionalen Instanz ersetzt diese Zone die primäre Zone, die sekundäre Zone bleibt jedoch so wie bei der Quellinstanz.
  • SECONDARY_ZONE_NAME: Optional. Der Name der sekundären Zone für die Zielinstanz. Damit können Sie eine andere sekundäre Zone für die regionale Cloud SQL-Instanz angeben, die Sie klonen möchten.

Wenn Sie die Parameter --preferred-zone und --preferred-secondary-zone verwenden, gelten die folgenden Bedingungen:

  • Sowohl die primäre als auch die sekundäre Zone müssen gültige Zonen sein.
  • Beide Zonen müssen zur selben Region wie die Quellinstanz gehören.
  • Die primäre und die sekundäre Zone müssen unterschiedlich sein.
  • Für zonale Instanzen können Sie den Parameter --preferred-secondary-zone nicht verwenden. Andernfalls schlägt das Klonen der Instanz fehl.
  • Wenn Sie weder für den Parameter --preferred-zone noch für den Parameter --preferred-secondary-zone Werte angeben, hat die geklonte Instanz dieselben primären und sekundären Zonen wie die Quellinstanz.

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
  • ZONE_NAME: Optional. Der Name der primären Zone für die Zielinstanz. Verwenden Sie diese Option, wenn sich die Zielinstanz in einer anderen primären Zone als die Cloud SQL-Instanz befinden soll, die Sie klonen. Bei einer regionalen Instanz ersetzt diese Zone die primäre Zone, die sekundäre Zone bleibt jedoch so wie bei der Quellinstanz.
  • SECONDARY_ZONE_NAME: Optional. Der Name der sekundären Zone für die Zielinstanz. Damit können Sie eine andere sekundäre Zone für die regionale Cloud SQL-Instanz angeben, die Sie klonen möchten.

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",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Wenn Sie die Parameter preferredZone und preferredSecondaryZone verwenden, gelten die folgenden Bedingungen:

  • Sowohl die primäre als auch die sekundäre Zone müssen gültige Zonen sein.
  • Beide Zonen müssen zur selben Region wie die Quellinstanz gehören.
  • Die primäre und die sekundäre Zone müssen unterschiedlich sein.
  • Für zonale Instanzen können Sie den Parameter preferredSecondaryZone nicht verwenden. Andernfalls schlägt das Klonen der Instanz fehl.
  • Wenn Sie weder für den Parameter preferredZone noch für den Parameter preferredSecondaryZone Werte angeben, hat die geklonte Instanz dieselben primären und sekundären Zonen wie die Quellinstanz.

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
  • ZONE_NAME: Optional. Der Name der primären Zone für die Zielinstanz. Verwenden Sie diese Option, wenn sich die Zielinstanz in einer anderen primären Zone als die Cloud SQL-Instanz befinden soll, die Sie klonen. Bei einer regionalen Instanz ersetzt diese Zone die primäre Zone, die sekundäre Zone bleibt jedoch so wie bei der Quellinstanz.
  • SECONDARY_ZONE_NAME: Optional. Der Name der sekundären Zone für die Zielinstanz. Damit können Sie eine andere sekundäre Zone für die regionale Cloud SQL-Instanz angeben, die Sie klonen möchten.

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",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

Wenn Sie die Parameter preferredZone und preferredSecondaryZone verwenden, gelten die folgenden Bedingungen:

  • Sowohl die primäre als auch die sekundäre Zone müssen gültige Zonen sein.
  • Beide Zonen müssen zur selben Region wie die Quellinstanz gehören.
  • Die primäre und die sekundäre Zone müssen unterschiedlich sein.
  • Für zonale Instanzen können Sie den Parameter preferredSecondaryZone nicht verwenden. Andernfalls schlägt das Klonen der Instanz fehl.
  • Wenn Sie weder für den Parameter preferredZone noch für den Parameter preferredSecondaryZone Werte angeben, hat die geklonte Instanz dieselben primären und sekundären Zonen wie die Quellinstanz.

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.

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.