Cette page vous explique comment migrer votre base de données OLTP (Online Transactional Processing) de MySQL vers Spanner. Le processus de migration vers Spanner peut varier en fonction de facteurs tels que la taille des données, les exigences de temps d'arrêt, la complexité du code de l'application, le schéma de segmentation, les fonctions personnalisées, ainsi que les stratégies de basculement et de réplication.
La migration Spanner se déroule en plusieurs étapes :
- Évaluez votre migration.
- Migrez votre schéma et traduisez les requêtes SQL.
- Migrez votre application pour utiliser Spanner en plus de MySQL.
- Chargez des exemples de données et optimisez vos performances.
- Migrez vos données.
- Validez la migration.
- Configurez les mécanismes de transition et de secours.
Évaluer votre migration
Pour évaluer une migration de votre base de données MySQL source vers Spanner, vous devez évaluer vos besoins commerciaux, techniques, opérationnels et financiers. Pour en savoir plus, consultez Évaluer votre migration.
Migrer votre schéma
Convertissez votre schéma existant en un schéma Spanner à l'aide de l'outil de migration Spanner.
Pour en savoir plus, consultez Présentation de la migration de schémas depuis MySQL.
Migrer votre application pour utiliser Spanner
Cloud Spanner fournit un ensemble de bibliothèques clientes pour différents langages, ainsi que la possibilité de lire et d'écrire des données en utilisant des appels d'API spécifiques à Spanner, ou bien des requêtes SQL et des instructions LMD (langage de manipulation de données). L'utilisation d'appels d'API peut être plus rapide pour certaines requêtes, telles que les lectures directes de lignes par clé, car il n'est pas nécessaire de traduire l'instruction SQL.
Spanner fournit un pilote JDBC pour les applications Java.
Dans le cadre du processus de migration, les fonctionnalités non disponibles dans Spanner, telles que mentionnées précédemment, doivent être mises en œuvre dans l'application. Par exemple, un déclencheur permettant de vérifier les valeurs de données et de mettre à jour une table associée devrait être mis en œuvre dans l'application à l'aide d'une transaction de lecture ou d'écriture pour lire la ligne existante, vérifier la contrainte, puis écrire les lignes mises à jour dans les deux tables.
Spanner offre des transactions en lecture/écriture et en lecture seule qui garantissent la cohérence externe de vos données. De plus, des limites d'horodatage peuvent être appliquées aux transactions en lecture si vous lisez une version cohérente des données :
- à une heure exacte dans le passé (jusqu'à il y a une heure) ;
- dans l’avenir (où la lecture bloquera jusqu'au moment indiqué) ;
- avec une limite acceptable d'obsolescence, ce qui retournera une vue cohérente jusqu’à un certain moment sans qu’il soit nécessaire de vérifier que des données ultérieures sont disponibles sur une autre instance dupliquée. Cela peut améliorer les performances au détriment de données éventuellement obsolètes.
Charger des exemples de données dans Spanner
Vous pouvez charger des exemples de données dans Spanner avant d'effectuer une migration complète des données pour tester les schémas, les requêtes et votre application.
Vous pouvez utiliser le workflow BigQuery reverse ETL et la Google Cloud CLI pour charger une petite quantité de données au format CSV dans Spanner.
Pour en savoir plus, consultez Charger des exemples de données.
Pour transférer vos données de MySQL vers Spanner, vous pouvez également exporter votre base de données MySQL vers un format de fichier portable, par exemple XML, puis importer ces données dans Spanner à l'aide de Dataflow.
Migrer des données vers Spanner
Après avoir optimisé votre schéma Spanner et chargé des exemples de données, vous pouvez transférer vos données dans une base de données Spanner vide de taille adaptée à la production.
Pour en savoir plus, consultez Migration de données en direct depuis MySQL.
Valider la migration de vos données
Lorsque les données sont diffusées dans votre base de données Cloud Spanner, vous pouvez effectuer périodiquement une comparaison entre les données Cloud Spanner et les données MySQL pour vous assurer de leur cohérence. Vous pouvez valider la cohérence en interrogeant les deux sources de données et en comparant les résultats.
Vous pouvez utiliser Dataflow pour effectuer une comparaison détaillée sur des ensembles de données volumineux à l'aide de la transformation de jointure. Cette transformation prend deux ensembles de données disposant de clés et fait correspondre les valeurs par clé. Les valeurs correspondantes peuvent ensuite être comparées pour vérifier l'égalité. Vous pouvez effectuer cette vérification régulièrement jusqu'à ce que le niveau de cohérence corresponde à vos besoins.
Pour en savoir plus, consultez Valider la migration de vos données.
Configurer les mécanismes de transition et de secours
Vous pouvez configurer la migration et le retour en arrière pour MySQL à l'aide de la réplication inversée. Le basculement et le retour en arrière signifient que vous disposez d'un plan de secours pour revenir à votre base de données MySQL source si vous rencontrez des problèmes avec Spanner.
La réplication inversée est utile lorsque vous rencontrez des problèmes imprévus avec Spanner et que vous devez revenir à la base de données MySQL d'origine avec un minimum d'interruption du service. La réplication inversée permet de revenir en arrière en répliquant les données écrites sur Spanner dans votre base de données MySQL source.
Le flux de réplication inverse comprend les étapes suivantes, effectuées par le modèle Dataflow Spanner to SourceDB
:
Lisez les modifications apportées à Spanner à l'aide des flux de modifications Spanner.
Filtrez les modifications migrées vers l'avant.
Transformez les données Spanner pour qu'elles soient compatibles avec le schéma de votre base de données source.
Vérifiez si la base de données source contient déjà des données plus récentes pour la clé primaire spécifiée.
Écrivez les données dans votre base de données source.
Étapes suivantes
- Bonnes pratiques de conception de schémas
- Optimisez votre schéma Spanner.
- Découvrez comment utiliser Dataflow dans des situations plus complexes.