Remarque :

Migrer Google Cloud Platform CloudSQL for MySQL vers Oracle Cloud Infrastructure MySQL Heatwave à l'aide de la réplication

Introduction

Ce tutoriel explique comment effectuer la migration en direct de votre plate-forme Google Cloud CloudSQL pour MySQL vers Oracle Cloud Infrastructure (OCI) MySQL Heatwave Database Service. Avec l'aide de cet article, nous serons en mesure de comprendre comment nous pouvons utiliser la réplication MySQL entre deux fournisseurs cloud différents. Cela servira de document pour une migration réussie vers OCI Heatwave. Dans ce didacticiel, nous allons utiliser les produits suivants :-

  1. GCP CloudSQL pour MySQL
  2. MySQL Heatwave for Online Transaction Processing (OLTP)
  3. OCI Object Storage
  4. Calcul OCI en tant que bastion
  5. MySQL Shell

Objectifs

Connectez Google Cloud Platform CloudSQL pour MySQL à MySQL Heatwave Database Service, puis démarrez la réplication entrante vers le système de base de données OCI. Nous aborderons la présentation générale de la connectivité entre Google Cloud Platform et MySQL, mais les possibilités de réseau détaillées entre Google Cloud Platform CloudSQL et MySQL Heatwave peuvent être référencées dans la documentation officielle.

Architecture

Voici un exemple d'architecture de haut niveau de la solution.

Image principale

La ligne en pointillés représente le flux des données, c'est-à-dire de Cloud SQL de GCP pour MySQL vers Object Storage pour le jeu de données initial. Une fois les données disponibles dans le stockage d'objets, nous allons utiliser les canaux de réplication proposés avec le système de base de données OCI MySQL Heatwave.

Prérequis

Dans le cadre de ce tutoriel, nous allons utiliser la réplication entrante. A l'aide de la réplication entrante, nous utilisons un canal de réplication configuré dans MySQL Heatwave Database Service et avec lequel nous pouvons envoyer des transactions d'un emplacement à un autre. Nos sources peuvent être différentes : sur site, Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, etc. Dans ce tutoriel, nous mettons l'accent sur Google Cloud Platform Cloud SQL pour MySQL et notre cible est MySQL Heatwave Database Service.

Vous pouvez en savoir plus sur la présentation de la réplication entrante MySQL ici. Gardez ce tutoriel à portée de main car il fournit également une description détaillée de la configuration source, de la création d'un utilisateur de réplication, de la création d'un canal de réplication et de ses limites.

Nous divisons l'ensemble du processus de migration en étapes globales suivantes.

  1. Accès à Cloud SQL de Google Cloud Platform existant pour MySQL
  2. Préparation de Cloud SQL de Google Cloud Platform pour MySQL
  3. Bastion sur OCI avec le shell MySQL
  4. Remarques concernant la mise en réseau entre Google Cloud Platform Cloud SQL pour MySQL et le système de base de données OCI Heatwave
  5. Configuration du bucket Object Storage sur OCI
  6. Export de données vers OCI Object Storage
  7. Création d'un système de base de données sur OCI
  8. Création d'un canal de réplication sur OCI

Tâche 1 : accéder à l'instruction Google Cloud Platform Cloud SQL existante pour MySQL

Nous utilisons l'exemple de base de données hébergé sur Cloud SQL de Google Cloud Platform pour MySQL à des fins de migration. L'instance MySQL existante est hébergée sur le sous-réseau public autorisé par Google Cloud Platform. Nous l'utilisons en tant que base de données source. Supposons que Google Cloud Platform CloudSQL for MySQL exécute l'édition d'entreprise avec MySQL version 8.0.

Image 1

Image 2

Une fois que nous connaissons l'adresse IP publique, nous pouvons mettre notre adresse IP sur liste blanche et nous pouvons facilement nous connecter avec le client MySQL. Vous pouvez également utiliser le shell MySQL ou l'utilitaire gcloud pour vous connecter à la base de données. Nous pouvons établir la liste blanche de notre adresse IP publique en l'ajoutant dans la section réseau de Google Cloud Platform Cloud SQL pour MySQL et en cliquant sur Enregistrer les modifications.

Image 3

Remarque : d'autres adresses IP sont également ajoutées ici. Elles seront décrites dans les sections suivantes.

Une fois que nous sommes en mesure de nous connecter, nous pouvons interroger les bases de données existantes dans l'instance Google Cloud Platform CloudSQL pour MySQL. Pour notre objectif de migration, nous ne nous concentrerons que sur la base de données échantillon Sakila.

Image 4

Tâche 2 : préparation de Google Cloud Platform Cloud SQL pour MySQL

Lorsque nous utilisons la réplication entrante, nous devons effectuer deux étapes sur le serveur source. Nous devons créer un utilisateur qui sera utilisé pour la réplication et nous devons également nous assurer que nous avons l'activation de GTID sur notre serveur source. Avec le code GTID (Global Transaction Identifier), chaque transaction peut être identifiée et suivie lors de sa validation sur le serveur source d'origine. La même transaction est ensuite appliquée à la réplique cible.

  1. Créez un utilisateur Replication et affectez des rôles à l'aide des commandes suivantes.

    mysql> create user repl@'%' IDENTIFIED BY 'yourreplpassword' REQUIRE SSL;
    mysql> grant replication slave on *.* to repl@'%';
    mysql> select user from mysql.user;;
    
  2. Assurez-vous que les GTID sont activés. Par défaut, les GTID sont activés, mais dans le cas contraire, vous pouvez les activer.

    mysql>show global variables like 'gtid%';

    Image 5

Tâche 3 : déploiement de bastion sur OCI avec le shell MySQL

Avec Oracle Cloud Infrastructure, les adresses de système de base de données MySQL ne sont pas directement accessibles à partir d'Internet. Cela est dû à une sécurité améliorée et il est déployé avec l'aide de l'adresse privée sous le VCN configuré. Par conséquent, nous devons connecter le service OCI MySQL Heatwave Database à l'aide d'une instance de calcul, d'un VPN, d'un bastion ou d'un équilibreur de charge réseau pour accéder à l'adresse privée.

Vous pouvez choisir l'une des options mentionnées ci-dessus. Dans notre cas, nous utiliserons l'instance de calcul qui servira de bastion pour notre service MySQL Heatwave Database. Pour savoir comment utiliser les autres options, cliquez ici.

Lorsque nous utilisons une instance de calcul, nous devons déployer le calcul dans le sous-réseau public de notre VCN dont le sous-réseau privé hébergera MySQL Heatwave Database Service. Lors de la configuration de l'instance de calcul, vous n'avez pas besoin de vous soucier de la configuration des ressources pour le calcul car elle sera uniquement utilisée pour installer le client MySQL shell ou MySQL et pour vous connecter à Google Cloud Platform Cloud SQL pour MySQL.

Découvrez comment créer une instance de calcul ici.

Comme vous pouvez le voir dans l'image ci-dessous, nous avons créé l'instance de calcul dans le sous-réseau public du VCN sous lequel MySQL Heatwave Database Service sera hébergé. Ce serveur Bastion sert d'intermédiaire entre OCI et Google Cloud Platform, où nous pouvons accéder aux deux instances MySQL. Pour nous connecter à l'instance de base de données MySQL, nous pouvons utiliser le shell MySQL ou le client MySQL.

Image 6

Installez le shell Mysql en exécutant la commande suivante.

`sudo yum install mysql-shell`

Pour plus d'informations, reportez-vous à la documentation.

Tâche 4 : vérification des considérations relatives à la mise en réseau entre Cloud SQL pour MySQL et OCI MySQL Heatwave Database Service

Une chose importante ici est de s'assurer que la communication est établie avec succès entre le serveur source et le serveur cible.

Sur la console Google Cloud Platform, nous devons nous assurer que l'adresse IP publique de notre instance Bastion est également mise sur liste blanche. Pour ce faire, nous avons procédé de la même manière que pour la connexion de la base de données à notre client MySQL.

Sur la console OCI, la communication doit être établie entre l'instance de calcul Bastion hébergée sur le sous-réseau public d'MySQLVCN et MySQL Heatwave Database Service hébergé sur un sous-réseau privé au sein du même VCN. Nous devons autoriser le trafic, et nous pouvons ouvrir des règles entrantes avec dans un sous-réseau privé et autoriser les connexions.

Tâche 5 : configuration du bucket Object Storage sur OCI

Nous devons configurer le stockage d'objets sur OCI pour le stockage du vidage de données initial à partir de Google Cloud Platform CloudSQL pour MySQL. Il s'agit d'une activité occasionnelle qui sera utilisée pour créer la base de données sur MySQL Heatwave Database Service.

Pour plus d'informations sur la création de bucket sur OCI, reportez-vous à Création d'un bucket.

Image 7

Une fois le bucket ci-dessus créé, nous devons établir un lien entre le bucket de stockage d'objets et l'instance Bastion. A cet effet, nous allons utiliser le fichier de configuration oci qui sera utilisé par le shell MySQL.

Remarque : le paramètre key_file doit être mis à jour avec l'emplacement de la clé privée générée sur la console OCI lors de la création de la clé d'API.

Tâche 6 : export de données vers OCI Object Storage

Nous allons utiliser l'utilitaire MySQL Shell sur le serveur Bastion pour exporter des données à partir du code SQL cloud de Google Cloud Platform pour MySQL. L'utilitaire shell MySQL est un outil très puissant qui permet d'exporter une instance entière en même temps et de fournir diverses options.

Pour cet exercice, nous allons exporter le schéma de Google Cloud Platform CloudSQL pour la base de données Mysql vers notre stockage d'objets OCI.

Commençons par nous connecter à l'instance MySQL à partir de notre calcul Bastion.

Image 12

util.dumpSchemas(["sakila"], "", { osBucketName: "MysqlBucket", osNamespace: "orasenatdpltintegration01", ocimds: true, ociParManifest: true, threads: 8, compatibility: ["force_innodb", "skip_invalid_accounts", "strip_definers", "strip_restricted_grants",  "strip_tablespaces"], dryRun: "true"})

Les autres options peuvent être utilisées en fonction de vos besoins. Vous trouverez plus d'informations ici.

Image 13

Une fois le test terminé, examinez la sortie et résolvez les problèmes. Si nous n'avons aucun problème de compatibilité, exécutez sans dryRun comme suit :-

Image 14

Il fournit des informations détaillées sur l'activité d'exportation ainsi que la durée. Comme il s'agit d'une base de données échantillon, avec environ 45k enregistrements, elle s'est terminée rapidement.

Une fois le processus terminé, vos données sont désormais présentes dans le bucket qui fait partie de votre stockage d'objets.

Image 15

Tâche 7 : création d'un système de base de données sur OCI

Pour plus d'informations sur la configuration du système de base de données MySQL, reportez-vous à Création d'un système de base de données.

La seule chose que nous devons garder à l'esprit est que nous avons déjà des données dans le stockage d'objets, donc utilisons-la pour configurer le système de base de données. Vous pouvez également charger les données ultérieurement, mais cette option permet de gagner beaucoup de temps. Pour pouvoir utiliser cette option, nous devons créer une demande de demande pré-authentifiée.

Image 16

Image 17

Assurez-vous d'avoir enregistré l'URL générée ici car elle sera utilisée comme suit.

Image 18

Une fois que vous avez indiqué l'URL de votre demande pré-authentifiée, le système de base de données MySQL est automatiquement créé avec la base de données Sakila.

Pour effectuer une validation, exécutez la commande suivante.

Image 19

La base de données source est alors dans le système de base de données cible. Nous allons maintenant créer une réplication entre la source et la cible.

Tâche 8 : création d'un canal de réplication sur OCI

Les canaux de réplication sont utilisés pour connecter votre système de base de données source au système de base de données cible. Toutes les transactions sont copiées à l'aide de ces canaux. La création de ces canaux est assez facile car nous devons juste fournir quelques détails sur notre source et notre cible. Il est toujours recommandé d'utiliser une connexion cryptée. C'est pourquoi, lors de la création de l'utilisateur, nous avons indiqué le mot-clé SSL dans les étapes précédentes.

Etant donné que la source de réplication peut être différente, nous autorisons également les filtres de canal qui varient selon les fournisseurs de cloud public. Pour plus d'informations, cliquez ici.

L'image ci-dessous présente différentes options présentes lorsque vous créez un canal de réplication sur OCI. Nous devons fournir le nom d'hôte source ou l'adresse IP publique, ainsi que le numéro de port. Nous allons nous authentifier à l'aide de l'utilisateur Repl que nous avons créé précédemment.

Image 20

Image 21

Nous spécifions également le système de base de données cible que nous avons créé pour notre réplication. Avec les filtres de réplication, nous proposons une option dans laquelle vous pouvez choisir vos filtres de réplication dans le menu déroulant, le cas échéant.

S'il n'y a plus de charge sur le système source après notre exportation, le canal de réplication doit être activé et terminé. Toutefois, il est probable que la charge soit incohérente en raison d'une non-concordance GTID et que les mesures nécessaires soient prises. Il existe différentes étapes du canal de réplication, leurs détails sont mentionnés ici.

Pour plus d'informations sur les messages d'erreur les plus courants que nous pouvons rencontrer lors de la configuration de la réplication entrante, reportez-vous au guide de dépannage.

Insérez des données fictives sur la source Google Cloud Platform comme indiqué dans l'image suivante.

Image 21

Interrogez la base de données échantillon sur MySQL Heatwave Database Service.

Image 22

Dans la console, nous voyons qu'il n'y a aucun décalage entre la source et la cible et que les transactions sont copiées et validées. Par conséquent, nous pouvons utiliser des canaux de réplication à des fins de récupération après sinistre et de migration. En fonction d'une planification et d'un temps d'inactivité corrects des applications, nous pouvons effectuer l'activité de basculement et utiliser le service de base de données Heatwave MySQL, solution unique pour les transactions OLTP et les charges de travail analytiques.

Etapes suivantes

Dans ce tutoriel, nous avons vu OCI MySQL Heatwave Database Service fournir un mécanisme assez facile d'utilisation de la réplication entrante. Il prend en charge plusieurs sources et fournit même des filtres de canal de réplication par rapport à ces sources. La réplication entrante peut être utilisée pour vous placer dans Oracle Cloud et utiliser son offre d'ondes de chaleur. Non seulement cela, MySQL Heatwave Lakehouse a été introduit et vous pouvez apporter d'énormes charges de données en téraoctets dans plusieurs formats. Vous trouverez plus d'informations sur MySQL Heatwave Database Service et sur la façon dont il optimise les performances des requêtes en fournissant In-Memory Query Accelerator.

Remerciements

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour consulter la documentation produit, consultez Oracle Help Center.