Présentation de la migration

Ce document décrit le processus de migration de votre base de données vers Spanner. Nous décrivons les étapes de migration et les outils que nous recommandons pour chaque étape, en fonction de votre base de données source et d'autres facteurs. Les outils recommandés incluent les produits Google Cloud, ainsi que des outils commerciaux et Open Source. Ensemble, ces outils vous aident à accélérer des migrations et réduire les risques.

Toute migration Spanner implique les étapes principales suivantes:

  1. Évaluez la complexité de votre migration.
  2. Migrez votre schéma.
  3. Charger des exemples de données
  4. Migrez votre application.
  5. Testez et ajustez vos performances.
  6. Migrez les données.
  7. Validez la migration.
  8. Configurer des mécanismes de basculement et de basculement.

Au cours de ces étapes, votre plan de migration peut varier considérablement en fonction de différents facteurs telles que la source et la taille de la base de données, les temps d'arrêt, le code d'application la complexité, le schéma de segmentation, les fonctions ou transformations personnalisées et le basculement et de réplication.

Outils de migration

Nous vous recommandons d'utiliser les outils suivants pour vous aider lors des différentes étapes de votre en fonction de votre base de données source et d'autres facteurs. Certains outils uniquement certaines bases de données sources. Pour certaines étapes du processus, aucun outil Vous devez donc effectuer ces étapes manuellement.

  • Outil de migration Spanner est un outil Open Source qui permet d'effectuer des évaluations de base, de convertir des schémas et la migration de données.

  • L'évaluation de la migration de base de données (DMA) propose une évaluation de base pour migrer PostgreSQL vers Spanner.

  • Datastream est un service Google Cloud qui vous permet de lire des événements de capture des données modifiées (CDC, Change Data Capture) et des données groupées à partir d'une base de données source, puis d'écrire dans une destination spécifiée.

  • Dataflow est un service Google Cloud qui vous aide à écrire une grande quantité de données dans Spanner efficacement en utilisant les modèles.

  • La migration de données groupée est un modèle Dataflow qui vous permet de migrer de grands ensembles de données MySQL directement vers Spanner.

  • La migration avec un temps d'arrêt minimal utilise Datastream et Dataflow pour migrer :

    • Données existantes dans votre base de données source.
    • Flux de modifications apportées à votre base de données source lors de la migration.
  • L'outil de validation des données est une méthode de validation des données normalisée créée par Google et prise en charge par la communauté Open Source. Vous pouvez intégrer la TVP à vos produits Google Cloud.

Outils de migration pour les bases de données sources MySQL

Si votre base de données source est MySQL, vous pouvez effectuer une partie de la migration initiale à l'aide de fichiers de vidage MySQL. Vous devez vous connecter directement à votre base de données MySQL source en cours d'exécution pour effectuer une migration de production.

Le tableau suivant recommande des outils de migration en fonction de l'étape de migration et selon que vous utilisez un fichier de dump ou que vous connectez directement votre base de données source :

Étape de migration Fichier de vidage Connexion directe à la base de données source
Évaluation Utilisez SMT avec mysqldump. Utilisez SMT avec mysqldump.
Conversion de schéma Utilisez SMT avec mysqldump. Utilisez SMT pour configurer et convertir le schéma.
Chargement d'un échantillon de données
  • Si la taille de votre exemple de fichier de dump est inférieure à 100 Go, utilisez SMT en mode démonstration de faisabilité.
  • Si votre exemple de fichier de dump dépasse 100 Go, exportez-le vers Cloud SQL et effectuez une migration groupée.
  • Si votre exemple de fichier de dump est au format CSV, Avro ou Parquet, chargez-le dans BigQuery et copiez-le dans Spanner à l'aide d'un processus ETL inversé.
Effectuez une migration groupée.
Migration de données Non applicable Effectuez une migration groupée, puis effectuez une migration avec un temps d'arrêt minimal.
Validation des données Non applicable Utilisez la DVT.
Configuration du basculement Non applicable Utilisez SMT pour la réplication inverse.

Outils de migration pour les bases de données sources PostgreSQL

Si votre base de données source utilise PostgreSQL, vous pouvez effectuer certaines les étapes de la migration à l'aide d'un fichier de dump PostgreSQL. Vous devez vous connecter directement à votre base de données PostgreSQL source en cours d'exécution pour terminer la migration.

Le tableau suivant recommande des outils de migration en fonction de l'étape de migration et du fait que vous utilisiez un fichier de vidage ou que vous vous connectiez directement à partir de votre base de données source :

Étape de migration Fichier de vidage Connexion directe à la base de données source
Évaluation Utilisez SMT avec pg_dump. Utilisez DMA.
Conversion de schéma Utilisez SMT avec pg_dump. Utilisez SMT pour configurer et convertir le schéma.
Chargement d'un échantillon de données Effectuez une migration avec temps d'arrêt minimal.
Migration de données Non applicable Effectuez une migration avec temps d'arrêt minimal.
Validation des données Non applicable Utilisez DVT.
Basculement Non applicable Non applicable

Évaluer la complexité de votre migration

Pour évaluer la portée et la complexité de votre migration et planifier votre approche, vous devez collecter des données sur votre base de données source, y compris les éléments suivants :

  • Modèles de requêtes
  • Quantité de logique d'application dépendant des fonctionnalités de base de données telles que les procédures stockées et les déclencheurs
  • Matériel requis
  • Coût total de possession (TCO)

Migrer votre schéma

Avant de migrer un schéma vers un schéma Spanner, évaluez la compatibilité entre les schémas et optimisez votre schéma pour Spanner. Par exemple, vous pouvez modifier des clés, supprimer ou ajouter des index, ou ajouter ou supprimer des colonnes de tables existantes. Pour optimiser votre schéma pour Spanner, consultez Bonnes pratiques pour la conception de schémas et Recommandations les principales stratégies de migration.

L'outil de migration Spanner, un outil Open Source géré par la communauté créé par des développeurs Google, crée automatiquement un schéma Spanner à partir du schéma de votre base de données source. Vous pouvez personnaliser le schéma à l'aide de l'assistant de schéma de l'outil de migration Spanner.

L'outil de migration Spanner ingère le schéma et les données à partir de l'un des emplacements suivants :

  • Fichier de dump à partir d'un emplacement local ou de Cloud Storage (MySQL, PostgreSQL, CSV)
  • Directement à partir de la base de données source (MySQL, PostgreSQL)

L'outil de migration Spanner effectue les fonctions suivantes pour les évaluations, recommandations et migrations de schémas :

  • Évaluation de la compatibilité des types de données et recommandations
  • Modification et recommandations concernant la clé primaire
  • Modification de l'index secondaire et recommandations
  • Entrelacement de la modification de tableaux et des recommandations
  • Recommandations générales pour la conception de schémas Spanner
  • Gestion des versions de schémas
  • Modification collaborative de schéma

Pour en savoir plus sur les migrations de schémas avec l'outil de migration Spanner, consultez le fichier README.md de l'outil de migration Spanner.

Vous pouvez également utiliser l'outil de migration Spanner pour migrer des données.

Charger des exemples de données

Après avoir créé un schéma compatible avec Spanner, vous pouvez préparer votre base de données à tester à l'aide d'échantillons de données. Vous pouvez utiliser le workflow ETL inversé BigQuery pour charger l'exemple de données. Pour en savoir plus, consultez la section Charger des exemples de données.

Migrer votre application

Une migration de base de données nécessite différents pilotes et bibliothèques, ainsi qu'une compensation pour les fonctionnalités que Spanner n'est pas en mesure de prendre en charge. À optimiser en fonction des points forts de Spanner, vous devrez peut-être modifier votre code, vos flux d'application et votre architecture.

Voici quelques-unes des modifications requises pour migrer votre application vers Spanner:

  • Spanner n'est pas compatible avec l'exécution de code utilisateur au niveau de la base de données. Vous devez donc déplacer toutes les procédures et tous les déclencheurs stockés au niveau de la base de données dans l'application.
  • Utilisez les bibliothèques clientes Spanner et les mappeurs objet-relationnels (ORM). Pour en savoir plus, consultez la section Présentation des API, des bibliothèques clientes et des pilotes ORM.
  • Si vous devez traduire des requêtes, faites-le manuellement ou utilisez d'autres outils tiers.
  • Prenez note du LMD partitionné, transactions en lecture seule, codes temporels de commit, et les horodatages comment optimiser les performances des applications.

Vous devrez peut-être également modifier la gestion des transactions. Il n'y a aucun outil disponible pour vous aider. Vous devez donc effectuer cette étape manuellement. Gardez à l'esprit les points suivants :

  • Le nombre maximal de mutations par commit est de 40 000. Chaque index secondaire d'une table correspond à une mutation supplémentaire par ligne. Pour modifier des données à l'aide de mutations, consultez la section Insérer, mettre à jour et supprimer des données à l'aide de mutations. Pour modifier une grande quantité de données, utilisez le LMD partitionné.
  • Pour le niveau d'isolation des transactions, aucune gestion n'est requise, car les transactions Spanner sont plus isolées.
  • Spanner étant linéarisable, Spanner gère la cohérence et le verrouillage par défaut.

Tester et optimiser votre schéma et les performances de votre application

L'ajustement des performances est un processus itératif dans lequel vous évaluez des métriques telles que l'utilisation du processeur et la latence en fonction d'un sous-ensemble de vos données, ajustez votre schéma et votre application pour améliorer les performances, puis effectuez de nouveaux tests.

Par exemple, dans votre schéma, vous pouvez ajouter ou modifier un indice, ou modifier une clé primaire. Dans votre application, vous pouvez effectuer des écritures par lot, ou fusionner ou modifier vos requêtes.

Pour le trafic de production en particulier, le réglage des performances est important pour éviter les surprises. Plus la configuration est proche de le débit du trafic de production en temps réel et la taille des données.

Pour tester et ajuster les performances de votre schéma et de votre application, procédez comme suit:

  1. Importez un sous-ensemble de vos données dans une base de données Spanner. Pour en savoir plus, consultez la page Migrer vos données.
  2. Pointez l'application vers Spanner.
  3. Vérifiez l'exactitude en vérifiant les flux de base.
  4. Vérifiez que les performances répondent à vos attentes en effectuant des tests de charge sur votre application. Pour obtenir de l'aide pour identifier et optimiser vos requêtes les plus coûteuses, consultez Déterminer les problèmes de performances des requêtes avec les insights sur les requêtes. En particulier, les facteurs suivants peuvent contribuer à une requête non optimale performances:
    1. Requêtes inefficaces: pour en savoir plus sur l'écriture de requêtes efficaces, consultez les bonnes pratiques SQL.
    2. Utilisation élevée du processeur : pour en savoir plus, consultez la page Enquêter sur une utilisation élevée du processeur.
    3. Verrouillage : pour réduire les goulots d'étranglement causés par le verrouillage des transactions, consultez la section Identifier les transactions susceptibles de provoquer des latences élevées.
    4. Conception de schéma inefficace : si le schéma n'est pas bien conçu, l'optimisation des requêtes n'est pas très utile.
    5. Hotspots : les hotspots dans Spanner limitent le débit d'écriture, en particulier pour les applications à fort débit de requêtes par seconde (RPS). Pour identifier les zones cliquables antimodèles, cochez la case Key Visualiseur depuis la console Google Cloud. Pour en savoir plus sur l'évitement des hotspots, consultez la section Choisir une clé primaire en évitant de créer des hotspots.
  5. Si vous modifiez le schéma ou les index, répétez l'opération des tests jusqu’à ce que vous obteniez des résultats satisfaisants.

Pour en savoir plus sur l'optimisation des performances de votre base de données, contactez l'assistance Spanner.

Transférer vos données

Après avoir optimisé votre schéma Spanner et migré votre application, vous déplacez vos données vers une base de données Spanner vide de taille de production, puis vous passez à la base de données Spanner.

Selon votre base de données source, vous pourrez peut-être migrer votre base de données avec un temps d'arrêt minimal ou un temps d'arrêt prolongé.

Pour les migrations avec un temps d'arrêt minimal et celles avec un temps d'arrêt prolongé, nous vous recommandons d'utiliser Dataflow et l'outil de migration Spanner.

Le tableau suivant présente les différences entre les migrations avec un temps d'arrêt minimal et les migrations avec un temps d'arrêt plus long, y compris les sources, formats, tailles et débits compatibles.

Migration avec temps d'arrêt minimal Migration avec temps d'arrêt
Sources compatibles MySQL, PostgreSQL Toute base de données pouvant exporter vers un fichier CSV ou Avro.
Formats de données compatibles Se connecter directement Consultez Se connecter directement à une base de données MySQL. MySQL, PostgreSQL, CSV, Avro
Tailles de base de données compatibles Aucune limite Aucune limite
Débit maximal 45 Go par heure 200 Go par heure

Migration avec temps d'arrêt minimal

Spanner accepte les migrations avec temps d'arrêt minimal à partir de MySQL, PostgreSQL et Oracle Database. Une migration avec temps d'arrêt minimal se compose de deux composants:

  • Un instantané cohérent de toutes les données de la base de données
  • Le flux des modifications (insertions et mises à jour) effectuées depuis cet instantané appelée capture des données modifiées (CDC, Change Data Capture)

Si les migrations avec un temps d'arrêt minimal contribuent à protéger vos données, le processus implique notamment:

  • Stockage des données CDC pendant la migration de l'instantané.
  • Écrire les données CDC dans Spanner tout en capturant le flux CDC entrant.
  • Assurez-vous que la migration des données CDC vers Spanner est plus rapide que le flux CDC entrant.

Pour gérer une migration avec un temps d'arrêt minimal, l'outil de migration Spanner orchestre les opérations suivantes processus pour vous:

  1. Configure un bucket Cloud Storage pour stocker les événements CDC dans la base de données source pendant la migration de l'instantané.
  2. Configure une tâche Datastream qui déplace le chargement groupé des données CDC et diffuse en continu des données CDC incrémentielles vers le bucket Cloud Storage. Vous configurez le profil de connexion source dans l'outil de migration Spanner.
  3. Configure la tâche Dataflow pour migrer les événements CDC vers Spanner.

Lorsque Dataflow a copié la plupart des données, il cesse d'écrire dans la base de données source et attend la fin de la migration des données. Cela entraîne un court temps d'arrêt pendant que Spanner rattrape la base de données source. L'application peut ensuite être migrée vers Spanner.

Le schéma suivant illustre ce processus :

Ce schéma illustre le processus de migration avec temps d'arrêt minimal.

Migration avec temps d'arrêt

Pour les bases de données autres que MySQL, PostgreSQL ou Oracle Database, si la base de données peut exporter au format CSV ou Avro, vous pouvez migrer vers Spanner avec un temps d'arrêt. Nous vous recommandons d'utiliser Dataflow ou l'outil de migration Spanner.

Les migrations avec temps d'arrêt ne sont recommandées que pour les environnements de test ou les applications pouvant gérer quelques heures d'arrêt. Sur une base de données active, une migration avec temps d'arrêt peut entraîner une perte de données.

Pour effectuer une migration avec temps d'arrêt, procédez comme suit:

  1. Générez un fichier de dump à partir de la base de données source.
  2. Importez le fichier de dump dans Cloud Storage au format de vidage MySQL, PostgreSQL, Avro ou CSV.
  3. Chargez le fichier de vidage dans Spanner à l'aide de Dataflow ou de l'outil de migration Spanner.

Générer plusieurs petits fichiers de vidage permet d'écrire plus rapidement dans Spanner, car Spanner peut lire plusieurs fichiers de vidage en parallèle.

Lorsque vous générez un fichier de dump à partir de la base de données source, gardez à l'esprit les points suivants pour générer un instantané cohérent des données :

  • Pour éviter que les données ne changent pendant la génération du fichier de dump, avant d'effectuer le vidage, appliquez un verrou en lecture sur la base de données source.
  • Générez le fichier de dump à l'aide d'une instance répliquée avec accès en lecture à partir de la base de données source avec réplication désactivée.

Avro est le format recommandé pour une migration groupée vers Spanner. Si vous utilisez Avro, tenez compte des points suivants:

Si vous utilisez un fichier CSV, tenez compte des points suivants :

  • Pour générer un fichier de vidage CSV des données, utilisez la génération CSV prise en charge par source. Si les données contiennent de nouvelles lignes, utilisez un séparateur de ligne personnalisé.
  • Pour importer des données CSV, utilisez un job d'importation Dataflow. Vous pouvez créer votre propre modèle d'importation Dataflow ou d'utiliser Google Cloud modèle d'importation. Pour en savoir plus, consultez Modèles de pipeline de données Dataflow

Si vous utilisez MySQL ou PostgreSQL, vous pouvez utiliser l'outil de migration Spanner.

Pour en savoir plus sur l'utilisation de scripts personnalisés pour charger des données dans Spanner, consultez les Consignes de performances pour le chargement groupé.

Valider votre migration de données

La validation des données consiste à comparer les données des tables source et de destination pour s'assurer qu'elles correspondent.

L'outil de validation des données est un outil Open Source qui peut se connecter aux magasins de données et effectuer des vérifications entre la source et Spanner. Nous vous recommandons de l'utiliser pour effectuer des validations de base lors de votre migration, par exemple :

  • Vérifiez que toutes les tables ont été créées et que tous les mappages de schémas sont corrects.
  • Faites correspondre le nombre de lignes de chaque table.
  • Extrayez des lignes aléatoires pour vérifier qu'elles sont correctes.
  • Validez vos colonnes (count, sum, avg, min, max, group by).
  • Comparez les fonctions de redondance cyclique ou de hachage au niveau de la ligne.

Pour effectuer des validations plus spécifiques, créez des vérifications personnalisées lors de la migration.

Configurer les mécanismes de basculement et de basculement

Les migrations sont souvent chronophages et complexes. Intégrez des solutions de secours pour éviter un impact significatif en cas d'erreur lors de la migration. Vous pourrez ainsi revenir à la base de données source avec un temps d'arrêt minimal.

La recommandation actuelle consiste à utiliser des flux de modifications pour effectuer une réplication inverse et à réécrire dans la base de données source via un flux tel que Pub/Sub ou Cloud Storage.

Le schéma illustre le processus de basculement.

La réplication inverse doit effectuer les opérations suivantes :

  • Gérer les modifications des types de données ou du contenu
  • Inversez toutes les transformations effectuées pendant la migration.
  • Transférez les données vers la destination appropriée, en tenant compte de les schémas de segmentation sur la source.

Étape suivante