Déplacer une instance

Cette page décrit comment déplacer une instance dans Spanner.

Vous pouvez déplacer votre instance Spanner depuis n'importe quelle configuration d'instance vers une autre configuration d'instance, y compris entre des configurations régionales, birégionales et multirégionales. Le déplacement de votre instance n'entraîne pas de temps d'arrêt, et Spanner continue de fournir les garanties de transaction habituelles pendant le déplacement, y compris une cohérence forte.

Vous pouvez également déplacer votre instance de sa configuration d'instance source vers une configuration d'instance personnalisée (par exemple, une configuration de base nam3 avec une réplique en lecture seule us-west2). Étant donné que vous ne pouvez pas mettre à jour la topologie des configurations d'instance existantes, vous devez d'abord créer une configuration d'instance personnalisée avec la topologie souhaitée. Après avoir créé la nouvelle configuration d'instance personnalisée, vous pouvez déplacer votre instance de la configuration d'instance source vers la nouvelle configuration d'instance personnalisée.

Pourquoi déplacer votre instance Spanner ?

Voici quelques avantages à migrer votre instance :

  • Augmenter la disponibilité : obtenez une disponibilité de 99,999 % sans temps d'arrêt après avoir migré d'une région vers une configuration birégionale ou multirégionale.
  • Réduire la latence : réduisez la latence et augmentez la couverture géographique avec des répliques en lecture seule supplémentaires en passant d'une région à une région birégionale ou multirégionale, ou d'une région multirégionale à une autre.
  • Réduire les coûts : réduisez les coûts horaires en passant d'une configuration birégionale ou multirégionale à une configuration régionale.
  • Cohébergez la base de données : cohébergez la base de données Spanner avec l'application cliente en déplaçant l'instance vers un emplacement plus optimisé.

Tarifs

Lorsque vous déplacez une instance, les configurations des instances source et de destination sont soumises à des frais de calcul et de stockage horaires. Une fois le déplacement terminé, le stockage de l'instance vous est facturé selon la configuration de destination.

Si vous déplacez votre instance vers une nouvelle configuration d'instance régionale, birégionale ou multirégionale, des frais de transfert de données sortantes peuvent s'appliquer. Pour en savoir plus, consultez la page Tarifs de Spanner.

Limites

  • Pour déplacer votre instance, elle doit comporter au moins un nœud (1 000 unités de traitement).
  • Vous ne pouvez pas déplacer votre instance entre des projets et des comptes Google Cloud .
  • Vous ne pouvez pas déplacer directement une instance qui utilise l'édition Standard d'une configuration d'instance régionale vers une configuration d'instance birégionale ou multirégionale. Vous devez d'abord mettre à niveau l'édition de votre instance vers l'édition Enterprise Plus, puis déplacer l'instance.
  • Si vous avez des requêtes actives utilisant un point de terminaison de service régional sur l'une des ressources d'instance, le déplacement de l'instance a un impact sur toutes les requêtes qui utilisent le point de terminaison régional, car l'application régionale bloque l'accès aux instances multirégionales. Les requêtes qui utilisent un point de terminaison global ne sont pas concernées.
  • Les sauvegardes Spanner sont spécifiques à une configuration d'instance et ne sont pas incluses lors du déplacement d'une instance. Pour en savoir plus, consultez Sauvegardes.
  • Les API suivantes sont désactivées lors du déplacement d'une instance :
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (désactivé si default_leader est spécifié dans la requête)
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • Si une base de données a une région principale par défaut modifiée, la sélection est conservée si elle désigne une région de lecture/écriture dans la configuration de l'instance de destination et que cette configuration est multirégionale. Si la configuration de destination est régionale ou n'inclut pas la région de lecture/écriture nommée, la sélection du leader par défaut est effacée.
  • Le déplacement d'une instance modifie l'attribut de configuration de l'instance. Si vous gérez vos ressources Spanner par le biais de l'automatisation, assurez-vous de vous préparer et de résoudre les éventuelles incohérences.
    • Par exemple, si vous utilisez Terraform pour gérer vos instances et bases de données Spanner, et que vous activez terraform apply --auto-approve pour synchroniser vos ressources, toutes les instances et ressources enfants sont supprimées lorsque nous déplaçons l'instance. Mettez à jour la configuration en conséquence pour éviter la suppression et la perte de données. Pour en savoir plus sur la commande apply, consultez les options d'application Terraform.
  • Pendant le déplacement de l'instance, les métriques et graphiques de surveillance Spanner peuvent afficher des données dans les configurations d'instance source et de destination, ou ne refléter les performances que dans une seule configuration d'instance.
  • Si vous avez configuré l'outil Autoscaler Open Source, vous n'avez pas besoin de le désactiver. L'opération échoue, car InstanceAdmin.UpdateInstance (utilisé pour les modifications de nœuds et d'unités de traitement) est désactivé.
  • Vous ne pouvez pas déplacer une instance si la fonctionnalité Spanner Managed Autoscaler est activée. Pour déplacer l'instance, vous devez désactiver l'autoscaler géré, déplacer l'instance, puis réactiver l'autoscaler géré.
    • De plus, si vous utilisez l'autoscaling, vous devez provisionner suffisamment de nœuds pour l'utilisation maximale du processeur, conformément aux recommandations maximales indiquées, puis désactiver l'autoscaling avant de déplacer l'instance.
  • Vous ne pouvez pas déplacer une instance Spanner en essai sans frais. Vous pouvez déplacer l'instance après avoir migré vers une instance payante.

Considérations sur les performances

Lorsqu'une instance est déplacée, elle présente des latences de lecture/écriture plus élevées et un taux d'abandon des transactions plus élevé aussi. L'utilisation du processeur peut atteindre 100 % pendant le déplacement, car celui-ci est effectué à l'aide du processeur de secours provisionné par l'utilisateur. Toutefois, le déplacement d'une instance n'entraîne aucun temps d'arrêt. Le temps nécessaire pour déplacer une instance dépend de divers facteurs, y compris la taille des bases de données, le nombre de nœuds et le type de déplacement (par exemple, d'une région à une multirégion).

Après le déplacement d'une instance, ses performances varient en fonction des détails de sa configuration. Par exemple, les configurations birégionales et les configurations multirégionales présentent généralement une latence en écriture plus élevée et une latence en lecture plus faible que les configurations régionales.

Sauvegardes

Lorsque vous déplacez une instance, les sauvegardes de l'instance source ne sont pas automatiquement déplacées vers la nouvelle configuration de destination. Le déplacement de l'instance est annulé si des sauvegardes existent dans la configuration de l'instance source lorsque vous lancez le déplacement de l'instance. Il est important de copier vos sauvegardes et de réfléchir à votre plan de récupération des données avant de déplacer votre instance.

Si votre instance source contient des sauvegardes que vous devez conserver, nous vous recommandons de copier vos sauvegardes vers la configuration de l'instance de destination et vers une autre instance ayant la même configuration que l'instance source à déplacer. pour que :

  • Vous pouvez copier vos sauvegardes dans la configuration de l'instance de destination immédiatement après le déplacement de l'instance.
  • Si vous devez annuler le déplacement de l'instance, vous pouvez également restaurer rapidement vos sauvegardes à partir de l'instance ayant la même configuration que l'instance source.

Une fois que vous avez copié vos sauvegardes sur une autre instance, vous devez supprimer toutes les sauvegardes existantes dans l'instance source avant de pouvoir déplacer l'instance. Ensuite, une fois le déplacement de l'instance terminé, vous disposez déjà d'une copie de la sauvegarde dans la configuration de destination. Vous pouvez également créer une sauvegarde.

Pour en savoir plus sur la copie des sauvegardes et les coûts associés, consultez Copier une sauvegarde.

Déplacer une instance

Vous pouvez déplacer une instance avec la console Cloud Shell et la gcloud CLI à l'aide des commandes gcloud. Google Cloud

Prérequis

Avant de déplacer la configuration de votre instance, assurez-vous d'avoir lu les sections Limites et Considérations relatives aux performances. Ensuite, procédez comme suit :

  1. Vérifiez que vous disposez de l'autorisation IAM spanner.instances.update sur l'instance source.
  2. Le cas échéant, déplacez vos instances hors production (telles que les instances de test et de préproduction) avant de déplacer vos instances de production. Cela vous aidera à évaluer et à comprendre l'impact sur les performances des charges de travail lors du déplacement d'une instance.
  3. Lorsque vous déplacez une instance Spanner, le processus de déplacement supprime les tags d'instance que vous avez créés dans Data Catalog. Pour conserver vos tags, vous devez les exporter avant la migration et les importer après la migration. Pour en savoir plus, consultez Exporter et importer des tags.

Pour suivre les bonnes pratiques, respectez également les consignes suivantes :

  • Testez les charges de travail liées aux performances dans des instances hors production de la configuration de l'instance de destination avant de déplacer votre instance de production. Essayez de déplacer une instance de préproduction semblable à votre instance de production pour avoir une idée du temps nécessaire pour déplacer votre instance de production.
  • Vérifiez qu'il n'y a pas de hotspots dans vos bases de données à l'aide de Key Visualizer.
  • Vérifiez que vous disposez d'un quota de nœuds suffisant dans la configuration de l'instance de destination pour prendre en charge le pic d'utilisation attendu de l'instance. Pour en savoir plus, consultez Quotas et limites de Spanner.
  • Assurez-vous que l'utilisation maximale du processeur de votre instance est inférieure à 40 % pour la configuration de l'instance que vous avez déplacée, et que la quantité de stockage par nœud est inférieure à 1 Tio.
  • N'apportez aucune modification à l'instance pendant le transfert. Cela inclut la modification du nombre de nœuds de l'instance, la modification des schémas de base de données, la création ou la suppression de bases de données, ou la création ou la suppression de sauvegardes.

Si vous déplacez votre instance en suivant ces recommandations, le déplacement est généralement effectué sous 24 heures. Toutefois, en fonction de la charge de travail de l'application, le temps d'exécution peut être plus ou moins long.

Déplacer une instance

Console Google Cloud

  1. Accédez à la page Instances dans la console Google Cloud .

    Instances

  2. Sélectionnez l'instance que vous souhaitez déplacer.

  3. Sur la page "Présentation de l'instance", à côté de Configuration, cliquez sur Modifier Déplacer l'instance vers une nouvelle configuration.

  4. Dans le volet Déplacer la base de données vers une nouvelle configuration, sélectionnez la nouvelle configuration d'instance pour votre instance.

  5. Cliquez sur Enregistrer.

CLI gcloud

Utilisez la commande gcloud spanner instances move pour déplacer l'instance.

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

Remplacez les éléments suivants :

  • INSTANCE_ID : identifiant permanent de l'instance que vous souhaitez déplacer.
  • TARGET_CONFIG : identifiant permanent de la configuration d'instance vers laquelle vous souhaitez déplacer votre instance. Nouvel emplacement géographique de votre instance. Il peut s'agir d'une configuration d'instance régionale, birégionale ou multirégionale (par exemple, nam3, us-central1 ou custom-nam3-us-west2).

Par exemple, pour déplacer votre instance test-instance de sa configuration d'instance actuelle vers nam3, exécutez la commande suivante :

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

Facultatif : Si vous souhaitez ajouter une instance répliquée en lecture seule dans la région us-west2 à la configuration de l'instance de base dans nam3, procédez comme suit :

  1. Cloner la configuration de base et ajouter l'instance répliquée en lecture seule à la nouvelle configuration d'instance personnalisée custom-nam3-us-west2 :

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Déplacez votre instance test-instance de sa configuration d'instance actuelle vers cette nouvelle configuration d'instance custom-nam3-us-west2 :

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

Facultatif : Déplacer une instance avec des bases de données compatibles CMEK

Utilisez la commande gcloud spanner instances move pour déplacer une instance avec des bases de données compatibles CMEK. Vous devez inclure l'indicateur --target-database-move-configs et les valeurs de clé KMS dans la commande, ou configurer un fichier JSON ou YAML avec les clés KMS nécessaires.

Remarques concernant l'utilisation :

  • Si l'instance que vous souhaitez déplacer contient plusieurs bases de données compatibles avec CMEK, vous devez spécifier -—target-database-move-configs pour chacune d'elles. Vous pouvez utiliser les mêmes clés pour chaque base de données, mais vous devez les spécifier pour chaque base de données compatible avec CMEK.
  • Vos clés doivent couvrir toutes les régions de la configuration de l'instance de destination. Par exemple, si la configuration de votre instance de destination se trouve dans nam3, vous devez définir des clés dans us-east4, us-east1 et us-central1.
  • Vous ne pouvez pas définir de clés KMS pour les bases de données qui ne sont pas compatibles avec les CMEK lorsque vous déplacez l'instance.
  • Vous ne devez pas désactiver ni détruire les clés CMEK dans la configuration de l'instance source ou de destination lorsque vous déplacez l'instance. La migration ne se poursuit pas si vous essayez.
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 ... ]

ou

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

Configurez le fichier CONFIG_FILE_PATH avec vos ID de base de données et vos clés KMS. L'exemple de fichier de configuration suivant contient les clés KMS pour deux bases de données, database-1 et database-2, avec les mêmes clés dans us-east4, us-east1 et us-central1 pour couvrir toutes les régions de nam3.

[
  {
    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]",
  },
]

Surveiller la progression du déplacement et de l'annulation d'instances

Vous pouvez utiliser gcloud spanner operations describe ou créer un tableau de bord Cloud Monitoring personnalisé pour surveiller la progression du déplacement d'une instance.

Afficher la progression des opérations de transfert et d'annulation

Pour suivre la progression d'une opération de déplacement ou d'annulation de déplacement d'instance, utilisez la commande gcloud spanner operations describe. Cette commande nécessite l'ID d'opération du déplacement d'instance en cours.

  1. Obtenez l'ID d'opération de déplacement de votre instance en exécutant la commande suivante :

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant permanent de l'instance que vous souhaitez déplacer.

    Le résultat affiche une liste des opérations de longue durée, y compris l'opération de déplacement de l'instance.

  2. Exécutez la commande gcloud spanner operations describe pour afficher le pourcentage de progression et l'état :

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Remplacez les éléments suivants :

    • OPERATION_ID : ID de l'opération de déplacement d'instance que vous souhaitez vérifier.
    • INSTANCE_ID : ID de l'instance que vous souhaitez vérifier.

Surveiller une opération de déplacement d'instance

Vous pouvez créer un tableau de bord Cloud Monitoring personnalisé pour afficher et surveiller les métriques pendant le déplacement de l'instance, une opération de longue durée qui peut avoir des conséquences sur le service.

Les graphiques Stockage total et Stockage total de la base de données par base de données du tableau de bord sont utiles pour suivre la progression du transfert. Vous pouvez constater que l'espace de stockage dans la configuration source diminue progressivement, tandis que celui de la configuration de destination augmente.

Console Google Cloud

  1. Téléchargez le fichier move-instance-dashboard.json. Ce fichier contient les informations nécessaires pour remplir un tableau de bord personnalisé dans Monitoring.
  2. Dans la console Google Cloud , accédez à la page  Tableaux de bord :

    Accéder à la page Tableaux de bord

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  3. Sur la page Dashboards Overview (Aperçu des tableaux de bord), cliquez sur Create dashboard (Créer un tableau de bord).
  4. Dans la barre d'outils du tableau de bord, cliquez sur le menu déroulant Paramètres du tableau de bord. Sélectionnez ensuite JSON, puis Éditeur JSON.
  5. Dans le volet Éditeur JSON, copiez le contenu du fichier move-instance-dashboard.json que vous avez téléchargé et collez-le dans l'éditeur.
  6. Pour appliquer vos modifications au tableau de bord, cliquez sur Appliquer les modifications. Si vous ne souhaitez pas utiliser ce tableau de bord, revenez à la page "Présentation des tableaux de bord".
  7. Une fois le tableau de bord créé, cliquez sur Ajouter un filtre. Sélectionnez ensuite project_id ou instance_id pour surveiller la progression du déplacement de votre instance.

CLI gcloud

  1. Téléchargez le fichier move-instance-dashboard.json. Ce fichier contient les informations nécessaires pour remplir un tableau de bord personnalisé dans Monitoring.
  2. Pour créer un tableau de bord dans un projet, utilisez la commande gcloud monitoring dashboards create :

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

    Pour en savoir plus, consultez la documentation de référence sur gcloud monitoring dashboards create.

Annuler le déplacement d'une instance

Vous ne pouvez annuler que le déplacement d'une instance qui est toujours en cours. Si vous souhaitez annuler un déplacement d'instance déjà effectué, vous devez en lancer un nouveau.

Vous pouvez utiliser gcloud spanner operations cancel pour annuler les opérations de déplacement d'instance. L'annulation n'est pas instantanée et prend à peu près le même temps que celui écoulé depuis le début du déplacement. En effet, les données doivent être déplacées vers la configuration de l'instance source.

Cette commande nécessite l'ID d'opération du déplacement d'instance en cours.

  1. Obtenez l'ID de l'opération en exécutant la commande suivante :

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

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant permanent de l'instance que vous souhaitez déplacer.

    Le résultat affiche une liste des opérations de déplacement d'instances en cours.

  2. Exécutez la commande gcloud spanner operations cancel pour annuler le déplacement de l'instance :

    gcloud spanner operations cancel OPERATION_ID
    

    Remplacez les éléments suivants :

    • OPERATION_ID : ID de l'opération de déplacement d'instance que vous souhaitez annuler.

Étapes suivantes