Introduction à MySQL HeatWave sur OCI

MySQL HeatWave est parfaitement logique si vous exécutez des charges de travail transactionnelles et analytiques mixtes dans MySQL ou si vous déplacez des données vers une base de données distincte pour les analyses. Au lieu d'élaborer des pipelines ETL complexes pour déplacer des données, HeatWave, un accélérateur de requêtes en mémoire intégré et à hautes performances, accélère les performances de MySQL par ordre de grandeur pour les analyses et les workloads mixtes, sans aucune modification des applications actuelles. Le service est basé sur MySQL Enterprise Edition, qui permet aux développeurs de créer et de déployer rapidement des applications natives du cloud sécurisées à l'aide de la base de données open source la plus populaire au monde.

Oracle a conçu MySQL HeatWave pour que les développeurs puissent se concentrer sur leurs applications. Vous n'avez pas besoin de gérer deux bases de données pour OLTP et OLAP, et vous pouvez obtenir des analyses sécurisées en temps réel sans la complexité, la latence et le coût de la duplication ETL. MySQL HeatWave est un service entièrement géré qui automatise des tâches telles que la sauvegarde, la récupération et l'application de patches aux bases de données et aux systèmes d'exploitation. "Inquiétez-vous moins, croquez plus", comme on dit ! MySQL HeatWave est développé et pris en charge par l'équipe de développement MySQL d'Oracle.

Pour commencer à utiliser OCI, nous allons créer un VCN, déployer un système de base de données MySQL et créer un cluster HeatWave, extraire certaines données et les analyser. Vous recherchez démarrer avec MySQL HeatWave sur AWS. Cela vous montrera comment tirer parti de MySQL HeatWave dans un scénario multicloud. Quel temps pour être vivant !

Puisque nous commençons tout juste, commençons vraiment au début et créons un VCN avec l'accès approprié, puis voyons comment créer un cluster HeatWave dans OCI.

Prérequis

  • Un compte OCI et le nom du compte Oracle Cloud
  • Accès administrateur
  • Un navigateur compatible (Chrome 69+, Safari 12.1+, Firefox 62+ ou tout navigateur approuvé par Oracle Jet)

Présentation

  1. Créer un VCN et le configurer pour l'accès à la base de données
  2. Créer des utilisateurs et des groupes (si vous ne l'avez pas déjà fait)
  3. Création d'un système de base de données avec une forme compatible avec HeatWave
  4. Connexion à Cloud Shell et utilisation de MySQL Shell
  5. Importer des exemples de données
  6. Ajouter un cluster HeatWave
  7. Exécutez des requêtes.

Dans notre exemple, nous utilisons une approche rationalisée pour configurer l'utilisation de HeatWave.

Maintenant, commençons par les bases !

Créer un VCN et le configurer pour l'accès à la base de données

Menu : Accueil > Mise en réseau > Réseaux cloud virtuels

Créez un VCN et des sous-réseaux à l'aide des réseaux cloud virtuels > Démarrer l'assistant VCN > Créer un VCN avec la connectivité Internet. Bien sûr, vous aurez également un sous-réseau privé.

capture d'écran de l'assistant VCN

L'assistant pratique vous guidera tout au long de la création d'un environnement réseau pour votre système, bien qu'il existe de nombreuses façons de le configurer, ne nous laissez pas distraire. J'ai choisi le compartiment que j'ai configuré précédemment, my_heatwave_testing, car c'est important.

capture d'écran de la configuration VCN

Maintenant, configurons la liste de sécurité du VCN pour autoriser le trafic via les ports MySQL Database Service. Cliquez sur le sous-réseau privé du VCN que vous avez créé et cliquez sur la liste de sécurité correspondante.

capture d'écran de la liste de sécurité

Cliquez maintenant sur Ajouter une liste de sécurité.

Nous ajouterons les règles entrantes nécessaires pour activer les ports appropriés, 3306 et 33060. Voici les détails :



Source CIDR: 0.0.0.0/0
Destination Port Range: 3306,33060
Description: MySQL Port

Cliquez sur Add Ingress Rules.

capture d'écran des règles entrantes

J'ai l'air bien jusqu'à maintenant !

Créer des utilisateurs et des groupes (si vous ne l'avez pas déjà fait)

Si vous êtes déjà administrateur, vous pouvez passer à l'étape suivante, mais c'est ici que vous ajoutez des utilisateurs à la location OCI qui peuvent également avoir besoin d'accéder à la gestion du système de base de données. Nous devrons définir des autorisations et limiter quelque peu l'accès, même dans notre exemple "simplifié", mais vous pouvez tout lire sur la gestion des groupes ici. En général, nous allons créer un groupe, créer des stratégies, puis ajouter des utilisateurs au groupe.

Faisons-nous des amis avec les options d'identité et de sécurité.

Créez un groupe pour vos utilisateurs. Dans mon exemple, j'ai créé un groupe nommé Administrateurs MySQL.

Ajoutez des utilisateurs au groupe. Dans notre exemple, nous allons nous ajouter à ce groupe.

Bien sûr, pour un groupe, vous allez d'abord créer tous les utilisateurs dont vous avez besoin, ajouter ceux dans le groupe nécessitant un accès aux niveaux que vous déterminez, et soyez assuré que vous pouvez les définir en vrac avec les contrôles d'accès appropriés.

Nous autorisons l'accès en définissant des stratégies, en permettant à un groupe d'avoir un accès complet (admins) et à un groupe avec un accès limité (utilisateurs de base de données, par exemple).

Exemples de stratégie :



Allow group MySQLAdmins to {SUBNET_READ, SUBNET_ATTACH, SUBNET_DETACH, VCN_READ, COMPARTMENT_INSPECT} in tenancy
Allow group MySQLAdmins to manage mysql-family in tenancy
Allow group MySQLAdmins to use tag-namespaces in tenancy

Cela permet simplement de configurer et d'administrer notre compartiment, et définit la portée de l'accès appliqué à l'instance de base de données.

Pour plus d'informations sur l'ajout d'utilisateurs et la définition de stratégies dans OCI, reportez-vous à cette documentation.

Création d'un système de base de données avec une forme compatible HeatWave

Menu > Bases de données > Systèmes de base de données

Créer un système de base de données

Notez que le système vous avertit si vous n'avez pas encore configuré d'utilisateurs, un VCN, etc. C'est bien. N'oubliez pas de vérifier dans quel compartiment vous allez le créer, à nouveau sous Portée de la liste à gauche. Cliquez sur Create DB System.

capture d'écran des informations sur le système de base de données

Vérifiez à nouveau le compartiment, donnez-lui un nom et sélectionnez HeatWave (bien sûr).

capture d'écran de création d'informations d'identification d'administrateur

Vous allez créer des informations d'identification d'administrateur, assurez-vous de les enregistrer dans un endroit pratique mais sûr.

Dans Configure Networking, vous allez utiliser le réseau cloud virtuel créé précédemment, mais nous allons utiliser le sous-réseau privé. Conservez le domaine de disponibilité par défaut et accédez à Configure Hardware.

capture d'écran de configuration du placement

Vérifiez que dans la section Configure Hardware, la forme sélectionnée est MySQL. HeatWave.VM.Standard.

Aussi :

  • Nombre de coeurs de processeur : 16
  • Taille de la mémoire : 512 Go
  • Taille de stockage des données : 1024
capture d'écran de configuration du matériel

Dans la section Configure Backup, vous pouvez laisser la fenêtre de sauvegarde par défaut de sept jours.

capture d'écran de configuration du plan de sauvegarde

Continuez à faire défiler et cliquez sur Afficher les options avancées.

Accédez à l'onglet Mise en réseau. Dans le champ Nom d'hôte, entrez le nom exact du système de base de données. Cela permet à votre cluster de s'inscrire auprès du DNS et d'accéder à l'hôte via un nom de domaine qualifié complet.

capture d'écran de configuration réseau

Assurez-vous que la configuration du port correspond à ce qui suit :

  • Port MySQL : 3306
  • Port de protocole X MySQL : 33060

Pour cet exemple, nous allons importer automatiquement des données lors de la création de ressources à l'aide des données stockées dans un bucket Object Storage, rendues disponibles via une demande pré-authentifiée.

capture d'écran de l'importation de données

Si vous préférez charger les données à l'aide du shell MySQL, vous pouvez ignorer cette étape.

Cliquez sur l'onglet Import de données. Ici, vous serez invité à coller l'URL de votre demande pré-authentifiée. L'URL de demande pré-authentifiée d'objet doit être un fichier manifeste qui peut être créé avec l'option ociParaMifest du vidage de shell MySQL utilityHere. Vous pouvez également utiliser une demande pré-authentifiée de bucket Object Storage ou des objets avec une demande pré-authentifiée de préfixe.

Voici un exemple de lien que vous pouvez utiliser pour importer Airport-DB à des fins d'essai.



https://objectstorage.us-ashburn-1.oraclecloud.com/p/zRBSs7nKURyZRcIoV4QlYhascC5gkZcJeQoBS8c2ssyEPID3PSDAnh73OMClQQH4/n/idazzjlcjqzj/b/airportdb-bucket-10282022/o/airportdb/@.manifest.json

Tout définir... cliquez sur Créer !

Cette fois, un hexagone jaune apparaît. Il devient alors vert et le système de base de données fonctionne. Faites du thé ou prenez un verre d'eau, vous avez fait beaucoup.

Connexion et utilisation du shell MySQL

Utilisons Cloud Shell pour nous connecter à MySQL et à MySQL Shell. C'est un petit terminal Linux intégré au tableau de bord OCI (et c'est adorable). Dans l'angle supérieur droit, cliquez sur l'icône d'invite Cloud Shell et une ligne de commande s'ouvre en bas du navigateur. Make sure to configure Private Network Setup for your cloud shell, selecting the VCN that was created previously.

capture d'écran du shell mysql
capture d'écran de la configuration du réseau privé du shell mysql

Ce qui est cool, c'est que MySQL Shell est déjà installé !

Une fois le système de base de données compatible avec HeatWave créé, nous allons nous y connecter à l'aide du shell MySQL.

mysqlsh --host  -u  -p

Vous pouvez en savoir plus sur le shell MySQL.

En savoir plus sur la connexion des systèmes de base de données.

Importer des données

Si vous avez choisi d'importer des données lors de la création de la ressource à l'aide de l'option PAR, vous pouvez ignorer cette étape. Sinon, vous pouvez continuer ici pour importer AirportDB (PDF).

Dans Cloud Shell :



wget https://downloads.mysql.com/docs/airport-db.tar.gz
tar xvzf airport-db.tar.gz

Cela crée un répertoire unique nommé airport-db, qui contient les fichiers de données.

Démarrez le shell MySQL et connectez-vous à l'adresse de système de base de données MySQL :

mysqlsh _Username@DBSystem_IP_Address_or_host_Name

Lorsque vous y êtes invité, entrez le mot de passe administrateur que vous avez indiqué précédemment. Une fois connecté, vous utiliserez l'utilitaire de chargement de vidage pour importer des données.

MySQL>JS> util.loadDump("airport-db", {threads: 16, deferTableIndexes: "all", ignoreVersion: true})

L'importation devrait prendre quelques minutes, alors vous êtes prêt à passer à autre chose !

Ajouter un cluster HeatWave

HeatWave est vraiment conçu pour les ensembles de Big Data, nécessitant une analyse rapide. Par conséquent, même si j'importe une simple base de données échantillon, vous pouvez charger autant que vous le souhaitez (à condition d'avoir alloué le stockage pour cela). De plus, les requêtes peuvent être exécutées dans le cluster sans être déchargées vers une base de données distincte. La création du cluster peut prendre quelques minutes.

Pour commencer, accédez au système de base de données dans la console OCI : Bases de données > Systèmes de base de données, puis cliquez sur le système de base de données créé récemment.

Sous Ressources, vous verrez HeatWave (entre autres éléments utiles), cliquez dessus.

capture d'écran de l'onglet Ressources

Bien sûr, vous voulez ajouter un cluster HeatWave (à l'aide du bouton situé à droite, au milieu de la page), ou cliquer sur le menu d'actions Plus en haut et sélectionner Ajouter un cluster Heatwave. Acceptez les valeurs par défaut (16 coeurs de processeur avec 512 Go de RAM et 1 noeud), puis cliquez sur le bouton Ajouter un cluster HeatWave.

capture d'écran d'ajout de cluster
capture d'écran de la configuration du cluster Heatwave

Cela prend quelques minutes pour que vous puissiez réchauffer cette boisson pendant que le cluster tourne.

Chargez des données dans HeatWave et exécutez des requêtes

Enfin, la partie amusante ! Une fois que le cluster HeatWave est en cours d'exécution :

  1. Démarrez le shell MySQL et connectez-vous à l'adresse du système de base de données MySQL :
    $> mysqlsh Username@DBSystem_IP_Address_or_Host_Name
  2. Définissez le mode d'exécution du shell MySQL sur SQL :
    MySQL>JS> \sql
  3. Accédez à la base de données airportdb :
    
    
    MySQL>SQL> USE airportdb;  
    Default schema set to `airportdb`.Fetching table and column names from `airportdb` for auto-completion... Press ^C to stop.`
  4. Chargez les données de MySQL InnoDB vers HeatWave
    MySQL>SQL> call sys.heatwave_load(JSON_ARRAY(“airportdb”), NULL);
  5. Utilisez EXPLAIN pour vérifier que la requête peut être déchargée vers le cluster HeatWave :
    capture d'écran de la requête mysql 1
    Remarque : Si la requête peut être déchargée, la colonne Extra de la sortie EXPLAIN indique "Utilisation du moteur secondaire RAPID".
  6. Après avoir vérifié que la requête peut être déchargée, exécutez-la et notez le temps d'exécution.
    capture d'écran de la requête mysql 2

Voyons maintenant combien de temps cela prendrait avec le système de base de données MySQL "vanille simple". Pour ce faire, nous désactivons la variable use_secondary_engine.

capture d'écran de la requête mysql 3

Synthèse

Jusqu'à présent, tous sur OCI, nous avons configuré un réseau cloud virtuel avec des ports pour l'utilisation de MySQL, configuré une base de données MySQL et ajouté un cluster HeatWave. Nous avons ensuite importé des données de test et exécuté quelques requêtes pour voir la vitesse de HeatWave par rapport au système de base de données seul.

Vous aimeriez en savoir plus ? Rejoignez la discussion sur notre canal Slack public !