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
-
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
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.
Ä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
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:
-
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.
- Führen Sie auf der Seite Klon erstellen die folgenden Aktionen aus:
- Aktualisieren Sie bei Bedarf im Feld Instanz-ID die Instanz-ID.
- Klicken Sie auf Von einem früheren Zeitpunkt klonen.
- 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.
- Klicken Sie auf Klon erstellen.
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 |
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 |