Déplacer une instance

Cette page décrit le déplacement d'une instance dans Spanner.

Vous pouvez déplacer votre instance Spanner de n'importe quelle configuration d'instance vers n'importe quelle 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 transactions habituelles, y compris une cohérence forte, pendant le déplacement.

Vous pouvez également déplacer votre instance de la configuration d'instance source vers une configuration d'instance personnalisée (par exemple, une configuration de base nam3 avec une instance répliquée us-west2 en lecture seule). Comme 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 de votre choix. Après avoir créé la 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 ?

Déplacer votre instance présente les avantages suivants:

  • Augmentez la disponibilité: obtenez une disponibilité de 99,999% sans temps d'arrêt après avoir effectué un déplacement régional vers un emplacement birégional ou multirégional.
  • Réduction de la latence: réduisez la latence et augmentez la couverture géographique avec des instances répliquées supplémentaires en lecture seule, via un déplacement régional vers birégional, multirégional ou multirégional.
  • Réduction des coûts: réduisez vos coûts horaires en passant d'une configuration birégionale ou multirégionale à une configuration régionale.
  • Cohéberger la base de données: cohéberger la base de données Spanner avec l'application cliente en déplaçant l'instance vers un emplacement plus optimisé.

Tarification

Lorsque vous déplacez une instance, les configurations de l'instance 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é dans 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 vous être facturés. Pour en savoir plus, consultez la page Tarifs de Spanner.

Limites

  • Pour que vous puissiez déplacer votre instance, celle-ci doit comporter au minimum 1 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 une instance en essai sans frais Spanner. Vous pouvez déplacer l'instance après l'avoir mise à niveau vers une instance payante.
  • 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 d'instance a une incidence sur toutes les requêtes qui utilisent le point de terminaison régional, car l'application régionale bloque l'accès aux instances interrégionales. Les requêtes qui utilisent un point de terminaison global ne sont pas affectées.
  • Les sauvegardes Spanner sont spécifiques à la configuration d'une instance et ne sont pas incluses lors du déplacement d'une instance. Pour en savoir plus, consultez la section 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.CopyBackup
  • Vous ne pouvez pas déplacer des instances contenant des bases de données pour lesquelles les CMEK sont activés.
  • Si une base de données possède une instance maître par défaut modifiée, la sélection est conservée si elle nomme une région en 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 de la variante optimale par défaut est effacée.
  • Le déplacement d'une instance modifie son attribut de configuration. Si vous gérez vos ressources Spanner par automatisation, veillez à préparer et à corriger les incohérences qui pourraient survenir.
    • 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 lors du déplacement de l'instance. Mettez à jour la configuration en conséquence pour éviter toute suppression et perte de données. Pour en savoir plus sur la commande apply, consultez Options d'application de Terraform.
  • Pendant le déplacement de l'instance, les métriques et les graphiques de surveillance Spanner peuvent afficher des données à la fois dans les configurations de l'instance source et de destination, ou ne refléter les performances que d'une seule configuration d'instance.
  • Si vous avez configuré l'outil d'autoscaler Open Source, il n'est pas nécessaire de le désactiver. Elle échoue, car InstanceAdmin.UpdateInstance (utilisé pour les modifications des nœuds et des unités de traitement) est désactivé.
  • Vous ne pouvez pas déplacer une instance si la fonctionnalité d'autoscaler géré Spanner est activée sur celle-ci. 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 une utilisation maximale du processeur conformément aux recommandations maximales indiquées, puis désactiver l'autoscaling avant de déplacer l'instance.

Considérations sur les performances

Lorsqu'une instance est déplacée, elle subit des latences de lecture/écriture plus élevées et un taux d'abandon de transaction plus élevé. L'utilisation du processeur lors du déplacement peut atteindre 100 %, car le déplacement de l'instance 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 au déplacement d'une instance dépend de plusieurs facteurs, y compris de la taille des bases de données, du nombre de nœuds et du type de déplacement (par exemple, régional vers multirégional).

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 multirégionales présentent généralement une latence d'écriture plus élevée et une latence de 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 définir votre plan de récupération de données avant de déplacer votre instance.

Si votre instance source comporte des sauvegardes que vous devez conserver, nous vous recommandons de les copier dans la configuration de l'instance de destination et sur une autre instance possédant la même configuration que l'instance source à déplacer. Ainsi:

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

Après avoir 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 de sauvegardes et sur les coûts associés, consultez Copier une sauvegarde.

Déplacer une instance

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

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 d'un déplacement d'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 le déplacement et les importer après le déplacement. Pour en savoir plus, consultez la page Exporter et importer des tags.

Suivez également les bonnes pratiques ci-dessous:

  • Testez les charges de travail liées aux performances sur des instances hors production dans 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 afin d'avoir une idée du temps qu'il faudra pour la déplacer.
  • Vérifiez que vos bases de données ne contiennent pas de hotspots à 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 l'utilisation maximale prévue de l'instance. Pour en savoir plus, consultez la page Quotas et limites Spanner.
  • Assurez-vous que le pic d'utilisation du processeur de votre instance est inférieur à 40% pour la configuration d'instance que vous avez déplacée et que la quantité de stockage par nœud est inférieure à 1 tébioctet (Tio).
  • N'apportez aucune modification à l'instance pendant le déplacement. Cela inclut la modification du nombre de nœuds d'instance, la modification des schémas de base de données, la création ou la suppression de bases de données, et la création ou la suppression de sauvegardes.

Si vous déplacez votre instance conformément à ces recommandations, le déplacement se termine généralement sous 24 heures. Toutefois, en fonction de la charge de travail de l'application, ce délai peut être plus ou moins long.

Déplacer une instance

Console Google Cloud

  1. Cliquez sur Icône Activer Cloud Shell Activer Cloud Shell en haut de la console Google Cloud.

    Une session Cloud Shell s'ouvre dans un nouveau cadre en bas de la console Google Cloud et affiche une invite de ligne de commande. L'initialisation de la session peut prendre quelques secondes.

  2. 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 de l'instance vers laquelle vous souhaitez déplacer l'instance. Nouvel emplacement géographique de votre instance. Il peut s'agir d'une configuration d'instance régionale, birégionale, multirégionale ou personnalisée (par exemple, nam3, us-central1 ou custom-nam3-us-west2).

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

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

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

  1. Clonez la configuration de base et ajoutez l'instance répliquée en lecture seule:

    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
    

gcloud CLI

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 de l'instance vers laquelle vous souhaitez déplacer l'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 l'instance test-instance de sa configuration actuelle vers nam3, exécutez la commande suivante:

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

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

  1. Clonez la configuration de base et ajoutez l'instance répliquée en lecture seule:

    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
    

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

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

Afficher la progression des opérations de déplacement 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 de l'opération de 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 d'opérations de longue durée, y compris l'opération de déplacement d'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. Il s'agit d'une opération de longue durée ayant des conséquences potentielles 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 permettent de surveiller la progression du déplacement. Vous pouvez constater que l'espace de stockage de 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 à 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 la liste déroulante Paramètres du tableau de bord. Sélectionnez ensuite JSON, suivi de Éditeur JSON.
  5. Dans le volet de l'é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 "Vue d'ensemble 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.

gcloud CLI

  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 un déplacement d'instance

Vous ne pouvez annuler qu'un déplacement d'instance en cours. Si vous souhaitez annuler un déplacement d'instance déjà terminé, vous devez lancer un nouveau déplacement.

gcloud spanner operations cancel vous permet d'annuler des opérations de déplacement d'instance. L'annulation n'est pas instantanée et prend à peu près le même temps que le temps é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 de l'opération de déplacement d'instance en cours.

  1. Obtenez l'ID d'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 la liste des opérations de déplacement d'instance 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 à annuler.

Étapes suivantes