Instanz verschieben

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

Sie können Ihre Cloud Spanner-Instanz aus einer beliebigen Instanzkonfiguration in eine andere Instanzkonfiguration verschieben, auch zwischen regionalen, biregionalen und multiregionalen Konfigurationen. Beim Verschieben der Instanz kommt es zu keinen Ausfallzeiten. Cloud Spanner bietet während des Verschiebens weiterhin die üblichen Transaktionsgarantien, einschließlich strikter Konsistenz.

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

Gründe zum Verschieben der Cloud Spanner-Instanz

Das Verschieben Ihrer Instanz bietet unter anderem folgende Vorteile:

  • Erhöhte Verfügbarkeit: Nach dem Verschieben von einer regionalen Konfiguration in eine biregionale oder multiregionale Konfiguration erreichen Sie eine Verfügbarkeit von 99,999 % ohne Ausfallzeiten.
  • Geringere Latenz: Durch das Verschieben von einer regionalen Konfiguration in eine biregionale oder multiregionale Konfiguration bzw. von einer multiregionalen Konfiguration in eine andere multiregionale Konfiguration wird die Latenz mit zusätzlichen schreibgeschützten Replikaten reduziert und die geografische Abdeckung erhöht.
  • Niedrigere Kosten: Durch das Verschieben von einer biregionalen oder multiregionalen Konfiguration in eine regionale Konfiguration reduzieren Sie die Kosten pro Stunde.
  • Gemeinsamer Standort für Datenbank: Sie können die Instanz an einen geeigneteren Ort verschieben und dazu die Cloud Spanner-Datenbank am selben Standort wie die Clientanwendung platzieren.

Preise

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

Wenn Sie Ihre Instanz in eine neue regionale, biregionale oder multiregionale Instanzkonfiguration verschieben, fallen möglicherweise Gebühren für die ausgehende Datenübertragung an. Weitere Informationen finden Sie unter Cloud Spanner-Preise.

Beschränkungen

  • Damit Sie Ihre Instanz verschieben können, muss sie mindestens 1 Knoten (1.000 Verarbeitungseinheiten) haben.
  • Instanzen können nicht über Projekte und Konten von Google Cloud hinweg verschoben werden.
  • Eine Instanz, die die Standard-Version verwendet, kann nicht direkt von einer regionalen Instanzkonfiguration in eine biregionale oder multiregionale Instanzkonfiguration verschoben werden. Sie müssen zuerst ein Upgrade Ihrer Instanzversion auf Enterprise Plus durchführen und dann die Instanz verschieben.
  • Wenn aktive Anfragen einen regionalen Dienstendpunkt auf einer der Instanzressourcen verwenden, wirkt sich das Verschieben der Instanz auf all diese Anfragen aus, da der Zugriff auf regionenübergreifende Instanzen durch regionale Erzwingungsrichtlinien blockiert wird. Anfragen, die einen globalen Endpunkt verwenden, sind davon nicht betroffen.
  • Cloud Spanner-Sicherungen sind spezifisch für eine Instanzkonfiguration und werden beim Verschieben einer Instanz nicht mit übertragen. Weitere Informationen finden Sie unter Sicherungen.
  • Die folgenden APIs sind während des Verschiebens einer Instanz deaktiviert:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (deaktiviert, wenn default_leader in der Anfrage angegeben ist)
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • Wenn für eine Datenbank der Standard-Leader geändert wurde, bleibt die Auswahl erhalten, sofern eine Region mit Lese-/Schreibzugriff in der Zielinstanzkonfiguration angegeben wurde und diese Konfiguration multiregional ist. Wenn die Zielkonfiguration regional ist oder keine Region mit Lese-/Schreibzugriff angegeben wurde, wird die Auswahl des Standard-Leaders gelöscht.
  • Beim Verschieben einer Instanz ändert sich das Instanzkonfigurationsattribut Ihrer Instanz. Wenn Sie Ihre Cloud Spanner-Ressourcen automatisiert verwalten, sollten Sie sich auf mögliche Inkonsistenzen vorbereiten und diese beheben.
    • Falls Sie Ihre Cloud Spanner-Instanzen und ‑Datenbanken beispielsweise über Terraform verwalten und zum Synchronisieren der Ressourcen terraform apply --auto-approve aktivieren, werden beim Verschieben der Instanz alle Instanzen und untergeordneten Ressourcen gelöscht. Aktualisieren Sie die Konfiguration entsprechend, um Löschvorgänge und Datenverlust zu vermeiden. Weitere Informationen zum Befehl apply finden Sie unter Optionen für den Terraform-Befehl „Apply“.
  • Während die Instanz verschoben wird, können in den Monitoringmesswerten und ‑diagrammen von Cloud Spanner sowohl für die Quell- als auch die Zielinstanzkonfiguration Daten angezeigt werden. Möglicherweise wird aber auch nur die Leistung für eine einzelne Instanzkonfiguration dargestellt.
  • Wenn Sie das Open-Source-Autoscaler-Tool konfiguriert haben, müssen Sie es nicht deaktivieren. Es schlägt fehl, da das für Änderungen an Knoten und Verarbeitungseinheiten verwendete InstanceAdmin.UpdateInstance deaktiviert ist.
  • Sie können eine Instanz nicht verschieben, wenn der von Cloud Spanner verwaltete Autoscaler für sie aktiviert ist. Zum Verschieben der Instanz müssen Sie den verwalteten Autoscaler deaktivieren, die Instanz verschieben und den verwalteten Autoscaler dann wieder aktivieren.
    • Außerdem müssen Sie bei Verwendung von Autoscaling genügend Knoten für die maximale CPU-Nutzung gemäß den entsprechenden Empfehlungen bereitstellen und dann das Autoscaling deaktivieren, bevor Sie die Instanz verschieben.
  • Eine Cloud Spanner-Instanz im kostenlosen Testzeitraum kann nicht verschoben werden. Sie müssen dafür zuerst ein Upgrade auf eine kostenpflichtige Instanz durchführen.

Hinweise zur Leistung

Wenn eine Instanz verschoben wird, kommt es zu höheren Latenzen bei Lese-/Schreibvorgängen und einer höheren Transaktionsabbruchrate. Die CPU-Auslastung kann beim Verschieben der Instanz auf bis zu 100 % ansteigen, da die vom Nutzer bereitgestellten freien CPU-Ressourcen für diesen Vorgang verwendet werden. Allerdings führt das Verschieben einer Instanz zu keinen Ausfallzeiten. Die Zeit, die für das Verschieben einer Instanz benötigt wird, hängt von verschiedenen Faktoren ab. Dazu gehören die Größe der Datenbanken, der Anzahl der Knoten und der Standort, zu dem die Instanz verschoben wird (z. B. von einem regionalen zu einem multiregionalen Standort).

Nach dem Verschieben einer Instanz variiert deren Leistung je nach den Details der Instanzkonfiguration. Biregionale und multiregionale Konfigurationen haben beispielsweise meist eine höhere Schreiblatenz und eine niedrigere Leselatenz als regionale Konfigurationen.

Sicherungen

Wenn Sie eine Instanz verschieben, werden die Sicherungen in der ursprünglichen Instanzkonfiguration nicht automatisch in die neue Zielkonfiguration verschoben. Das Verschieben der Instanz wird abgebrochen, wenn in der ursprünglichen Instanzkonfiguration Sicherungen beim Start die Verschiebevorgangs vorhanden sind. Sie müssen Ihre Sicherungen vor dem Verschieben der Instanz unbedingt kopieren und Ihren Plan zur Datenwiederherstellung überdenken.

Wenn in der ursprünglichen Instanzkonfiguration Sicherungen vorhanden sind, die Sie beibehalten müssen, kopieren Sie die Sicherungen in 2 kleine temporäre Instanzen (placeholder-source und placeholder-dest) mit 100 Verarbeitungseinheiten:

  • placeholder-source: eine Instanz mit derselben Instanzkonfiguration wie die ursprüngliche Konfiguration der zu verschiebenden Instanz. Damit können Sie Ihre Sicherungen in der ursprünglichen Konfiguration wiederherstellen, wenn Sie den Verschiebevorgang abbrechen müssen.

  • placeholder-dest: eine Instanz mit derselben Instanzkonfiguration wie die Zielinstanzkonfiguration. Damit steht Ihnen sofort nach dem Verschieben eine Sicherung in der neuen Konfiguration zur Verfügung.

Da die Wiederherstellungsfunktion keine konfigurationsübergreifenden Wiederherstellungen unterstützt, sind diese Platzhalterinstanzen im Falle von Problemen mit der verschobenen Instanz für einen schnellen Rollback oder Wiederherstellungsvorgang in der neuen Konfiguration unerlässlich.

Nachdem Sie Ihre Sicherungen in placeholder-source und placeholder-dest kopiert haben, müssen Sie alle vorhandenen Sicherungen in der ursprünglichen Instanzkonfiguration löschen, bevor Sie die Instanz verschieben können. Wenn das Verschieben der Instanz dann abgeschlossen ist, haben Sie bereits eine Kopie der Sicherung in der Zielkonfiguration. Sie können auch eine neue Sicherung erstellen.

Mit diesem Ansatz halten Sie die Geschäftskontinuität aufrecht und minimieren potenzielle Ausfallzeiten oder Datenverluste während des Verschiebens der Instanz.

So verschieben Sie eine Instanz

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

Voraussetzungen

Bevor Sie die Instanzkonfiguration verschieben, sollten Sie unbedingt die Abschnitte Beschränkungen und Hinweise zur Leistung lesen. Führen Sie dann folgende Schritte aus:

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

Beachten Sie außerdem die folgenden Richtlinien:

  • Testen Sie Leistungsarbeitslasten in Nicht-Produktionsinstanzen in der Zielinstanzkonfiguration, bevor Sie die Produktionsinstanz verschieben. Verschieben Sie versuchsweise eine Staging-Instanz, die Ihrer Produktionsinstanz weitestgehend entspricht. So bekommen Sie ein Gefühl dafür, wie lange das Verschieben der Produktionsinstanz dauern wird.
  • Bestätigen Sie mit Key Visualizer, dass es in Ihren Datenbanken zu keinem Heißlaufen kommt.
  • Sorgen Sie dafür, dass das Knotenkontingent in der Zielinstanzkonfiguration ausreicht, um die voraussichtliche Spitzennutzung der Instanz bewältigen zu können. Weitere Informationen finden Sie unter Kontingente und Limits von Cloud Spanner.
  • Achten Sie darauf, dass die maximale CPU-Auslastung der Instanz für die verschobene Instanzkonfiguration unter 40 % liegt und die Speichermenge pro Knoten weniger als 1 Tebibyte (TiB) beträgt.
  • Nehmen Sie während des Verschiebevorgangs keine Änderungen an der Instanz vor. Dazu gehören das Ändern der Anzahl von Instanzknoten, das Ändern von Datenbankschemas, das Erstellen oder Löschen von Datenbanken sowie das Erstellen oder Löschen von Sicherungen.

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

Instanz verschieben

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz aus, die Sie verschieben möchten.

  3. Klicken Sie auf der Seite „Instanzübersicht“ neben Konfiguration auf Bearbeiten Instanz in eine neue Konfiguration verschieben.

  4. Wählen Sie im Bereich Instanz in eine neue Konfiguration verschieben die neue Instanzkonfiguration für die Instanz aus.

  5. Klicken Sie auf Speichern.

gcloud CLI

Verschieben Sie die Instanz mit dem Befehl gcloud spanner instances move.

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

Ersetzen Sie Folgendes:

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

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 in nam3 ein schreibgeschütztes Replikat in der Region us-west2 hinzufügen möchten, gehen Sie so vor:

  1. Klonen Sie die Basiskonfiguration und fügen Sie der neuen benutzerdefinierten Instanzkonfiguration custom-nam3-us-west2 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 der aktuellen Instanzkonfiguration in die neue Instanzkonfiguration custom-nam3-us-west2:

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

Optional: Instanz verschieben, die Datenbanken mit aktivierten CMEKs enthält

Verwenden Sie den Befehl gcloud spanner instances move, um eine Instanz zu verschieben, die Datenbanken mit aktivierten CMEKs enthält. Sie müssen das Flag --target-database-move-configs und die KMS-Schlüsselwerte in den Befehl einfügen oder eine JSON- bzw. YAML-Datei mit den erforderlichen KMS-Schlüsseln konfigurieren.

Verwendungshinweise:

  • Wenn Sie mehrere Datenbanken mit aktivierten CMEKs in der zu verschiebenden Instanz haben, müssen Sie für jede von ihnen --target-database-move-configs angeben. Sie können dieselben Schlüssel für jede Datenbank verwenden, müssen sie aber für jede Datenbank mit aktivierten CMEKs angeben.
  • Die Schlüssel müssen alle Regionen in der Zielinstanzkonfiguration abdecken. Wenn sich die Zielinstanzkonfiguration beispielsweise in nam3 befindet, müssen Sie Schlüssel in regional-us-east4, regional-us-east1 und regional-us-central1 festlegen.
  • Sie können beim Verschieben der Instanz keine KMS-Schlüssel für Datenbanken festlegen, für die keine CMEKs aktiviert sind.
  • CMEK-Schlüssel dürfen in der Quell- oder Zielinstanzkonfiguration weder deaktiviert noch gelöscht werden, während Sie die Instanz verschieben. Die Migration wird nicht fortgesetzt, wenn Sie es versuchen.
gcloud spanner instances move INSTANCE_ID \
  --target-config=TARGET_CONFIG \
  --target-database-move-configs=^:^database-id=DATABASE_ID_1:kms-key-names=KMS_KEY_1[, KMS_KEY_2 ... ] \
  [--target-database-move-configs=^:^database-id=DATABASE_ID_2:kms-key-names=KMS_KEY_1 ... ]

oder

gcloud spanner instances move INSTANCE_ID \
  --target-config=TARGET_CONFIG \
  --target-database-move-configs=CONFIG_FILE_PATH

Konfigurieren Sie die Datei CONFIG_FILE_PATH mit Ihren Datenbank-IDs und KMS-Schlüsseln. Das folgende Beispiel für eine Konfigurationsdatei enthält die KMS-Schlüssel für die zwei Datenbanken database-1 und database-2 mit identischen Schlüsseln in regional-us-east4, regional-us-east1 und regional-us-central1, um alle Regionen in nam3 abzudecken.

[
  {
    database-id: database-1,
    kms-key-names:
      "projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
  },
  {
    database-id: database-2,
    kms-key-names:
      "projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
  },
]

So überwachen Sie den Fortschritt von Verschiebe- und Abbruchvorgängen für Instanzen

Sie können gcloud spanner operations describe verwenden oder ein benutzerdefiniertes Cloud Monitoring-Dashboard erstellen, um beim Verschieben einer Instanz den Fortschritt zu überwachen.

Fortschritt von Verschiebe- und Abbruchvorgängen ansehen

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

  1. Rufen Sie die Vorgangs-ID des Vorgangs zum Verschieben der Instanz ab, indem Sie Folgendes ausführen:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Ersetzen Sie Folgendes:

    • INSTANCE_ID: die permanente Kennung der zu verschiebenden Instanz.

    In der Ausgabe wird eine Liste von Vorgängen mit langer Ausführungszeit angezeigt, einschließlich des Vorgangs zum Verschieben der Instanz.

  2. Führen Sie den Befehl gcloud spanner operations describe aus, um den Fortschritt in Prozent sowie den Status anzusehen:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Ersetzen Sie Folgendes:

    • OPERATION_ID: die Vorgangs-ID des zu prüfenden Vorgangs zum Verschieben der Instanz.
    • INSTANCE_ID: die Instanz-ID der zu prüfenden Instanz.

Vorgang zum Verschieben einer Instanz überwachen

Sie können ein benutzerdefiniertes Cloud Monitoring-Dashboard erstellen, um Messwerte während des Verschiebens der Instanz anzuzeigen und zu überwachen. Das Verschieben ist ein Vorgang mit langer Ausführungszeit, der sich möglicherweise auf den Dienst auswirkt.

Die Diagramme Speicher insgesamt und Datenbankspeicher insgesamt nach Datenbanken im Dashboard sind hilfreich, um den Fortschritt beim Verschieben zu beobachten. Sie können sehen, wie der belegte Speicher in der Quellkonfiguration allmählich abnimmt, während in der Zielkonfiguration immer mehr Speicher belegt wird.

Google Cloud Console

  1. Laden Sie die Datei move-instance-dashboard.json herunter. Diese Datei enthält die Informationen, die zum Einfügen von Daten in ein benutzerdefiniertes Dashboard in Monitoring erforderlich sind.
  2. Öffnen Sie in der Google Cloud Console die Seite Dashboards :

    Zu Dashboards

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

  3. Klicken Sie auf der Seite mit der Dashboardübersicht auf Dashboard erstellen.
  4. Klicken Sie in der Symbolleiste des Dashboards auf das Drop-down-Menü Dashboardeinstellungen. Wählen Sie dann JSON und anschließend 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 auf das Dashboard anzuwenden. Wenn Sie dieses Dashboard nicht verwenden möchten, kehren Sie zur Seite mit der Dashboardübersicht zurück.
  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 beim Verschieben der Instanz zu überwachen.

gcloud CLI

  1. Laden Sie die Datei move-instance-dashboard.json herunter. Diese Datei enthält die Informationen, die zum Einfügen von Daten in ein benutzerdefiniertes Dashboard 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 das Verschieben einer Instanz ab

Sie können das Verschieben einer Instanz nur abbrechen, wenn dieser Vorgang noch läuft. Wenn Sie einen bereits abgeschlossenen Vorgang zum Verschieben einer Instanz rückgängig machen möchten, müssen Sie einen neuen Verschiebevorgang starten.

Mit gcloud spanner operations cancel können Sie Vorgänge zum Verschieben von Instanzen abbrechen. Der Abbruch erfolgt nicht sofort, sondern dauert ungefähr so lange wie die seit Beginn des Verschiebevorgangs verstrichene Zeit. Das liegt daran, dass Daten zurück in die Quellinstanzkonfiguration verschoben werden müssen.

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

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

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

    Ersetzen Sie Folgendes:

    • INSTANCE_ID: die permanente Kennung der zu verschiebenden Instanz.

    Die Ausgabe enthält eine Liste der laufenden Vorgänge zum Verschieben von Instanzen.

  2. Führen Sie den Befehl gcloud spanner operations cancel aus, um das Verschieben der Instanz abzubrechen:

    gcloud spanner operations cancel OPERATION_ID
    

    Ersetzen Sie Folgendes:

    • OPERATION_ID: die Vorgangs-ID des abzubrechenden Vorgangs zum Verschieben der Instanz.

Weitere Informationen