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
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Suchen Sie die Zeile der zu klonenden Instanz.
- Klicken Sie in der Spalte Aktionen auf das Menü Weitere Aktionen.
- Klicken Sie auf Klon erstellen.
- 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.
Ä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
- Rufen Sie Cloud Shell auf.
-
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).
-
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 alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
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
-
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.
-
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.
- Ö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:
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- 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
-
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 ParameterpreferredSecondaryZone
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 ParameterpreferredSecondaryZone
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 |
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 |