Instanz verschieben

Auf dieser Seite wird beschrieben, wie Sie eine Instanz in Spanner verschieben.

Sie können Ihre Spanner-Instanz aus einer beliebigen Instanzkonfiguration in eine andere Instanzkonfiguration verschieben, auch zwischen regionalen und multiregionalen Konfigurationen. Das Verschieben der Instanz verursacht keine Ausfallzeiten und Spanner bietet während des Verschiebens weiterhin die gewohnten Transaktionsgarantien, einschließlich strikter Konsistenz.

Sie können die Instanz auch von der Quellinstanzkonfiguration in eine benutzerdefinierte Instanzkonfiguration verschieben (z. B. eine nam3-Basiskonfiguration mit einem schreibgeschützten Replikat us-west2). Da Sie die Topologie vorhandener Instanzkonfigurationen nicht aktualisieren können, müssen Sie zuerst eine neue benutzerdefinierte Instanzkonfiguration mit der gewünschten Topologie erstellen. Nachdem Sie die neue benutzerdefinierte Instanzkonfiguration erstellt haben, können Sie die Instanz von der Quellinstanzkonfiguration in die neue benutzerdefinierte Instanzkonfiguration verschieben.

Warum sollten Sie Ihre Spanner-Instanz verschieben?

Vorteile der Instanzverschiebung:

  • Verfügbarkeit erhöhen: Sie erhalten eine Verfügbarkeit von 99,999% ohne Ausfallzeiten, nachdem Sie eine Verschiebung von einer Region in eine andere Region durchgeführt haben.
  • Latenz reduzieren: Reduzieren Sie die Latenz und erhöhen Sie die geografische Abdeckung mit zusätzlichen schreibgeschützten Replikaten durch eine Verschiebung von einer Region zu einer Multiregion oder von einer von mehreren Regionen zu einer Multiregion.
  • Kosten senken: Reduzieren Sie die Kosten pro Stunde, indem Sie von einer multiregionalen Konfiguration zu einer regionalen Konfiguration wechseln.
  • Datenbank am selben Standort platzieren: Platzieren Sie die Spanner-Datenbank mit der Clientanwendung, indem Sie die Instanz an einen besser optimierten Speicherort verschieben.

Preise

Beim Verschieben einer Instanz fallen sowohl für die Quell- als auch für die Zielinstanzkonfiguration stündliche Computing- und Speichergebühren an. Nach dem Verschieben wird Ihnen der Instanzspeicher für die Zielkonfiguration in Rechnung gestellt.

Wenn Sie Ihre Instanz in eine neue regionale oder multiregionale Instanzkonfiguration verschieben, können Gebühren für die ausgehende Datenübertragung anfallen. Weitere Informationen finden Sie unter Spanner-Preise.

Beschränkungen

  • Zum Verschieben der Instanz ist mindestens 1 Knoten (1.000 Verarbeitungseinheiten) erforderlich.
  • Sie können Ihre Instanz nicht zwischen Projekten und Google Cloud-Konten verschieben.
  • Sie können eine kostenlose Spanner-Testinstanz nicht verschieben. Sie können die Instanz verschieben, nachdem Sie ein Upgrade auf eine kostenpflichtige Instanz durchgeführt haben.
  • Wenn es aktive Anfragen mit einem regionalen Dienstendpunkt für eine der Instanzressourcen gibt, wirkt sich die Instanzverschiebung auf alle Anfragen aus, die den regionalen Endpunkt verwenden, da die regionale Erzwingung den Zugriff auf regionsübergreifende Instanzen blockiert. Anfragen, die einen globalen Endpunkt verwenden, sind nicht betroffen.
  • Spanner-Sicherungen sind spezifisch für eine Instanzkonfiguration und sind beim Verschieben einer Instanz nicht enthalten. Weitere Informationen finden Sie unter Sicherungen.
  • Die folgenden APIs werden während einer Instanzverschiebung deaktiviert:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (deaktiviert, wenn in der Anfrage default_leader angegeben ist)
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CopyBackup
  • Sie können keine Instanzen verschieben, die CMEK-fähige Datenbanken enthalten.
  • Wenn eine Datenbank einen geänderten Standard-Leader hat, wird die Auswahl beibehalten, wenn sie eine nicht schreibgeschützte Region in der Zielinstanzkonfiguration benennt und diese Konfiguration multiregional ist. Wenn die Zielkonfiguration regional ist oder die benannte nicht schreibgeschützte Region nicht enthält, wird die Auswahl des standardmäßigen Leaders gelöscht.
  • Durch das Verschieben einer Instanz ändert sich das Instanzkonfigurationsattribut der Instanz. Wenn Sie Ihre Spanner-Ressourcen automatisiert verwalten, müssen Sie mögliche Inkonsistenzen vorbereiten und beheben.
    • Wenn Sie beispielsweise Terraform zum Verwalten Ihrer Spanner-Instanzen und -Datenbanken verwenden und terraform apply --auto-approve aktivieren, um Ihre Ressourcen synchron zu halten, werden alle Instanzen und untergeordneten Ressourcen beim Verschieben der Instanz gelöscht. Aktualisieren Sie die Konfiguration entsprechend, um Löschungen und Datenverluste zu vermeiden. Weitere Informationen zum Befehl apply finden Sie unter Terraform-Anwendungsoptionen.
  • Während die Instanz verschoben wird, zeigen die Monitoring-Messwerte und -Diagramme von Spanner möglicherweise Daten sowohl in der Quell- als auch in der Zielinstanzkonfiguration an oder sie spiegeln nur die Leistung in einer Instanzkonfiguration wider.
  • Wenn Sie das Open-Source-Autoscaling-Tool konfiguriert haben, müssen Sie es nicht deaktivieren. Er schlägt fehl, da InstanceAdmin.UpdateInstance (für Änderungen an Knoten und Verarbeitungseinheiten verwendet) deaktiviert ist.
  • Sie können eine Instanz nicht verschieben, wenn das Feature von Spanner verwaltetes Autoscaling dafür aktiviert ist. Zum Verschieben der Instanz müssen Sie das verwaltete Autoscaling deaktivieren, die Instanz verschieben und dann das verwaltete Autoscaling wieder aktivieren.

    Wenn Sie Autoscaling verwenden, müssen Sie außerdem genügend Knoten für eine maximale CPU-Auslastung gemäß den angegebenen maximalen Empfehlungen bereitstellen und dann das Autoscaling deaktivieren, bevor Sie die Instanz verschieben.

Hinweise zur Leistung

Wenn eine Instanz verschoben wird, treten höhere Lese-/Schreiblatenzen und eine höhere Transaktionsabbruchrate auf. Die CPU-Auslastung während des Verschiebens kann auf bis zu 100% steigen, da das Verschieben der Instanz mit freier CPU durchgeführt wird, die vom Nutzer bereitgestellt wurde. Das Verschieben einer Instanz führt jedoch nicht zu einer Ausfallzeit. Die Zeit für das Verschieben einer Instanz hängt von verschiedenen Faktoren ab, darunter die Größe der Datenbanken, die Anzahl der Knoten und die Art der Verschiebung (z.B. von regional zu mehreren Regionen).

Nach dem Verschieben einer Instanz variiert ihre Leistung abhängig von den Details der Instanzkonfiguration. Beispielsweise haben multiregionale Konfigurationen im Allgemeinen eine höhere Schreiblatenz und eine geringere Leselatenz als regionale Konfigurationen.

Sicherungen

Wenn Sie eine Instanz verschieben, werden die Sicherungen in der Quellinstanz nicht automatisch in die neue Zielkonfiguration verschoben. Das Verschieben der Instanz wird abgebrochen, wenn beim Starten der Instanzverschiebung in der Konfiguration der Quellinstanz Sicherungen vorhanden sind. Es ist wichtig, dass Sie die Sicherungen kopieren und den Datenwiederherstellungsplan berücksichtigen, bevor Sie die Instanz verschieben.

Wenn in Ihrer Quellinstanz Sicherungen vorhanden sind, die Sie behalten müssen, empfehlen wir, dass Sie die Sicherungen in die Zielinstanzkonfiguration und eine andere Instanz mit der gleichen Instanzkonfiguration wie die zu verschiebende Quellinstanz kopieren. Das hat folgende Auswirkungen:

  • Sie können Ihre Sicherungen in die Konfiguration der Zielinstanz kopieren, sobald die Instanzverschiebung abgeschlossen ist.
  • Wenn Sie die Instanzverschiebung abbrechen müssen, können Sie Ihre Sicherungen mit der Konfiguration der Quellinstanz auch schnell aus der Instanz wiederherstellen.

Nachdem Sie Ihre Sicherungen in eine andere Instanz kopiert haben, müssen Sie alle vorhandenen Sicherungen in der Quellinstanz löschen, bevor Sie die Instanz verschieben können. Nach dem Verschieben der Instanz haben Sie bereits eine Kopie der Sicherung in der Zielkonfiguration. Sie können auch eine neue Sicherung erstellen.

Weitere Informationen zum Kopieren von Sicherungen und der damit verbundenen Kosten finden Sie unter Sicherung kopieren.

Instanz verschieben

Sie können eine Instanz mit der Cloud Shell der Google Cloud Console und der gcloud CLI mithilfe von gcloud-Befehlen verschieben.

Vorbereitung

Lesen Sie vor dem Verschieben der Instanzkonfiguration die Abschnitte Einschränkungen und Überlegungen zur Leistung. Gehen Sie dann so vor:

  1. Prüfen Sie, ob Sie die IAM-Berechtigung spanner.instances.update für die Quellinstanz haben.
  2. Verschieben Sie gegebenenfalls Ihre Nicht-Produktionsinstanzen (z. B. Test- und Staging-Instanzen), bevor Sie die Produktionsinstanzen verschieben. So können Sie die Auswirkungen auf die Leistung während einer Instanzverschiebung besser bewerten und verstehen.
  3. Wenn Sie eine Spanner-Instanz verschieben, werden die Instanz-Tags gelöscht, die Sie in Data Catalog erstellt haben. Damit die Tags erhalten bleiben, müssen Sie sie vor dem Verschieben exportieren und dann wieder importieren. Weitere Informationen finden Sie unter Tags exportieren und importieren.

Beachten Sie auch die folgenden Best Practices:

  • Testen Sie Leistungsarbeitslasten in Nicht-Produktionsinstanzen in der Zielinstanzkonfiguration, bevor Sie die Produktionsinstanz verschieben. Verschieben Sie eine Staging-Instanz, die Ihrer Produktionsinstanz ähnelt, um eine Vorstellung davon zu bekommen, wie lange das Verschieben der Produktionsinstanz dauert.
  • Prüfen Sie mit Key Visualizer, ob in Ihren Datenbanken Hotspots vorhanden sind.
  • Prüfen Sie, ob das Knotenkontingent in der Zielinstanzkonfiguration ausreicht, um die erwartete Spitzennutzung der Instanz zu bewältigen. Weitere Informationen finden Sie unter Spanner-Kontingente und -Limits.
  • Achten Sie darauf, dass die maximale CPU-Auslastung Ihrer Instanz weniger als 40% für die verschobene Instanzkonfiguration und die Speichermenge pro Knoten weniger als 1 Tebibyte (TiB) beträgt.
  • Nehmen Sie während des Verschiebens keine Änderungen an der Instanz vor. Dies umfasst das Ändern der Anzahl von Instanzknoten, das Ändern von Datenbankschemas, das Erstellen oder Löschen von Datenbanken und das Erstellen oder Löschen von Sicherungen.

Wenn Sie die Instanz gemäß diesen Empfehlungen verschieben, wird sie in der Regel innerhalb von 24 Stunden abgeschlossen. Je nach Arbeitslast der Anwendung kann die Ausführungszeit jedoch länger oder kürzer sein.

Instanz verschieben

Google Cloud Console

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell-Symbol aktivieren Cloud Shell aktivieren.

    Im unteren Bereich der Google Cloud Console wird ein neuer Frame für die Cloud Shell-Sitzung geöffnet, in dem eine Befehlszeilen-Eingabeaufforderung angezeigt wird. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Verwenden Sie den Befehl gcloud spanner instances move, um die Instanz zu verschieben.

    gcloud spanner instances move INSTANCE_ID \
    --target-config=TARGET_CONFIG
    

    Ersetzen Sie Folgendes:

    • INSTANCE_ID: Die permanente Kennzeichnung der Instanz, die Sie verschieben möchten.
    • TARGET_CONFIG: Eine permanente Kennzeichnung der Instanzkonfiguration, in die Sie die Instanz verschieben möchten. Der neue geografische Standort Ihrer Instanz. Dies kann eine regionale, multiregionale oder benutzerdefinierte Instanzkonfiguration (z. B. nam3, us-central1 oder custom-nam3-us-west2) sein.

Wenn Sie beispielsweise die Instanz test-instance von der aktuellen Instanzkonfiguration in nam3 verschieben möchten, führen Sie den folgenden Befehl aus:

  gcloud spanner instances move test-instance --target-config=nam3

Optional: Wenn Sie der Basisinstanzkonfiguration nam3 ein schreibgeschütztes Replikat us-west2 hinzufügen möchten, gehen Sie so vor:

  1. Klonen Sie die Basiskonfiguration und fügen Sie das schreibgeschützte Replikat hinzu:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Verschieben Sie die Instanz test-instance von ihrer aktuellen Instanzkonfiguration in diese neue custom-nam3-us-west2-Instanzkonfiguration:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

gcloud-CLI

Verwenden Sie den Befehl gcloud spanner instances move, um die Instanz zu verschieben.

gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG

Ersetzen Sie Folgendes:

  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz, die Sie verschieben möchten.
  • TARGET_CONFIG: Eine permanente Kennzeichnung der Instanzkonfiguration, in die Sie die Instanz verschieben möchten. Der neue geografische Standort Ihrer Instanz. Dies kann eine regionale oder multiregionale Instanzkonfiguration (z. B. nam3, us-central1 oder custom-nam3-us-west2) sein.

Wenn Sie beispielsweise die Instanz test-instance von der aktuellen Instanzkonfiguration in nam3 verschieben möchten, führen Sie den folgenden Befehl aus:

  gcloud spanner instances move test-instance --target-config=nam3

Optional: Wenn Sie der Basisinstanzkonfiguration nam3 ein schreibgeschütztes Replikat us-west2 hinzufügen möchten, gehen Sie so vor:

  1. Klonen Sie die Basiskonfiguration und fügen Sie das schreibgeschützte Replikat hinzu:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Verschieben Sie die Instanz test-instance von ihrer aktuellen Instanzkonfiguration in diese neue custom-nam3-us-west2-Instanzkonfiguration:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

Fortschritt des Verschiebens und Abbruchs von Instanzen überwachen

Sie können den Fortschritt einer Instanzverschiebung mit gcloud spanner operations describe überwachen oder ein benutzerdefiniertes Cloud Monitoring-Dashboard erstellen.

Fortschritt des Verschiebe- und Abbruchvorgangs ansehen

Verwenden Sie den Befehl gcloud spanner operations describe, um den Fortschritt eines Abbruchs einer Instanzverschiebung oder -verschiebung zu verfolgen. Für diesen Befehl ist die Vorgangs-ID des laufenden Vorgangs zum Verschieben der Instanz erforderlich.

  1. Rufen Sie mit dem folgenden Befehl die Vorgangs-ID für den Vorgang zum Verschieben der Instanz ab:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Ersetzen Sie Folgendes:

    • INSTANCE-ID: Die permanente Kennzeichnung der Instanz, die Sie verschieben möchten.

    Die Ausgabe zeigt eine Liste lang andauernder Vorgänge, einschließlich des Vorgangs zum Verschieben der Instanz.

  2. Führen Sie den Befehl gcloud spanner operations describe aus, um den Prozentsatz und den Status des Fortschritts anzusehen:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Ersetzen Sie Folgendes:

    • OPERATION_ID: die Vorgangs-ID des Vorgangs zum Verschieben der Instanz, den Sie prüfen möchten.
    • INSTANCE_ID ist die Instanz-ID der Instanz, die Sie prüfen möchten.

Vorgang zum Verschieben von Instanzen überwachen

Sie können ein benutzerdefiniertes Cloud Monitoring-Dashboard erstellen, um während der Instanzverschiebung, einem Vorgang mit langer Ausführungszeit und potenziellen Auswirkungen auf den Dienst, Messwerte anzuzeigen und zu überwachen.

Die Diagramme Gesamtspeicher und Gesamter Datenbankspeicher nach Datenbanken im Dashboard helfen bei der Überwachung des Fortschritts des Verschiebens. Sie sehen, dass der Speicherplatz in der Quellkonfiguration allmählich abnimmt, während der Speicher in der Zielkonfiguration zunimmt.

Google Cloud Console

  1. Laden Sie die Datei move-instance-dashboard.json herunter. Diese Datei enthält die Informationen, die zum Ausfüllen eines benutzerdefinierten Dashboards in Monitoring erforderlich sind.
  2. Rufen Sie in der Google Cloud Console die Seite Dashboards auf.

    Zu Dashboards

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

  3. Klicken Sie in der Dashboard-Übersicht auf Dashboard erstellen.
  4. Klicken Sie in der Dashboard-Symbolleiste auf das Drop-down-Menü Dashboard-Einstellungen. Wählen Sie dann JSON und dann JSON Editor aus.
  5. Kopieren Sie im Bereich JSON Editor den Inhalt der heruntergeladenen Datei move-instance-dashboard.json und fügen Sie ihn in den Editor ein.
  6. Klicken Sie auf Änderungen übernehmen, um die Änderungen für das Dashboard zu übernehmen. Wenn Sie dieses Dashboard nicht verwenden möchten, rufen Sie die Seite „Dashboard-Übersicht“ auf.
  7. Klicken Sie nach dem Erstellen des Dashboards auf Filter hinzufügen. Wählen Sie dann entweder project_id oder instance_id aus, um den Fortschritt der Instanzverschiebung zu überwachen.

gcloud-CLI

  1. Laden Sie die Datei move-instance-dashboard.json herunter. Diese Datei enthält die Informationen, die zum Ausfüllen eines benutzerdefinierten Dashboards in Monitoring erforderlich sind.
  2. Verwenden Sie den Befehl gcloud monitoring dashboards create, um ein Dashboard in einem Projekt zu erstellen:

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    Weitere Informationen finden Sie in der Referenz zu gcloud monitoring dashboards create.

So brechen Sie eine Instanzverschiebung ab

Sie können nur eine Instanzverschiebung abbrechen, die noch läuft. Wenn Sie eine bereits abgeschlossene Instanzverschiebung rückgängig machen möchten, müssen Sie eine neue Verschiebung starten.

Sie können gcloud spanner operations cancel verwenden, um Vorgänge zum Verschieben von Instanzen abzubrechen. Der Abbruch erfolgt nicht sofort und dauert in etwa genauso lang wie die Zeit, die seit Beginn des Verschiebens vergangen ist. Das liegt daran, dass Daten zurück in die Konfiguration der Quellinstanz verschoben werden müssen.

Für diesen Befehl ist die Vorgangs-ID des laufenden Vorgangs zum Verschieben der Instanz erforderlich.

  1. Rufen Sie mit folgendem Befehl die Vorgangs-ID ab:

    gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID"
    --filter="done:False AND metadata.@type:MoveInstanceMetadata
    

    Ersetzen Sie Folgendes:

    • INSTANCE_ID: Die permanente Kennzeichnung der Instanz, die Sie verschieben möchten.

    Die Ausgabe zeigt eine Liste der laufenden Instanzverschiebungsvorgänge.

  2. Führen Sie den Befehl gcloud spanner operations cancel aus, um die Instanzverschiebung abzubrechen:

    gcloud spanner operations cancel OPERATION_ID
    

    Ersetzen Sie Folgendes:

    • OPERATION_ID: die Vorgangs-ID des Vorgangs zum Verschieben der Instanz, den Sie abbrechen möchten.

Nächste Schritte