Connexion à MySQL HeatWave et gestion de celui-ci sur OCI

L'un des avantages de MySQL HeatWave est la possibilité d'exécuter des analyses directement sur vos données transactionnelles existantes. Il n'est donc pas nécessaire de réorganiser ces données vers un système distinct lorsque vous devez effectuer des analyses parallèles massives. C'est étonnamment facile.

MySQL HeatWave est un service entièrement géré et, comme toute base de données, il est préférable de le protéger du réseau Internet public. Nous devrons toujours nous connecter pour pouvoir utiliser nos données. Nous allons donc explorer l'utilisation d'OCI Cloud Shell (que nous avons brièvement abordé dans le guide de prise en main), d'un hôte Bastion conçu en interne et de la connexion à MySQL Workbench à l'aide du service OCI Bastion (en savoir plus sur Bastion) en tant que tunnel sécurisé.

Si vous n'avez pas encore de système MySQL HeatWave opérationnel, passez à Introduction à MySQL HeatWave sur OCI et lancez-en un. Lorsque vous êtes prêt, continuez à lire ici pour découvrir les différentes options de connexion, les techniques de chargement des données et les fonctionnalités de gestion de cluster.

Prérequis

  • Un compte OCI (Essai ou Payé)
  • Expérience du shell MySQL
  • Un système de base de données MySQL HeatWave
  • Un éditeur de texte

Une revue rapide de vos options

Pour ceux qui préfèrent une interface de ligne de commande, vous pouvez choisir de vous connecter via Cloud Shell ou via un bastion autogéré, où vous pouvez utiliser votre variante préférée de Linux. Pour ceux qui préfèrent l'interface graphique, vous pouvez vous diriger vers la section Tunnel sécurisé. Mais d'abord... quelques étapes préparatoires !

Avant d'aller plus loin, assurez-vous d'avoir collecté les détails d'adresse requis à partir du système de base de données. Vous aurez besoin de l'adresse IP privée et du port MySQL que vous pouvez obtenir en accédant à Bases de données -> Systèmes de base de données, où vous cliquerez sur le nom de la base de données MySQL que vous avez créée précédemment.

capture d'écran de cloud shell

Ensuite, vous aurez besoin d'une clé SSH pour une connectivité sécurisée aux différents systèmes intermédiaires (que vous choisissiez d'utiliser Bastion ou un tunnel sécurisé). Nous utiliserons Cloud Shell, disponible directement dans notre console OCI pour créer la clé SSH, très pratique. (Remarque : nous pouvons également nous connecter à la base de données à partir de Cloud Shell. Nous y arriverons bientôt.)

capture d'écran de l'icône cloud shell

Cloud Shell est comme une petite machine virtuelle exécutant un shell Bash, et il est livré avec des fonctionnalités chargées. En fait, MySQL et le shell MySQL sont déjà installés, ainsi que divers outils OCI. Le démarrage prendra donc une minute, mais lorsque ce sera le cas, nous pourrons faire beaucoup de choses dans la CLI directement dans votre navigateur.

Une fois le shell démarré, créez une clé SSH à l'aide des éléments suivants :

ssh-keygen -b 2048 -t rsa

Continuez simplement à appuyer sur Entrée (pour accepter le nom de fichier par défaut et continuer sans mot de passe), et bientôt les clés SSH publiques (~/.ssh/id_rsa.pub) et privées (~/.ssh/id_rsa) seront prêtes à être utilisées.

Alors cd ~/.ssh et ls -al pour voir ce qu'il y a à l'intérieur :

capture d'écran de la console cloud shell

S'il s'agit de la première fois que vous créez des clés SSH dans Cloud Shell, vous ne devriez voir que les deux fichiers. Gardez la clé privée en sécurité et ne la partagez pas. La clé publique sera nécessaire pour certaines activités et peut être téléchargée sur certains systèmes, ainsi que copiée et collée pour faciliter les communications sécurisées dans le cloud.

Avant de quitter Cloud Shell, nous voulons saisir la clé publique. Ouvrez un éditeur de texte comme le Bloc-notes. Si vous êtes toujours dans Cloud Shell, copiez le contenu id_rsa.pub dans le bloc-notes avec le chat ~/.ssh/id_rsa.pub, sélectionnez ce blob de texte (c'est votre clé) et collez-le dans l'éditeur de texte de votre choix. Il devrait commencer par ssh-rsa. Vous pouvez également cliquer sur le pignon dans l'angle supérieur droit de Cloud Shell et sélectionner Télécharger. Entrez le chemin d'accès à la clé publique :

capture d'écran du téléchargement de cloud shell

La clé publique sera placée dans le dossier désigné par votre système d'exploitation pour les fichiers téléchargés. Faites de même pour .ssh/id_rsa (la clé privée) et stockez-la dans un emplacement sûr. Sur Mac ou Linux, assurez-vous de chmod 400 le fichier de clé privée.

OCI Cloud Shell

Puisque vous êtes déjà dans Cloud Shell, commençons par une actualisation rapide. Etant donné que les outils sont déjà installés, vous pouvez vous connecter au client MySQL ou au shell. Dans notre exemple, nous allons utiliser le shell MySQL.

Tout d'abord, vous devez modifier le paramètre de réseau pour Cloud Shell en privé.

capture d'écran du paramètre de réseau cloud shell

Lorsque vous y êtes invité, sélectionnez le VCN et le sous-réseau dans lesquels vous avez déployé l'instance MySQL et [Connectez-vous à ce réseau].

REMARQUE : Cette fonction vit dans votre région d'origine. Si vous n'y avez pas déployé MySQL, vous pouvez suivre les instructions de l'invite pour établir un appairage VCN distant.

Temps de connexion à la base de données :

mysqlsh -uadmin -p -h 10.0.1.... --sql

Lorsque vous y êtes invité, entrez le mot de passe que vous avez indiqué lors de la création du système de base de données.

Si vous avez chargé les données échantillon lors de la création de la base de données, vous pouvez exécuter une requête rapide pour valider le contenu de la base de données :

SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';

Hôte bastion DIY

Calculer le temps Accédez à Compute > Instances. Restez dans le même compartiment qu'auparavant et cliquez sur Créer une instance. Donnez-lui un nom, conservez la forme et le domaine de disponibilité sélectionnés. Sélectionnez l'image de votre variante Linux préférée. Dans cet exemple, nous utilisons Oracle Linux 8.

La partie importante ici est d'utiliser le VCN que vous avez configuré précédemment. Sélectionnez le sous-réseau public créé et assurez-vous que l'option Affecter une adresse IP publique est définie sur Oui.

Dans la section Ajouter des clés SSH, collez la clé publique à partir du bloc-notes.

Cliquez ensuite sur Créer pour le démarrer. Cela prendra bien sûr quelques minutes.

Une fois qu'il devient vert et est en cours d'exécution, la page de l'instance nous affiche une adresse IP publique et une adresse IP privée sous Accès à l'instance.

Copiez et enregistrez l'adresse IP publique.

Nous allons maintenant nous connecter au système de base de données MySQL à partir de notre hôte Bastion.

Vous disposez donc désormais de l'adresse IP publique de votre instance Compute, de votre clé SSH privée et de l'adresse IP privée de votre système de base de données. Nous allons mettre les deux premiers ensemble pour se connecter via SSH. Pointez sur l'emplacement de la clé privée et le nom utilisateur sera opc.

Par exemple (Mac OS ou terminal Linux ; PowerShell sous Windows) :

ssh -i ~/.ssh/id_rsa opc@

Installez le shell MySQL en utilisant (et continuons à répondre y à toutes les invites) :

sudo yum install mysql-shell -y

Votre adresse correspondra à l'adresse IP privée que vous avez copiée précédemment dans votre bloc-notes. Vous aurez également besoin du mot de passe pour la base de données que vous avez créée plus tôt, bien sûr.

Exemple :

mysqlsh -uadmin -p -h 10.0.1.... --sql

Lorsque vous y êtes invité, entrez le mot de passe que vous avez indiqué lors de la création du système de base de données.

Si vous avez chargé les données échantillon lors de la création de la base de données, vous pouvez exécuter une requête rapide pour valider le contenu de la base de données :

SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';

Bastion géré OCI

Le service OCI Bastion facilite la création de connexions sécurisées et temporaires dans les ressources privées de votre réseau cloud virtuel. MySQL étant un système de base de données entièrement géré, nous ne pouvons pas nous connecter au système d'exploitation. Au lieu de cela, nous allons créer un tunnel sécurisé via le service Bastion et utiliser MySQL Workbench pour nous connecter.

Pour commencer, accédez à Sécurité -> Bastion dans la console OCI. Créer une instance Bastion : il s'agit essentiellement d'un conteneur pour des configurations de session spécifiques.

Ensuite, créez une session. Il s'agit d'une session de transfert de port SSH. Vous devez entrer l'adresse IP privée de l'instance MySQL, ainsi que le port de base de données (3306 par défaut). Pour cet exercice, vous pouvez utiliser la paire de clés SSH que vous avez générée précédemment. Dans le monde réel, vous devriez probablement générer différentes paires de clés.

Cliquez sur [Créer une session].

Une fois la session créée, vous pouvez cliquer sur le menu à 3 points à droite pour afficher les commandes SSH. Copiez la commande dans un éditeur de texte et remplacez par le chemin d'accès complet à la clé créée / téléchargée précédemment. Remplacez par le port local de la machine à partir de laquelle vous prévoyez de vous connecter. Vous pouvez utiliser n'importe quel port disponible.

Pour Mac ou Linux, vous pouvez ouvrir une fenêtre de terminal et exécuter la commande. Sous Windows, utilisez PowerShell. Si vous êtes invité à poursuivre la connexion, saisissez "yes" et appuyez sur Entrée.

Ensuite, ouvrez le client de base de données (c'est-à-dire MySQL Workbench) et configurez la connexion.

  • Nom d'hôte : 127.0.0.1
  • Port : 3306
  • Nom d'utilisateur : admin (dans mon cas)
  • Mot de passe : [Stocker dans le coffre ...]

Cliquez sur [Test Connection] - si tout va bien, vous devriez voir :

capture d'écran du workbench mysql - connexion réussie

Enregistrez vos paramètres et ouvrez la connexion. Vous pouvez maintenant vous déplacer sur les données existantes et/ou charger de nouvelles données.

Chargement des données dans le cluster HeatWave

A ce stade, nous sommes prêts à charger les données de InnoDB dans HeatWave afin de pouvoir vraiment accélérer les choses.

Revenons au shell MySQL pour lancer le chargement des données.

Sur la ligne de commande :

mysqlsh -uadmin -p -h 10.0.1... --sql

Entrez votre mot de passe de base de données.

Utilisez la commande Chargement parallèle automatique pour charger les tables airportdb dans HeatWave :

CALL sys.heatwave_load(JSON_ARRAY('airportdb'), NULL);

Pour nous assurer, nous allons vérifier que les tables sont chargées dans le cluster HeatWave. Le statut de chargement des tables chargées est AVAIL_RPDGSTABSTATE.

Là encore, dans le shell MySQL :

USE performance_schema;

Elle indique que le schéma par défaut a été défini sur performance_schema.

SELECT NAME, LOAD_STATUS FROM rpd_tables,rpd_table_id WHERE rpd_tables.ID = rpd_table_id.ID;

Bien sûr, à partir de là, vous pouvez exécuter des requêtes et faire toutes les fonctions de base de données dont vous avez besoin. Vous pouvez également activer et désactiver HeatWave pour comparer les temps de requête et voir à quel point ils s'exécutent plus rapidement avec HeatWave activé.

Pour voir si HeatWave est activé, utilisez la commande suivante :

SHOW VARIABLES LIKE 'use_secondary_engine%';

Pour l'éteindre, utilisez :

SET SESSION use_secondary_engine=OFF;

Et pour le remettre en marche, utilisez :

SET SESSION use_secondary_engine=ON;

Si vous avez besoin de décharger des tables du cluster HeatWave, modifiez simplement la table comme suit :

ALTER TABLE flightschedule SECONDARY_UNLOAD;

Gestion d'un cluster HeatWave

Après avoir créé un cluster HeatWave, vous pouvez toujours ajuster le nombre de noeuds. Pour ce faire, modifiez le cluster à l'aide de l'option de menu HeatWave dans les systèmes de base de données. Notez que le cluster est redimensionné en ligne, qu'il n'y a pas de temps d'arrêt pendant l'opération et que les données sont automatiquement rééquilibrées après le redimensionnement.

Il existe également une option pour estimer le nombre de nœuds qui peuvent être nécessaires pour la quantité de données que vous souhaitez analyser. La génération d'une estimation peut prendre plusieurs minutes, mais elle permet de réduire la taille de votre cluster. Si l'estimateur suggère une modification de votre configuration, vous pouvez l'appliquer directement.

A tout moment, vous pouvez choisir d'arrêter votre cluster HeatWave (car la facturation s'arrêtera également) ou de redémarrer pour rafraîchir le cluster. Lorsqu'un cluster HeatWave est arrêté via une action d'arrêt ou de redémarrage, les données chargées dans la mémoire de cluster HeatWave sont perdues. Lorsque vous démarrez ou redémarrez le cluster, toutes les données précédemment chargées sont automatiquement rechargées. Les modifications apportées aux données dans la base de données pendant l'arrêt de HeatWave sont incluses dans les données rechargées.

Suppression d'un cluster HeatWave

La suppression d'un cluster HeatWave enlève définitivement les noeuds de cluster HeatWave. Le système de base de données auquel le cluster HeatWave est attaché n'est pas affecté. Gardez à l'esprit que le cluster devra être à nouveau configuré à partir de zéro après la suppression, ce qui signifie le rechargement des données dans HeatWave.

Synthèse

Cela conclut notre examen rapide des stratégies de connectivité et des fonctionnalités de gestion pour MySQL HeatWave sur OCI. Nous avons appris à connecter un système de base de données via différents canaux, à charger/décharger des données dans HeatWave et à activer/désactiver le moteur secondaire. A partir de là, vous pouvez essayer d'exécuter des requêtes ou même de charger vos propres données et voir à quelle vitesse HeatWave peut aller !

Pour en savoir plus sur MySQL HeatWave, lisez les docs ici.

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