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 tiers. L'utilisation conjointe de ces outils vous aide à accélérer les migrations et à réduire les risques.
Toute migration Spanner implique les étapes principales suivantes:
- Évaluez la complexité de votre migration.
- Migrez votre schéma.
- Charger des exemples de données
- Migrez votre application.
- Testez et ajustez vos performances.
- Migrez les données.
- Validez la migration.
- Configurez les mécanismes de basculement et de 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 exigences de temps d'arrêt, la complexité du code de l'application, le schéma de segmentation, les fonctions ou transformations personnalisées, et la stratégie de basculement et de réplication.
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 les effectuer manuellement.
L'outil de migration Spanner (SMT) est un outil Open Source qui peut effectuer des évaluations de base, la conversion de 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) et des données groupées à partir d'une base de données source, et d'écrire à une destination spécifiée.
Dataflow est un service Google Cloud qui vous aide à écrire une grande quantité de données dans Spanner plus efficacement à l'aide de 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 DVT aux produitsGoogle Cloud existants.
Outils de migration pour les bases de données sources MySQL
Si votre base de données source est MySQL, vous pouvez effectuer certaines des étapes initiales de migration à 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 dump | 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 |
|
Effectuez une migration groupée. |
Migration de données | Non applicable | Effectuez une migration groupée, puis une migration avec un temps d'arrêt minimal. |
Validation des données | Non applicable | Utilisez 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 des étapes de 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 effectuer 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 dump ou que vous vous connectiez directement à partir de votre base de données source:
Étape de migration | Fichier de dump | 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 les bonnes pratiques de conception de schémas et les stratégies de migration de clé primaire recommandées.
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:
- Un 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 et recommandations de compatibilité des types de données
- Modification et recommandations concernant la clé primaire
- Modification et recommandations concernant les index secondaires
- Entrelacement de l'édition de tableaux et des recommandations
- Recommandations générales concernant la conception de schémas Spanner
- Gestion des versions de schémas
- Modification collaborative du 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
Une fois que vous avez créé un schéma compatible avec Spanner, vous pouvez préparer votre base de données à être testée à l'aide d'exemples de données. Vous pouvez utiliser le workflow ETL inversé BigQuery pour charger les données d'exemple. 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. Pour optimiser votre application 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 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.
- Notez les instructions LMD partitionnées, les transactions en lecture seule, les horodatages de commit et les horodatages de lecture, et comment ils peuvent optimiser les performances de l'application.
Vous devrez peut-être également modifier la gestion des transactions. Aucun outil n'est disponible pour vous aider à ce stade. Vous devez donc effectuer cette étape manuellement. Gardez à l'esprit les points suivants:
- La limite des 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.
- Comme Spanner est linéarisable, il 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. Le réglage des performances est plus efficace lorsque la configuration est plus proche du débit et des tailles de données du trafic de production en direct.
Pour tester et ajuster les performances de votre schéma et de votre application, procédez comme suit:
- Importez un sous-ensemble de vos données dans une base de données Spanner. Pour en savoir plus, consultez Migrer vos données.
- Pointez l'application vers Spanner.
- Vérifiez la validité en vérifiant les flux de base.
- 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 la page Déterminer les problèmes de performances des requêtes avec Query Insights.
Plus précisément, les facteurs suivants peuvent contribuer à des performances de requêtes non optimales :
- Requêtes inefficaces: pour savoir comment écrire des requêtes efficaces, consultez les bonnes pratiques SQL.
- Utilisation élevée du processeur: pour en savoir plus, consultez la page Enquêter sur une utilisation élevée du processeur.
- 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.
- 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.
- 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 des points chauds ou des antimodèles, consultez les statistiques du Visualiseur de clés dans 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.
- Si vous modifiez le schéma ou les index, répétez les tests de validité et de performances 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 la migrer avec un temps d'arrêt minimal, ou vous devrez peut-être interrompre votre service pendant une période plus longue.
Pour les migrations avec un temps d'arrêt minimal et les migrations 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 au format 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 prend en charge les migrations avec un temps d'arrêt minimal à partir de MySQL, PostgreSQL et Oracle Database. Une migration avec un 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 de modifications (insertions et mises à jour) depuis cet instantané, appelé capture de données modifiées (CDC)
Bien que les migrations avec temps d'arrêt minimal contribuent à protéger vos données, le processus présente des défis, y compris les suivants:
- 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 processus suivants:
- Configure un bucket Cloud Storage pour stocker les événements CDC dans la base de données source pendant la migration de l'instantané.
- 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.
- 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 :
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:
- Générez un fichier de dump des données à partir de la base de données source.
- Importez le fichier de dump dans Cloud Storage au format de vidage MySQL, PostgreSQL, Avro ou CSV.
- Chargez le fichier de dump 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 lors de la génération du fichier de dump, appliquez un verrouillage en lecture sur la base de données source avant d'effectuer le dump.
- Générez le fichier de dump à l'aide d'une instance dupliquée avec accès en lecture de la base de données source avec la réplication désactivée.
Formats recommandés pour la migration groupée
Avro est le format recommandé pour une migration groupée vers Spanner. Si vous utilisez Avro, tenez compte des points suivants:
- Pour générer un vidage Avro des données, utilisez un outil tel que DBeam. Pour en savoir plus sur l'exportation vers Avro, consultez la section Exporter des données depuis une base de données autre que Spanner vers des fichiers Avro.
- Pour importer des données Avro, utilisez une tâche d'importation Dataflow. Pour en savoir plus, consultez la section Importer des fichiers Avro depuis des bases de données autres que Spanner vers Spanner.
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 une tâche 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 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 entrepôts 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 pour chaque table.
- Extrayez des lignes aléatoires pour vérifier leur exactitude.
- 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 longues 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.
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 fractionnement sur la source.