Présentation de la migration

Ce document décrit le processus de migration d'une base de données vers Spanner. Nous décrivons les étapes de la 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 tiers. Ensemble, ces outils vous aident à accélérer les migrations et à réduire les risques.

Toute migration de Spanner implique les étapes principales suivantes:

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

Le schéma suivant illustre ce processus :

Schéma du processus de migration montrant l'évaluation, la migration du schéma et des applications, les tests et le réglage, la migration des données, la validation et le basculement

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

Nous fournissons des guides de migration pour Amazon DynamoDB, MySQL, la base de données Oracle et PostgreSQL. Si vous effectuez la migration depuis l'une de ces bases de données, suivez également le guide correspondant:

Si vous effectuez une migration depuis une autre base de données, vous aurez peut-être besoin de personnalisations et d'outils supplémentaires qui ne sont pas abordés dans ce guide.

Outils de migration

Nous vous recommandons d'utiliser les outils suivants pour vous aider à différentes étapes de votre migration, en fonction de votre base de données source et d'autres facteurs. Certains outils ne sont compatibles qu'avec certaines bases de données sources. Pour certaines étapes du processus, aucun outil n'est disponible. Vous devez donc effectuer ces étapes manuellement.

  • L'outil de migration Spanner est un outil Open Source qui effectue des évaluations de base, ainsi que des migrations de schémas et de données.
  • L'outil de validation des données (DVT) est une méthode standardisée de validation des données développée par Google et prise en charge par la communauté Open Source. Vous pouvez intégrer DVT aux produits Google Cloud existants.
  • Datastream est un service Google Cloud qui vous permet de lire les événements de capture de données modifiées (CDC, Change Data Capture) et les données groupées à partir d'une base de données source.
  • Dataflow est un service Google Cloud qui vous aide à écrire de grandes quantités de données dans Spanner plus efficacement à l'aide de modèles. Ces modèles ne génèrent pas de fichier de dump. Celui-ci doit être généré par les outils de base de données source ou tiers.

Le tableau suivant récapitule les principaux outils que nous recommandons à chaque étape de votre migration pour certaines bases de données sources courantes. Vous pouvez migrer à partir d'autres bases de données avec personnalisations.

Base de données source Évaluer la portée Migrer votre schéma Migrer votre application Migrer vos données Valider la migration des données Configurer le basculement et le basculement
MySQL Manual (Manuelle) Outil de migration Spanner Manual (Manuelle) Outil de migration Spanner DVT Manual (Manuelle)
PostgreSQL Manual (Manuelle) Outil de migration Spanner Manual (Manuelle) Outil de migration Spanner DVT Manual (Manuelle)
Autres bases de données Manual (Manuelle) Outil de migration Spanner Manual (Manuelle) Manual (Manuelle) DVT Manual (Manuelle)

Évaluer la complexité de votre migration

Pour évaluer le champ d'application 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 suivantes:

  • Formats de requête
  • Quantité de logique d'application qui dépend des fonctionnalités de la 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 les pages Bonnes pratiques pour la conception de schémas et Stratégies recommandées pour migrer une clé primaire.

L'outil de migration Spanner, un outil Open Source géré par la communauté et créé par des développeurs Google, crée automatiquement un schéma Spanner à partir de votre schéma de 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:

  • Un fichier de dump stocké localement ou dans Cloud Storage (MySQL, PostgreSQL, CSV)
  • Directement à partir de la base de données source (MySQL, PostgreSQL)

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

  • Évaluation de la compatibilité des types de données et recommandations
  • Modification et recommandations de la clé primaire
  • Modification et recommandations d'index secondaire
  • Modification et recommandations de tableaux entrelacés
  • Recommandations générales concernant la conception de schémas Spanner
  • Gestion des versions des 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 utiliserez également l'outil de migration Spanner pour la migration 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 des fonctionnalités non compatibles avec Spanner. Pour obtenir des fonctionnalités similaires et optimiser les résultats en fonction des points forts de Spanner, vous devrez peut-être modifier votre code, vos flux d'application et votre architecture.

Voici certaines 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 dans l'application les procédures et les déclencheurs stockés au niveau de la base de données.
  • Utilisez les bibliothèques clientes Spanner et les mappeurs objet-relationnel (ORM, Object-Relational Mapper). Pour en savoir plus, consultez la page Présentation des API, des bibliothèques clientes et des pilotes ORM.
  • Si vous devez traduire des requêtes, faites-les manuellement ou utilisez d'autres outils tiers.
  • Prenez note du LMD partitionné, des transactions en lecture seule, des horodatages de commit, des horodatages de lecture, ainsi que de la manière dont ils peuvent optimiser les performances des applications.

Vous devrez peut-être également modifier la gestion des transactions. Aucun outil n'est disponible pour vous aider dans ce cas de figure. 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 est 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.
  • Étant donné que Spanner est linéarisable, il gère par défaut la cohérence et le verrouillage.

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

Le réglage 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, vous ajustez votre schéma et votre application pour améliorer les performances, puis vous effectuez à nouveau des tests.

Par exemple, dans votre schéma, vous pouvez ajouter ou modifier un index, ou modifier une clé primaire. Dans votre application, vous pouvez traiter 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 afin d'éviter les surprises. Plus la configuration est proche du débit du trafic de production et des tailles de données en temps réel, plus le réglage des performances est efficace.

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

  1. Importer un sous-ensemble de vos données dans une base de données Spanner Pour en savoir plus, consultez Migrer vos données.
  2. Faire pointer 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 afin d'identifier et d'optimiser vos requêtes les plus coûteuses, consultez la page Détecter les problèmes de performances des requêtes avec les insights sur les requêtes. En particulier, les facteurs suivants peuvent contribuer à des performances non optimales des requêtes :
    1. Requêtes inefficaces: pour en savoir plus sur la rédaction de requêtes efficaces, consultez la page Bonnes pratiques SQL.
    2. Utilisation élevée du processeur: pour plus d'informations, consultez la section Analyser l'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 pouvant entraîner 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. Hotspotting: les points d'accès dans Spanner limitent le débit en écriture, en particulier pour les applications nécessitant un grand nombre de RPS. Pour identifier les hotspots ou des antimodèles, consultez les statistiques de Key Visualizer dans la console Google Cloud. Pour en savoir plus sur la façon d'éviter les hotspots, consultez la section Choisir une clé primaire pour empêcher les hotspots.
  5. Si vous modifiez le schéma ou les index, répétez les tests d'exactitude et de performance 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 transférez vos données dans 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 avec des temps d'arrêt prolongés, nous vous recommandons d'utiliser Dataflow et l'outil de migration Spanner.

Le tableau suivant montre les différences entre les migrations avec temps d'arrêt minimal et les migrations avec plus de temps d'arrêt, y compris les sources, les formats, la taille et le débit compatibles.

Migration avec un temps d'arrêt minimal Migration avec temps d'arrêt
Sources compatibles MySQL, PostgreSQL Toute base de données pouvant être exportée au format CSV ou Avro
Formats de données compatibles Connectez-vous directement. Consultez la section Se connecter directement à une base de données MySQL. MySQL, PostgreSQL, CSV, Avro
Tailles de base de données compatibles No limit No limit
Débit maximal 45 Go par heure 200 Go par heure

Migration avec temps d'arrêt minimal

Spanner permet les migrations avec des temps d'arrêt minimaux à partir de MySQL, PostgreSQL et base de données Oracle. Une migration avec un temps d'arrêt minimal comprend deux composants:

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

Bien que les migrations avec des temps d'arrêt minimaux aident à protéger vos données, le processus implique des défis, par exemple:

  • Stockage des données CDC pendant la migration de l'instantané
  • Écrire les données CDC dans Spanner lors de la capture du 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 temps d'arrêt minimal, l'outil de migration Spanner orchestre les processus suivants:

  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 la charge groupée des données CDC et transmet en continu les 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.

Une fois que Dataflow a copié la plupart des données, il arrête l'écriture 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 basculée vers Spanner.

Le schéma suivant illustre ce processus :

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

Migration avec temps d'arrêt

Pour les bases de données autres que MySQL, PostgreSQL ou Oracle, si la base de données peut être exportée au format CSV ou Avro, vous pouvez migrer vers Spanner avec 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 de temps 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 des données à partir de la base de données source.
  2. Importez le fichier de dump dans Cloud Storage au format MySQL, PostgreSQL, Avro ou CSV.
  3. Chargez le fichier de dump dans Spanner à l'aide de Dataflow ou de l'outil de migration Spanner.

La génération de plusieurs petits fichiers de vidage accélère l'écriture 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 empêcher la modification des données lors de la génération du fichier de dump, appliquez un verrou en lecture à la base de données source avant d'effectuer le vidage.
  • 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, en désactivant la réplication.

Avro est le format préconisé 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 vidage CSV des données, utilisez la génération CSV compatible avec la 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 utiliser un modèle d'importation Google Cloud. Pour en savoir plus, consultez la page 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 la page Consignes relatives aux performances pour le chargement groupé.

Valider la migration de vos données

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

L'outil de validation des données (DVT) est un outil Open Source qui peut se connecter aux datastores et effectuer des vérifications entre la source et Spanner. Nous vous recommandons de l'utiliser pour effectuer des validations de base dans le cadre de votre migration, telles que les suivantes:

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

Pour effectuer des validations plus spécifiques, créez des contrôles personnalisés pendant la migration.

Configurer les mécanismes de basculement et de basculement

Les migrations sont souvent longues et complexes. Intégrez des solutions de secours pour éviter tout impact significatif en cas d'erreur lors de la migration, ce qui vous permet de revenir à la base de données source avec un temps d'arrêt minimal.

La recommandation actuelle consiste à utiliser des flux de modification pour effectuer une réplication inverse et à é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 apportées aux types de données ou au contenu
  • Inversez toutes les transformations effectuées pendant la migration.
  • Transférez les données vers la destination appropriée, en tenant compte des schémas de segmentation sur la source.