Migrer de MySQL vers Spanner

Cette page explique comment migrer votre base de données OLTP (OnLine Transactional Processing) de MySQL vers Cloud Spanner. Le processus de migration vers Spanner peut varier en fonction de plusieurs facteurs, tels que la taille des données, les 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 vers Spanner se décompose en plusieurs étapes :

  1. Évaluer votre migration.
  2. Migrer votre schéma et traduire toutes les requêtes SQL.
  3. Migrer votre application pour utiliser Spanner en plus de MySQL.
  4. Charger des exemples de données et optimiser vos performances.
  5. Migrer vos données.
  6. Valider la migration.

Évaluer votre migration

L'évaluation d'une migration de votre base de données MySQL source vers Spanner nécessite d'évaluer vos besoins commerciaux, techniques, opérationnels et financiers. Pour en savoir plus, consultez Évaluer votre migration.

Migrer votre schéma

Vous pouvez convertir votre schéma existant en schéma Spanner à l'aide de l'outil de migration Spanner.

Pour en savoir plus, consultez Migrer un schéma 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, comme mentionné précédemment, doivent être implémentées 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 devra être implémenté 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.

Le niveau d'isolation par défaut des transactions dans Spanner est l'isolation sérialisable, qui garantit la cohérence externe de vos données. Spanner propose également une isolation de lecture reproductible . Nous vous recommandons de définir le niveau d'isolation sur "lecture reproductible" et le contrôle de la simultanéité sur simultanéité pessimiste dans le cadre du processus de migration de l'application afin que la sémantique des transactions de Spanner corresponde étroitement à la sémantique des transactions par défaut de MySQL. Pour savoir comment définir le niveau d'isolation et le contrôle de la simultanéité dans votre application, consultez Utiliser le niveau d'isolation de lecture reproductible et Configurer le contrôle de la simultanéité.

Spanner propose des transactions en lecture/écriture et en lecture seule. En outre, des limites de code temporel peuvent être appliquées aux transactions de lecture, ce qui vous permet de lire 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 ETL inverse BigQuery et la Google Cloud CLI pour charger une petite quantité de données au format de fichier 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 dans 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 déplacer vos données dans une base de données Spanner vide de taille adaptée à la production.

Pour en savoir plus, consultez Migrer vos données 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 de grands ensembles de données à 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 le basculement et la transition

Vous pouvez configurer le basculement et la transition pour MySQL à l'aide de la réplication inverse. La configuration du basculement vous permet de disposer d'un plan de secours pour revenir à votre base de données MySQL source en cas de problème après la transition vers Spanner.

La réplication inverse est utile lorsque vous rencontrez des problèmes inattendus avec Spanner et que vous devez revenir à la base de données MySQL d'origine avec une interruption minimale du service. La réplication inverse permet le basculement en répliquant les données écrites dans Spanner dans votre base de données MySQL source.

Le flux de réplication inverse comprend les étapes suivantes, effectuées par le spanner-to-sourcedb modèle Dataflow :

  1. Lire les modifications à partir de Spanner à l'aide de s flux de modifications Spanner.

  2. Filtrer les modifications migrées vers l'avant.

  3. Transformer les données Spanner pour qu'elles soient compatibles avec le schéma de votre base de données source.

  4. Vérifier si la base de données source contient déjà des données plus récentes pour la clé primaire spécifiée.

  5. Écrire des données dans votre base de données source.

Étape suivante